From 4c06410d18cea85c4c26e5ccb27b75c33aa68340 Mon Sep 17 00:00:00 2001 From: Dries Buytaert <dries@buytaert.net> Date: Wed, 24 Dec 2003 13:13:07 +0000 Subject: [PATCH] - Fixed bug 4710: comment module should use drupal_set_message() correctly. - Fixed the title and breadcrumb trail of the comment delete page, added missing cache flush, improved usability and made it so that when you delete a comment replies are deleted as well. - Added 'delete comment' links to the comments on node pages. Hopefully this will make it easier to maintain old threads such as those attached to the book pages on drupal.org. - Comment module maintenance: added missing t() functions and improved consistency of the calls to drupal_set_message(), used radio buttons instead of a selection box. --- modules/comment.module | 113 +++++++++++++++++++-------------- modules/comment/comment.module | 113 +++++++++++++++++++-------------- 2 files changed, 134 insertions(+), 92 deletions(-) diff --git a/modules/comment.module b/modules/comment.module index 4a5192365a6e..7a24114f4ee3 100644 --- a/modules/comment.module +++ b/modules/comment.module @@ -514,22 +514,15 @@ function comment_links($comment, $return = 1) { $links[] = l(t("parent"), comment_referer_load() ."#$comment->cid"); } - /* - ** Admin link - */ - - if (user_access("administer comments") && user_access("access administration pages")) { - $links[] = l(t("administer"), "admin/comment/edit/$comment->cid"); - } - - /* - ** Possibly show edit and reply links - */ - if (node_comment_mode($comment->nid) == 2) { - if (user_access("post comments")) { + if (user_access("administer comments") && user_access("access administration pages")) { + $links[] = l(t("delete comment"), "admin/comment/delete/$comment->cid"); + $links[] = l(t("edit comment"), "admin/comment/edit/$comment->cid"); + $links[] = l(t("reply to this comment"), "comment/reply/$comment->nid/$comment->cid"); + } + else if (user_access("post comments")) { if (comment_access("edit", $comment)) { - $links[] = l(t("edit your comment"), "comment/edit/$comment->cid", array("title" => t("Make changes to your comment."))); + $links[] = l(t("edit your comment"), "comment/edit/$comment->cid"); } $links[] = l(t("reply to this comment"), "comment/reply/$comment->nid/$comment->cid"); } @@ -545,8 +538,6 @@ function comment_links($comment, $return = 1) { return theme("links", $links); } - - function comment_render($node, $cid = 0) { global $user; @@ -843,6 +834,7 @@ function comment_link($type, $node = 0, $main = 0) { menu("admin/comment/search", t("search"), "comment_admin", 8); menu("admin/comment/help", t("help"), "comment_help_page", 9); menu("admin/comment/edit", t("edit comment"), "comment_admin", 0, MENU_HIDE); + menu("admin/comment/delete", t("delete comment"), "comment_admin", 0, MENU_HIDE); // comment settings: if (user_access("administer moderation")) { @@ -938,42 +930,72 @@ function comment_admin_edit($id) { $result = db_query("SELECT c.*, u.name, u.uid FROM {comments} c INNER JOIN {users} u ON c.uid = u.uid WHERE c.cid = %d AND c.status != 2", $id); $comment = db_fetch_object($result); - // if a comment is "deleted", it's deleted if ($comment) { $form .= form_item(t("Author"), format_name($comment)); $form .= form_textfield(t("Subject"), "subject", $comment->subject, 70, 128); $form .= form_textarea(t("Comment"), "comment", $comment->comment, 70, 15); - $form .= form_select(t("Status"), "status", $comment->status, array("published", "not published")); + $form .= form_radios(t("Status"), "status", $comment->status, array("published", "not published")); $form .= form_hidden("cid", $id); $form .= form_submit(t("Submit")); - $form .= form_submit(t("Delete")); return form($form); } } -function comment_delete($edit) { +function _comment_delete_thread($comment) { + // Delete the comment: + db_query("DELETE FROM {comments} WHERE cid = %d", $comment->cid); + watchdog("special", "comment: deleted '$comment->subject'"); + + // Delete the comment's replies: + $result = db_query("SELECT cid, subject FROM {comments} WHERE pid = %d", $comment->cid); + while ($comment = db_fetch_object($result)) { + comment_delete_thread($comment); + } +} + +function comment_delete($cid, $confirmed = 0) { + $comment = db_fetch_object(db_query("SELECT c.*, u.name, u.uid FROM {comments} c INNER JOIN {users} u ON u.uid = c.uid WHERE c.cid = %d", $cid)); + + if ($comment->cid) { + if ($confirmed) { + drupal_set_message(t("the comment and all its replies have been deleted.")); + + /* + ** Delete the comment and all of its replies: + */ + + _comment_delete_thread($comment); + + /* + ** Clear the cache so an anonymous user can see his comment being + ** added. + */ + + cache_clear_all(); + } + else { + drupal_set_message(t("do you want to delete this comment and all its replies?")); + + /* + ** Print a confirmation screen: + */ - if ($edit["confirm"]) { - db_query("UPDATE {comments} SET status = 2 WHERE cid = %d", $edit["cid"]); - watchdog("special", "comment: deleted comment #". $edit["cid"]); - $output = "deleted comment."; + $output = theme("comment", $comment); + $output .= form_submit(t("Delete comment")); + + return form($output); + } } else { - $output .= form_item(t("Confirm deletion"), ""); - $output .= form_hidden("cid", $edit["cid"]); - $output .= form_hidden("confirm", 1); - $output .= form_submit(t("Delete")); - $output = form($output); + drupal_set_message(t("the comment no longer exists.")); } - - return $output; } function comment_save($id, $edit) { db_query("UPDATE {comments} SET subject = '%s', comment = '%s', status = %d WHERE cid = %d", $edit["subject"], $edit["comment"], $edit["status"], $id); watchdog("special", "comment: modified '". $edit["subject"] ."'"); - return "updated comment."; + drupal_set_message(t("the comment has been saved.")); } function comment_admin_overview($status = 0) { @@ -1013,7 +1035,7 @@ function comment_mod_matrix($edit) { } } db_query("INSERT INTO {moderation_roles} (mid, rid, value) VALUES ". implode(", ", $sql)); - drupal_set_message("Vote values saved"); + drupal_set_message(t("the vote values have been saved.")); } $result = db_query("SELECT r.rid, r.name FROM {role} r, {permission} p WHERE r.rid = p.rid AND p.perm LIKE '%moderate comments%'"); @@ -1049,7 +1071,7 @@ function comment_mod_roles($edit) { if ($edit) { variable_set("comment_roles", $edit); - drupal_set_message("Comment scores saved"); + drupal_set_message(t("the comment scores have been saved.")); } $start_values = variable_get("comment_roles", array()); @@ -1076,18 +1098,18 @@ function comment_mod_votes($edit) { if ($op == t("Save vote")) { db_query("UPDATE {moderation_votes} SET vote = '%s', weight = %d WHERE mid = %d", $edit["vote"], $edit["weight"], $mid); $mid = 0; - drupal_set_message("Vote saved"); + drupal_set_message(t("the vote has been saved.")); } else if ($op == t("Delete vote")) { db_query("DELETE FROM {moderation_votes} WHERE mid = %d", $mid); db_query("DELETE FROM {moderation_roles} WHERE mid = %d", $mid); $mid = 0; - drupal_set_message("Vote deleted"); + drupal_set_message(t("the vote has been deleted.")); } else if ($op == t("Add new vote")) { db_query("INSERT INTO {moderation_votes} (vote, weight) VALUES ('%s', %d)", $edit["vote"], $edit["weight"]); $mid = 0; - drupal_set_message("Vote added"); + drupal_set_message(t("the vote has been added.")); } $output .= "<h3>". t("Moderation votes overview") ."</h3>"; @@ -1127,17 +1149,17 @@ function comment_mod_filters($edit) { if ($op == t("Save threshold")) { db_query("UPDATE {moderation_filters} SET filter = '%s', minimum = %d WHERE fid = %d", $edit["filter"], $edit["minimum"], $fid); $fid = 0; - drupal_set_message("Saved threshold"); + drupal_set_message(t("the threshold has been saved.")); } else if ($op == t("Delete threshold")) { db_query("DELETE FROM {moderation_filters} WHERE fid = %d", $fid); $fid = 0; - drupal_set_message("Deleted threshold"); + drupal_set_message(t("the threshold has been deleted.")); } else if ($op == t("Add new threshold")) { db_query("INSERT INTO {moderation_filters} (filter, minimum) VALUES ('%s', %d)", $edit["filter"], $edit["minimum"]); $fid = 0; - drupal_set_message("Added threshold"); + drupal_set_message(t("the threshold has been added.")); } $output .= "<h3>Comment threshold overview</h3>"; @@ -1220,14 +1242,13 @@ function comment_admin() { } break; case "delete": - $output = comment_delete(array("cid" => arg(3))); + $output = comment_delete(arg(3), 0); break; - case t("Delete"): - drupal_set_message(comment_delete($edit)); - $output .= comment_admin_overview(0); + case t("Delete comment"): + $output = comment_delete(arg(3), 1); break; case t("Submit"): - drupal_set_message(comment_save(check_query(arg(3)), $edit)); + $output = comment_save(check_query(arg(3)), $edit); $output .= comment_admin_overview(0); break; default: @@ -1421,7 +1442,7 @@ function theme_comment_thread_max($comment, $threshold, $level = 0) { function theme_comment_post_forbidden() { global $user; if ($user->uid) { - return t("You can't post comments."); + return t("you can't post comments"); } else { return t("%login or %register to post comments", array("%login" => l(t("login"), "user/login"), "%register" => l(t("register"), "user/register"))); diff --git a/modules/comment/comment.module b/modules/comment/comment.module index 4a5192365a6e..7a24114f4ee3 100644 --- a/modules/comment/comment.module +++ b/modules/comment/comment.module @@ -514,22 +514,15 @@ function comment_links($comment, $return = 1) { $links[] = l(t("parent"), comment_referer_load() ."#$comment->cid"); } - /* - ** Admin link - */ - - if (user_access("administer comments") && user_access("access administration pages")) { - $links[] = l(t("administer"), "admin/comment/edit/$comment->cid"); - } - - /* - ** Possibly show edit and reply links - */ - if (node_comment_mode($comment->nid) == 2) { - if (user_access("post comments")) { + if (user_access("administer comments") && user_access("access administration pages")) { + $links[] = l(t("delete comment"), "admin/comment/delete/$comment->cid"); + $links[] = l(t("edit comment"), "admin/comment/edit/$comment->cid"); + $links[] = l(t("reply to this comment"), "comment/reply/$comment->nid/$comment->cid"); + } + else if (user_access("post comments")) { if (comment_access("edit", $comment)) { - $links[] = l(t("edit your comment"), "comment/edit/$comment->cid", array("title" => t("Make changes to your comment."))); + $links[] = l(t("edit your comment"), "comment/edit/$comment->cid"); } $links[] = l(t("reply to this comment"), "comment/reply/$comment->nid/$comment->cid"); } @@ -545,8 +538,6 @@ function comment_links($comment, $return = 1) { return theme("links", $links); } - - function comment_render($node, $cid = 0) { global $user; @@ -843,6 +834,7 @@ function comment_link($type, $node = 0, $main = 0) { menu("admin/comment/search", t("search"), "comment_admin", 8); menu("admin/comment/help", t("help"), "comment_help_page", 9); menu("admin/comment/edit", t("edit comment"), "comment_admin", 0, MENU_HIDE); + menu("admin/comment/delete", t("delete comment"), "comment_admin", 0, MENU_HIDE); // comment settings: if (user_access("administer moderation")) { @@ -938,42 +930,72 @@ function comment_admin_edit($id) { $result = db_query("SELECT c.*, u.name, u.uid FROM {comments} c INNER JOIN {users} u ON c.uid = u.uid WHERE c.cid = %d AND c.status != 2", $id); $comment = db_fetch_object($result); - // if a comment is "deleted", it's deleted if ($comment) { $form .= form_item(t("Author"), format_name($comment)); $form .= form_textfield(t("Subject"), "subject", $comment->subject, 70, 128); $form .= form_textarea(t("Comment"), "comment", $comment->comment, 70, 15); - $form .= form_select(t("Status"), "status", $comment->status, array("published", "not published")); + $form .= form_radios(t("Status"), "status", $comment->status, array("published", "not published")); $form .= form_hidden("cid", $id); $form .= form_submit(t("Submit")); - $form .= form_submit(t("Delete")); return form($form); } } -function comment_delete($edit) { +function _comment_delete_thread($comment) { + // Delete the comment: + db_query("DELETE FROM {comments} WHERE cid = %d", $comment->cid); + watchdog("special", "comment: deleted '$comment->subject'"); + + // Delete the comment's replies: + $result = db_query("SELECT cid, subject FROM {comments} WHERE pid = %d", $comment->cid); + while ($comment = db_fetch_object($result)) { + comment_delete_thread($comment); + } +} + +function comment_delete($cid, $confirmed = 0) { + $comment = db_fetch_object(db_query("SELECT c.*, u.name, u.uid FROM {comments} c INNER JOIN {users} u ON u.uid = c.uid WHERE c.cid = %d", $cid)); + + if ($comment->cid) { + if ($confirmed) { + drupal_set_message(t("the comment and all its replies have been deleted.")); + + /* + ** Delete the comment and all of its replies: + */ + + _comment_delete_thread($comment); + + /* + ** Clear the cache so an anonymous user can see his comment being + ** added. + */ + + cache_clear_all(); + } + else { + drupal_set_message(t("do you want to delete this comment and all its replies?")); + + /* + ** Print a confirmation screen: + */ - if ($edit["confirm"]) { - db_query("UPDATE {comments} SET status = 2 WHERE cid = %d", $edit["cid"]); - watchdog("special", "comment: deleted comment #". $edit["cid"]); - $output = "deleted comment."; + $output = theme("comment", $comment); + $output .= form_submit(t("Delete comment")); + + return form($output); + } } else { - $output .= form_item(t("Confirm deletion"), ""); - $output .= form_hidden("cid", $edit["cid"]); - $output .= form_hidden("confirm", 1); - $output .= form_submit(t("Delete")); - $output = form($output); + drupal_set_message(t("the comment no longer exists.")); } - - return $output; } function comment_save($id, $edit) { db_query("UPDATE {comments} SET subject = '%s', comment = '%s', status = %d WHERE cid = %d", $edit["subject"], $edit["comment"], $edit["status"], $id); watchdog("special", "comment: modified '". $edit["subject"] ."'"); - return "updated comment."; + drupal_set_message(t("the comment has been saved.")); } function comment_admin_overview($status = 0) { @@ -1013,7 +1035,7 @@ function comment_mod_matrix($edit) { } } db_query("INSERT INTO {moderation_roles} (mid, rid, value) VALUES ". implode(", ", $sql)); - drupal_set_message("Vote values saved"); + drupal_set_message(t("the vote values have been saved.")); } $result = db_query("SELECT r.rid, r.name FROM {role} r, {permission} p WHERE r.rid = p.rid AND p.perm LIKE '%moderate comments%'"); @@ -1049,7 +1071,7 @@ function comment_mod_roles($edit) { if ($edit) { variable_set("comment_roles", $edit); - drupal_set_message("Comment scores saved"); + drupal_set_message(t("the comment scores have been saved.")); } $start_values = variable_get("comment_roles", array()); @@ -1076,18 +1098,18 @@ function comment_mod_votes($edit) { if ($op == t("Save vote")) { db_query("UPDATE {moderation_votes} SET vote = '%s', weight = %d WHERE mid = %d", $edit["vote"], $edit["weight"], $mid); $mid = 0; - drupal_set_message("Vote saved"); + drupal_set_message(t("the vote has been saved.")); } else if ($op == t("Delete vote")) { db_query("DELETE FROM {moderation_votes} WHERE mid = %d", $mid); db_query("DELETE FROM {moderation_roles} WHERE mid = %d", $mid); $mid = 0; - drupal_set_message("Vote deleted"); + drupal_set_message(t("the vote has been deleted.")); } else if ($op == t("Add new vote")) { db_query("INSERT INTO {moderation_votes} (vote, weight) VALUES ('%s', %d)", $edit["vote"], $edit["weight"]); $mid = 0; - drupal_set_message("Vote added"); + drupal_set_message(t("the vote has been added.")); } $output .= "<h3>". t("Moderation votes overview") ."</h3>"; @@ -1127,17 +1149,17 @@ function comment_mod_filters($edit) { if ($op == t("Save threshold")) { db_query("UPDATE {moderation_filters} SET filter = '%s', minimum = %d WHERE fid = %d", $edit["filter"], $edit["minimum"], $fid); $fid = 0; - drupal_set_message("Saved threshold"); + drupal_set_message(t("the threshold has been saved.")); } else if ($op == t("Delete threshold")) { db_query("DELETE FROM {moderation_filters} WHERE fid = %d", $fid); $fid = 0; - drupal_set_message("Deleted threshold"); + drupal_set_message(t("the threshold has been deleted.")); } else if ($op == t("Add new threshold")) { db_query("INSERT INTO {moderation_filters} (filter, minimum) VALUES ('%s', %d)", $edit["filter"], $edit["minimum"]); $fid = 0; - drupal_set_message("Added threshold"); + drupal_set_message(t("the threshold has been added.")); } $output .= "<h3>Comment threshold overview</h3>"; @@ -1220,14 +1242,13 @@ function comment_admin() { } break; case "delete": - $output = comment_delete(array("cid" => arg(3))); + $output = comment_delete(arg(3), 0); break; - case t("Delete"): - drupal_set_message(comment_delete($edit)); - $output .= comment_admin_overview(0); + case t("Delete comment"): + $output = comment_delete(arg(3), 1); break; case t("Submit"): - drupal_set_message(comment_save(check_query(arg(3)), $edit)); + $output = comment_save(check_query(arg(3)), $edit); $output .= comment_admin_overview(0); break; default: @@ -1421,7 +1442,7 @@ function theme_comment_thread_max($comment, $threshold, $level = 0) { function theme_comment_post_forbidden() { global $user; if ($user->uid) { - return t("You can't post comments."); + return t("you can't post comments"); } else { return t("%login or %register to post comments", array("%login" => l(t("login"), "user/login"), "%register" => l(t("register"), "user/register"))); -- GitLab