From c718dd57bad81d6b469464fd2e596bdcb8b279ca Mon Sep 17 00:00:00 2001 From: skodak Date: Fri, 2 Mar 2007 19:41:31 +0000 Subject: [PATCH] MDL-8578 new capability for adding and replying to news in forum --- lang/en_utf8/forum.php | 2 ++ mod/forum/db/access.php | 26 ++++++++++++++++++++++++++ mod/forum/discuss.php | 8 +++++++- mod/forum/lib.php | 20 ++++++++++++++++---- mod/forum/post.php | 2 +- mod/forum/version.php | 4 ++-- 6 files changed, 54 insertions(+), 8 deletions(-) diff --git a/lang/en_utf8/forum.php b/lang/en_utf8/forum.php index 8c08790e8a..8d6c1e875e 100644 --- a/lang/en_utf8/forum.php +++ b/lang/en_utf8/forum.php @@ -69,6 +69,7 @@ $string['existingsubscribers'] = 'Existing subscribers'; $string['forcesubscribe'] = 'Force everyone to be subscribed'; $string['forcesubscribeq'] = 'Force everyone to be subscribed?'; $string['forum'] = 'Forum'; +$string['forum:addnews'] = 'Add news'; $string['forum:createattachment'] = 'Create attachments'; $string['forum:deleteanypost'] = 'Delete any posts (anytime)'; $string['forum:deleteownpost'] = 'Delete own posts (within deadline)'; @@ -78,6 +79,7 @@ $string['forum:movediscussions'] = 'Move discussions'; $string['forum:throttlingapplies'] = 'Throttling applies'; $string['forum:rate'] = 'Rate posts'; $string['forum:replypost'] = 'Reply to posts'; +$string['forum:replynews'] = 'Reply to news'; $string['forum:splitdiscussions'] = 'Split discussions'; $string['forum:startdiscussion'] = 'Start new discussions'; $string['forum:viewanyrating'] = 'View any ratings'; diff --git a/mod/forum/db/access.php b/mod/forum/db/access.php index 2519629d47..a230b8e975 100644 --- a/mod/forum/db/access.php +++ b/mod/forum/db/access.php @@ -85,6 +85,32 @@ $mod_forum_capabilities = array( ) ), + 'mod/forum:addnews' => array( + + 'riskbitmask' => RISK_SPAM, + + 'captype' => 'write', + 'contextlevel' => CONTEXT_MODULE, + 'legacy' => array( + 'teacher' => CAP_ALLOW, + 'editingteacher' => CAP_ALLOW, + 'admin' => CAP_ALLOW + ) + ), + + 'mod/forum:replynews' => array( + + 'riskbitmask' => RISK_SPAM, + + 'captype' => 'write', + 'contextlevel' => CONTEXT_MODULE, + 'legacy' => array( + 'teacher' => CAP_ALLOW, + 'editingteacher' => CAP_ALLOW, + 'admin' => CAP_ALLOW + ) + ), + 'mod/forum:viewrating' => array( 'captype' => 'read', diff --git a/mod/forum/discuss.php b/mod/forum/discuss.php index 9736f6c6c7..4d11370abc 100644 --- a/mod/forum/discuss.php +++ b/mod/forum/discuss.php @@ -190,7 +190,13 @@ (ismember($discussion->groupid) || $mygroupid == $discussion->groupid) ); } } else { - if (!has_capability('mod/forum:replypost', $modcontext)) { + if ($forum->type == 'news') { + $capname = 'mod/forum:replynews'; + } else { + $capname = 'mod/forum:replypost'; + } + + if (!has_capability($capname, $modcontext)) { $coursecontext = get_context_instance(CONTEXT_COURSE, $course->id); if (!has_capability('moodle/legacy:guest', $coursecontext, NULL, false)) { // User is a guest here! $canreply = false; diff --git a/mod/forum/lib.php b/mod/forum/lib.php index d0e356b265..06b2afea43 100644 --- a/mod/forum/lib.php +++ b/mod/forum/lib.php @@ -2923,7 +2923,13 @@ function forum_user_can_post_discussion($forum, $currentgroup=false, $groupmode= } $context = get_context_instance(CONTEXT_MODULE, $cm->id); - if (!has_capability('mod/forum:startdiscussion', $context)) { + if ($forum->type == 'news') { + $capname = 'mod/forum:addnews'; + } else { + $capname = 'mod/forum:startdiscussion'; + } + + if (!has_capability($capname, $context)) { return false; } @@ -2957,11 +2963,17 @@ function forum_user_can_post($forum, $user=NULL) { } $context = get_context_instance(CONTEXT_MODULE, $cm->id); - if (isset($user)) { - $canreply = has_capability('mod/forum:replypost', $context, $user->id, false) + if ($forum->type == 'news') { + $capname = 'mod/forum:replynews'; + } else { + $capname = 'mod/forum:replypost'; + } + + if (!empty($user)) { + $canreply = has_capability($capname, $context, $user->id, false) && !has_capability('moodle/legacy:guest', $context, $user->id, false); } else { - $canreply = has_capability('mod/forum:replypost', $context, NULL, false) + $canreply = has_capability($capname, $context, NULL, false) && !has_capability('moodle/legacy:guest', $context, NULL, false); } diff --git a/mod/forum/post.php b/mod/forum/post.php index 5ef4958b57..19951d7f6e 100644 --- a/mod/forum/post.php +++ b/mod/forum/post.php @@ -527,7 +527,7 @@ $timemessage = 4; } - if ($fromform->mailnow) { + if (!empty($fromform->mailnow)) { $message .= get_string("postmailnow", "forum"); $timemessage = 4; } else { diff --git a/mod/forum/version.php b/mod/forum/version.php index 966e4ed0a2..236ee2363a 100644 --- a/mod/forum/version.php +++ b/mod/forum/version.php @@ -5,8 +5,8 @@ // This fragment is called by /admin/index.php //////////////////////////////////////////////////////////////////////////////// -$module->version = 2007020200; -$module->requires = 2007020200; // Requires this Moodle version +$module->version = 2007020201; +$module->requires = 2007020201; // Requires this Moodle version $module->cron = 60; ?> -- 2.39.5