diff options
Diffstat (limited to 'modules/comment')
-rw-r--r-- | modules/comment/comment.module | 65 |
1 files changed, 42 insertions, 23 deletions
diff --git a/modules/comment/comment.module b/modules/comment/comment.module index ff56abfb8..9beabb930 100644 --- a/modules/comment/comment.module +++ b/modules/comment/comment.module @@ -145,22 +145,30 @@ function comment_edit($cid) { } function comment_reply($pid, $nid) { - global $theme; - - if ($pid) { - $comment = db_fetch_object(db_query("SELECT c.*, u.uid, u.name FROM comments c LEFT JOIN users u ON c.uid = u.uid WHERE c.cid = '$pid'")); - comment_view($comment, t("reply to this comment")); - } - else { - node_view(node_load(array("nid" => $nid))); - $pid = 0; - } + global $theme, $node; + + // we must provide a taxonomy context for user_access() + $context->nid = $nid; + if (user_access("access comments", $context)) { + if ($pid) { + $comment = db_fetch_object(db_query("SELECT c.*, u.uid, u.name FROM comments c LEFT JOIN users u ON c.uid = u.uid WHERE c.cid = '$pid'")); + comment_view($comment, t("reply to this comment")); + } + else { + node_view(node_load(array("nid" => $nid))); + $pid = 0; + } - if (user_access("post comments")) { - $theme->box(t("Reply"), comment_form(array("pid" => $pid, "nid" => $nid))); - } - else { - $theme->box(t("Reply"), t("You are not authorized to post comments.")); + if (node_comment_mode($nid) == 1) { + $theme->box(t("Reply"), t("This discussion is closed: you can't post new comments.")); + } else if (user_access("post comments", $context)) { + $theme->box(t("Reply"), comment_form(array("pid" => $pid, "nid" => $nid))); + } + else { + $theme->box(t("Reply"), t("You are not authorized to post comments.")); + } + } else { + $theme->box(t("Reply"), t("You are not authorized to view comments.")); } } @@ -205,7 +213,8 @@ function comment_preview($edit) { function comment_post($edit) { global $theme, $user; - if (user_access("post comments")) { + $context->nid = $edit["nid"]; + if (user_access("post comments", $context) && node_comment_mode($edit["nid"]) == 2) { /* ** Validate the comment's subject. If not specified, extract @@ -378,6 +387,11 @@ function comment_links($comment, $return = 1) { $links[] = "<a href=\"admin.php?mod=comment&op=edit&id=$comment->cid\" title=\"". t("Administer this comment.") ."\"><span style=\"color: $theme->type;\">". t("administer") ."</span></a>"; } + // here we should check if this node has read-only comments, but we already check on submit + // and this way we save a query. it's just a cosmetic issue. otherwise just uncomment next + // line and related bracket some lines below + + //if (node_comment_mode($comment->nid)) { if (user_access("post comments")) { if (comment_access("edit", $comment)) { $links[] = "<a href=\"module.php?mod=comment&op=edit&id=$comment->cid\" title=\"". t("Make changes to your comment.") ."\"><span style=\"color: $theme->type\">". t("edit your comment") ."</span></a>"; @@ -386,6 +400,7 @@ function comment_links($comment, $return = 1) { $links[] = "<a href=\"module.php?mod=comment&op=reply&id=$comment->nid&pid=$comment->cid\" title=\"". t("Reply to this comment.") ."\"><span style=\"color: $theme->type;\">". t("reply to this comment") ."</span></a>"; } } + //} return $theme->links($links); @@ -553,10 +568,10 @@ function comment_search($keys) { // index. // // "select"'s value is used to relate the data from the specific nodes - // table to the data that the search_index table has in it, and the the + // table to the data that the search_index table has in it, and the the // do_search functino will rank it. // - // The select must always provide the following fields - lno, title, + // The select must always provide the following fields - lno, title, // created, uid, name, count // // The select statement may optionally provide "nid", which is a secondary @@ -565,7 +580,7 @@ function comment_search($keys) { $find = do_search(array("keys" => $keys, "type" => "comment", "select" => "select s.lno as lno, c.nid as nid, c.subject as title, c.timestamp as created, u.uid as uid, u.name as name, s.count as count FROM search_index s, comments c LEFT JOIN users u ON c.uid = u.uid WHERE s.lno = c.cid AND s.type = 'comment' AND s.word like '%'")); - + return $find; } @@ -597,11 +612,15 @@ function comment_link($type, $node = 0, $main = 0) { else { /* ** Node page: add a "post comment" link if the user is allowed to - ** post comments. + ** post comments and if this node is not read-only */ if (user_access("post comments")) { - $links[] = "<a href=\"module.php?mod=comment&op=reply&id=$node->nid#comment\" title=\"". t("Share your thoughts and opinions related to this posting.") ."\">". t("add new comment") ."</a>"; + if ($node->comment == 2) { + $links[] = "<a href=\"module.php?mod=comment&op=reply&id=$node->nid#comment\" title=\"". t("Share your thoughts and opinions related to this posting.") ."\">". t("add new comment") ."</a>"; + } else { + $links[] = t("This discussion is closed: you can't post new comments."); + } } } } @@ -751,14 +770,14 @@ function comment_update_index() { // Return an array of values to dictate how to update the search index // for this particular type of node. // - // "last_update"'s value is used with variable_set to set the + // "last_update"'s value is used with variable_set to set the // last time this node type (comment) had an index update run. // // "node_type"'s value is used to identify the node type in the search // index (commentt in this case). // // "select"'s value is used to select the node id and text fields from - // the table we are indexing. In this case, we also check against the + // the table we are indexing. In this case, we also check against the // last run date for the comments update. return array("last_update" => "comment_cron_last", "node_type" => "comment", |