role_assign() and role_unassign() now call these hooks in each module:

xxx_role_assign()

    xxx_role_unassign()

so that modules can do stuff they might need to do (eg subscriptions etc)
This commit is contained in:
moodler
2006-09-13 08:07:14 +00:00
parent e82dc9bb41
commit 0f161e1fee
+97 -6
View File
@@ -1300,9 +1300,19 @@ function role_assign($roleid, $userid, $groupid, $contextid, $timestart=0, $time
load_user_capability();
}
/// Make sure the user is subscribed to any appropriate forums in this context
require_once($CFG->dirroot.'/mod/forum/lib.php');
forum_add_user_default_subscriptions($userid, $context);
/// Ask all the modules if anything needs to be done for this user
if ($mods = get_list_of_plugins('mod')) {
foreach ($mods as $mod) {
include_once($CFG->dirroot.'/mod/'.$mod.'/lib.php');
$functionname = $mod.'_role_assign';
if (function_exists($functionname)) {
$functionname($userid, $context);
}
}
}
/// Make sure they have an entry in user_lastaccess for courses they can access
// role_add_lastaccess_entries($userid, $context);
}
return $success;
@@ -1337,9 +1347,24 @@ function role_unassign($roleid=0, $userid=0, $groupid=0, $contextid=0) {
load_user_capability();
}
/// Make sure the user is unsubscribed from any appropriate forums in this context
require_once($CFG->dirroot.'/mod/forum/lib.php');
forum_remove_user_subscriptions($userid, $context);
if ($contextid) {
if ($context = get_record('context', 'id', $contextid)) {
/// Ask all the modules if anything needs to be done for this user
if ($mods = get_list_of_plugins('mod')) {
foreach ($mods as $mod) {
include_once($CFG->dirroot.'/mod/'.$mod.'/lib.php');
$functionname = $mod.'_role_unassign';
if (function_exists($functionname)) {
$functionname($userid, $context);
}
}
}
/// Remove entries from user_lastaccess for courses they can no longer access
//role_add_lastaccess_entries($userid, $context);
}
}
return true;
}
@@ -1348,6 +1373,72 @@ function role_unassign($roleid=0, $userid=0, $groupid=0, $contextid=0) {
return true;
}
/**
* Add last access times to user_lastaccess as required
* @param $userid
* @param $context
* @return boolean - success or failure
*/
function role_add_lastaccess_entries($userid, $context) {
global $USER, $CFG;
if (empty($context->aggregatelevel)) {
return false;
}
$lastaccess = new object; // Reusable object below
$lastaccess->userid = $userid;
$lastaccess->timeaccess = 0;
switch ($context->aggregatelevel) {
case CONTEXT_SYSTEM: // For the whole site
if ($courses = get_record('course')) {
foreach ($courses as $course) {
$lastaccess->courseid = $course->id;
role_set_lastaccess($lastaccess);
}
}
break;
case CONTEXT_CATEGORY: // For a whole category
if ($courses = get_record('course', 'category', $context->instanceid)) {
foreach ($courses as $course) {
$lastaccess->courseid = $course->id;
role_set_lastaccess($lastaccess);
}
}
if ($categories = get_record('course_categories', 'parent', $context->instanceid)) {
foreach ($categories as $category) {
$subcontext = get_context_instance(CONTEXT_CATEGORY, $category->id);
role_add_lastaccess_entries($userid, $subcontext);
}
}
break;
case CONTEXT_COURSE: // For a whole course
if ($course = get_record('course', 'id', $context->instanceid)) {
$lastaccess->courseid = $course->id;
role_set_lastaccess($lastaccess);
}
break;
}
}
/**
* Delete last access times from user_lastaccess as required
* @param $userid
* @param $context
* @return boolean - success or failure
*/
function role_remove_lastaccess_entries($userid, $context) {
global $USER, $CFG;
}
/**
* Loads the capability definitions for the component (from file). If no