From a7bb9b8ff2ea3117b7b4997b5ba780919d7cb32b Mon Sep 17 00:00:00 2001 From: toyomoyo Date: Wed, 21 Mar 2007 06:07:46 +0000 Subject: [PATCH] merged fix for MDL-8981, roles assigned at site level may result in a lot of default subscriptions --- lib/accesslib.php | 2 +- mod/forum/db/access.php | 11 +++++++++++ mod/forum/lib.php | 14 ++++++++++++-- mod/forum/version.php | 2 +- 4 files changed, 25 insertions(+), 4 deletions(-) diff --git a/lib/accesslib.php b/lib/accesslib.php index 352f135318..c57551b10c 100755 --- a/lib/accesslib.php +++ b/lib/accesslib.php @@ -2166,7 +2166,7 @@ function role_assign($roleid, $userid, $groupid, $contextid, $timestart=0, $time include_once($CFG->dirroot.'/mod/'.$mod.'/lib.php'); $functionname = $mod.'_role_assign'; if (function_exists($functionname)) { - $functionname($userid, $context); + $functionname($userid, $context, $roleid); } } } diff --git a/mod/forum/db/access.php b/mod/forum/db/access.php index a230b8e975..1b4487eb19 100644 --- a/mod/forum/db/access.php +++ b/mod/forum/db/access.php @@ -250,6 +250,17 @@ $mod_forum_capabilities = array( ) ), + 'mod/forum:initialsubscriptions' => array( + + 'captype' => 'read', + 'contextlevel' => CONTEXT_MODULE, + 'legacy' => array( + 'teacher' => CAP_ALLOW, + 'editingteacher' => CAP_ALLOW, + 'student' => CAP_ALLOW + ) + ), + 'mod/forum:throttlingapplies' => array( 'riskbitmask' => RISK_SPAM, diff --git a/mod/forum/lib.php b/mod/forum/lib.php index 4f546d68e7..02f5fea995 100644 --- a/mod/forum/lib.php +++ b/mod/forum/lib.php @@ -3829,8 +3829,18 @@ function forum_update_subscriptions_button($courseid, $forumid) { * @param object $context * @return bool */ -function forum_role_assign($userid, $context) { - return forum_add_user_default_subscriptions($userid, $context); +function forum_role_assign($userid, $context, $roleid) { + // check to see if this role comes with mod/forum:initialsubscriptions + $cap = role_context_capabilities($roleid, $context, 'mod/forum:initialsubscriptions'); + + // we are checking the role because has_capability() will pull this capability out + // from other roles this user might have and resolve them, which is no good + if ($cap['mod/forum:initialsubscriptions'] == CAP_ALLOW) { + return forum_add_user_default_subscriptions($userid, $context); + } else { + // MDL-8981, do not subscribe to forum + return true; + } } diff --git a/mod/forum/version.php b/mod/forum/version.php index 236ee2363a..a5ef2a685f 100644 --- a/mod/forum/version.php +++ b/mod/forum/version.php @@ -5,7 +5,7 @@ // This fragment is called by /admin/index.php //////////////////////////////////////////////////////////////////////////////// -$module->version = 2007020201; +$module->version = 2007020202; $module->requires = 2007020201; // Requires this Moodle version $module->cron = 60; -- 2.39.5