]> git.mjollnir.org Git - moodle.git/commitdiff
merged fix for MDL-8981, roles assigned at site level may result in a lot of default...
authortoyomoyo <toyomoyo>
Wed, 21 Mar 2007 06:07:46 +0000 (06:07 +0000)
committertoyomoyo <toyomoyo>
Wed, 21 Mar 2007 06:07:46 +0000 (06:07 +0000)
lib/accesslib.php
mod/forum/db/access.php
mod/forum/lib.php
mod/forum/version.php

index 352f13531867fd32acc3a0b3d3caf86b003d7589..c57551b10ccea6b6dd7b98dcd601cce65360b9c2 100755 (executable)
@@ -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);
                 }
             }
         }
index a230b8e975009f1560a24c9d2a9e798b9e41abc3..1b4487eb1935d8caac0fc71e556718d2f2e70a62 100644 (file)
@@ -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,
index 4f546d68e72afd497e9b46a8729b463f649a58c0..02f5fea995c6b6cae8a8e2e29427d3c34f6114ad 100644 (file)
@@ -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;   
+    }
 }
 
 
index 236ee2363a3c096720cf08726fb6f8d5a53029d6..a5ef2a685f8b200f4a4ad4730d5de1d31b4f9cdf 100644 (file)
@@ -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;