MDL-9983, MDL-13998 core events related cleanup; merged from MOODLE_19_STABLE

This commit is contained in:
skodak 2008-07-06 17:57:06 +00:00
parent c4f3038349
commit 2942a5cd34
15 changed files with 195 additions and 70 deletions

View File

@ -86,6 +86,9 @@ class auth_plugin_email extends auth_plugin_base {
/// Save any custom profile field information
profile_save_data($user);
$user = get_record('user', 'id', $user->id);
events_trigger('user_created', $user);
if (! send_confirmation_email($user)) {
print_error('auth_emailnoemail','auth');
}

View File

@ -403,6 +403,9 @@ class auth_plugin_ldap extends auth_plugin_base {
$this->update_user_record($user->username);
update_internal_user_password($user, $plainslashedpassword);
$user = get_record('user', 'id', $user->id);
events_trigger('user_created', $user);
if (! send_confirmation_email($user)) {
print_error('auth_emailnoemail', 'auth');
}

View File

@ -17,7 +17,7 @@
$moveto = optional_param('moveto', 0, PARAM_INT);
$rename = optional_param('rename', '', PARAM_TEXT);
$resort = optional_param('resort', 0, PARAM_BOOL);
$categorytheme= optional_param('categorytheme', false, PARAM_CLEAN);
$categorytheme= optional_param('categorytheme', false, PARAM_SAFEDIR);
if ($CFG->forcelogin) {
require_login();
@ -59,12 +59,12 @@
if (has_capability('moodle/category:update', $context)) {
/// Rename the category if requested
if (!empty($rename) and confirm_sesskey()) {
$category->name = $rename;
if (!$DB->set_field("course_categories", "name", $category->name, array("id"=>$category->id))) {
if (!$DB->set_field("course_categories", "name", $rename, array("id"=>$category->id))) {
notify("An error occurred while renaming the category");
}
// MDL-9983
events_trigger('category_updated', $category);
$category->name = $rename;
//trigger events
events_trigger('course_category_updated', $category);
}
/// Set the category theme if requested

View File

@ -72,12 +72,9 @@
print_heading($strdeletingcourse);
delete_course($course->id);
delete_course($course);
fix_course_sortorder(); //update course count in catagories
// MDL-9983
events_trigger('course_deleted', $course);
print_heading( get_string("deletedcourse", "", format_string($course->shortname)) );
print_continue("category.php?id=$course->category");

View File

@ -122,8 +122,6 @@
if (!update_course($data)) {
print_error('coursenotupdated');
}
// MDL-9983
events_trigger('course_updated', $data);
redirect($CFG->wwwroot."/course/view.php?id=$course->id");
}
}

View File

@ -2772,7 +2772,7 @@ function category_delete_full($category, $showfeedback=true) {
if ($courses = $DB->get_records('course', array('category'=>$category->id), 'sortorder ASC')) {
foreach ($courses as $course) {
if (!delete_course($course->id, false)) {
if (!delete_course($course, false)) {
notify("Error deleting course $course->shortname");
return false;
}
@ -2791,7 +2791,7 @@ function category_delete_full($category, $showfeedback=true) {
$DB->delete_records('course_categories', array('id'=>$category->id));
delete_context(CONTEXT_COURSECAT, $category->id);
events_trigger('category_deleted', $category);
events_trigger('course_category_deleted', $category);
notify(get_string('coursecategorydeleted', '', format_string($category->name)), 'notifysuccess');
@ -2841,7 +2841,7 @@ function category_delete_move($category, $newparentid, $showfeedback=true) {
$DB->delete_records('course_categories', array('id'=>$category->id));
delete_context(CONTEXT_COURSECAT, $category->id);
events_trigger('category_deleted', $category);
events_trigger('course_category_deleted', $category);
notify(get_string('coursecategorydeleted', '', format_string($category->name)), 'notifysuccess');
@ -2998,6 +2998,9 @@ function create_course($data) {
add_to_log(SITEID, 'course', 'new', 'view.php?id='.$course->id, $data->fullname.' (ID '.$course->id.')');
//trigger events
events_trigger('course_created', $course);
return $course;
}
@ -3091,6 +3094,8 @@ function update_course($data) {
}
}
//trigger events
events_trigger('course_updated', $course);
return true;

View File

@ -60,11 +60,6 @@ if ($id and $delete) {
} else if (confirm_sesskey()){
if (groups_delete_group($id)) {
// MDL-9983
$eventdata = new object();
$eventdata->group = $id;
$eventdata->course = $courseid;
events_trigger('group_deleted', $eventdata);
redirect('index.php?id='.$course->id);
} else {
print_error('erroreditgroup', 'group', $returnurl);

View File

@ -60,11 +60,6 @@ if ($id and $delete) {
} else if (confirm_sesskey()){
if (groups_delete_grouping($id)) {
// MDL-9983
$eventdata = new object();
$eventdata->group = $id;
$eventdata->course = $courseid;
events_trigger('grouping_deleted', $eventdata);
redirect($returnurl);
} else {
print_error('erroreditgrouping', 'group', $returnurl);

View File

@ -3,7 +3,7 @@
* Extra library for groups and groupings.
*
* @copyright © 2006 The Open University
* @author J.White AT open.ac.uk
* @author J.White AT open.ac.uk, Petr Skoda (skodak)
* @license http://www.gnu.org/copyleft/gpl.html GNU Public License
* @package groups
*/
@ -43,11 +43,11 @@ function groups_add_member($groupid, $userid) {
//update group info
$DB->set_field('groups', 'timemodified', $member->timeadded, array('id'=>$groupid));
// MDL-9983
//trigger groups events
$eventdata = new object();
$eventdata->groupid = $groupid;
$eventdata->userid = $userid;
events_trigger('group_user_added', $eventdata);
$eventdata->userid = $userid;
events_trigger('groups_member_added', $eventdata);
return true;
}
@ -75,6 +75,12 @@ function groups_remove_member($groupid, $userid) {
//update group info
$DB->set_field('groups', 'timemodified', time(), array('id'=>$groupid));
//trigger groups events
$eventdata = new object();
$eventdata->groupid = $groupid;
$eventdata->userid = $userid;
events_trigger('groups_member_removed', $eventdata);
return true;
}
@ -93,11 +99,18 @@ function groups_create_group($data, $um=false) {
$data->name = trim($data->name);
$id = $DB->insert_record('groups', $data);
if ($id and $um) {
//update image
if (save_profile_image($id, $um, 'groups')) {
$DB->set_field('groups', 'picture', 1, array('id'=>$id));
if ($id) {
$data->id = $id;
if ($um) {
//update image
if (save_profile_image($id, $um, 'groups')) {
$DB->set_field('groups', 'picture', 1, array('id'=>$id));
}
$data->picture = 1;
}
//trigger groups events
events_trigger('groups_group_created', $data);
}
return $id;
@ -114,7 +127,15 @@ function groups_create_grouping($data) {
$data->timecreated = time();
$data->timemodified = $data->timecreated;
$data->name = trim($data->name);
return $DB->insert_record('groupings', $data);
$id = $DB->insert_record('groupings', $data);
if ($id) {
//trigger groups events
$data->id = $id;
events_trigger('groups_grouping_created', $data);
}
return $id;
}
/**
@ -131,11 +152,17 @@ function groups_update_group($data, $um=false) {
$data->name = trim($data->name);
$result = $DB->update_record('groups', $data);
if ($result and $um) {
//update image
if (save_profile_image($data->id, $um, 'groups')) {
if ($result) {
if ($um) {
//update image
if (save_profile_image($data->id, $um, 'groups')) {
$DB->set_field('groups', 'picture', 1, array('id'=>$data->id));
$data->picture = 1;
}
}
//trigger groups events
events_trigger('groups_group_updated', $data);
}
return $result;
@ -150,21 +177,32 @@ function groups_update_grouping($data) {
global $DB;
$data->timemodified = time();
$data->name = trim($data->name);
return $DB->update_record('groupings', $data);
$result = $DB->update_record('groupings', $data);
if ($result) {
//trigger groups events
events_trigger('groups_grouping_updated', $data);
}
return $result;
}
/**
* Delete a group best effort, first removing members and links with courses and groupings.
* Removes group avatar too.
* @param int $groupid The group to delete
* @param mixed $grouporid The id of group to delete or full group object
* @return boolean True if deletion was successful, false otherwise
*/
function groups_delete_group($groupid) {
function groups_delete_group($grouporid) {
global $CFG, $DB;
require_once($CFG->libdir.'/gdlib.php');
if (empty($groupid)) {
return false;
if (is_object($grouporid)) {
$groupid = $grouporid->id;
$group = $grouporid;
} else {
$groupid = $grouporid;
if (!$group = $DB->get_record('groups', array('id'=>$groupid))) {
return false;
}
}
// delete group calendar events
@ -176,7 +214,13 @@ function groups_delete_group($groupid) {
//then imge
delete_profile_image($groupid, 'groups');
//group itself last
return $DB->delete_records('groups', array('id'=>$groupid));
$result = $DB->delete_records('groups', array('id'=>$groupid));
if ($result) {
//trigger groups events
events_trigger('groups_group_deleted', $group);
}
return $result;
}
/**
@ -184,12 +228,17 @@ function groups_delete_group($groupid) {
* @param int $groupingid
* @return bool success
*/
function groups_delete_grouping($groupingid) {
function groups_delete_grouping($groupingorid) {
global $DB;
if (empty($groupingid)) {
return false;
if (is_object($groupingorid)) {
$groupingid = $groupingorid->id;
$grouping = $groupingorid;
} else {
$groupingid = $groupingorid;
if (!$grouping = $DB->get_record('groupings', array('id'=>$groupingorid))) {
return false;
}
}
//first delete usage in groupings_groups
@ -199,7 +248,14 @@ function groups_delete_grouping($groupingid) {
// remove the groupingid from all course modules
$DB->set_field('course_modules', 'groupingid', 0, array('groupingid'=>$groupingid));
//group itself last
return $DB->delete_records('groupings', array('id'=>$groupingid));
$result = $DB->delete_records('groupings', array('id'=>$groupingid));
if ($result) {
//trigger groups events
events_trigger('groups_grouping_deleted', $grouping);
}
return $result;
}
/**
@ -214,6 +270,9 @@ function groups_delete_group_members($courseid, $showfeedback=false) {
$groupssql = "SELECT id FROM {groups} g WHERE g.courseid = ?";
$DB->delete_records_select('groups_members', "groupid IN ($groupssql)", array($courseid));
//trigger groups events
events_trigger('groups_members_removed', $courseid);
if ($showfeedback) {
notify(get_string('deleted').' groups_members');
}
@ -233,6 +292,9 @@ function groups_delete_groupings_groups($courseid, $showfeedback=false) {
$groupssql = "SELECT id FROM {groups} g WHERE g.courseid = ?";
$DB->delete_records_select('groupings_groups', "groupid IN ($groupssql)", array($courseid));
//trigger groups events
events_trigger('groups_groupings_groups_removed', $courseid);
if ($showfeedback) {
notify(get_string('deleted').' groupings_groups');
}
@ -266,6 +328,10 @@ function groups_delete_groups($courseid, $showfeedback=false) {
$DB->delete_records_select('event', "groupid IN ($groupssql)", array($courseid));
$DB->delete_records('groups', array('courseid'=>$courseid));
//trigger groups events
events_trigger('groups_groups_deleted', $courseid);
if ($showfeedback) {
notify(get_string('deleted').' groups');
}
@ -293,6 +359,10 @@ function groups_delete_groupings($courseid, $showfeedback=false) {
$DB->set_field('course_modules', 'groupingid', 0, array('course'=>$courseid));
$DB->delete_records('groupings', array('courseid'=>$courseid));
//trigger groups events
events_trigger('groups_groupings_deleted', $courseid);
if ($showfeedback) {
notify(get_string('deleted').' groupings');
}

View File

@ -64,12 +64,6 @@ if ($frm = data_submitted() and confirm_sesskey()) {
if (!groups_remove_member($groupid, $userid)) {
print_error('erroraddremoveuser', 'group', $returnurl);
}
// MDL-9983
$eventdata = new object();
$eventdata -> groupid = $groupid;
$eventdata -> userid = $userid;
events_trigger('group_user_removed', $eventdata);
}
}
}

View File

@ -26,6 +26,50 @@
///////////////////////////////////////////////////////////////////////////
/* List of handlers */
$handlers = array (); // no handlers for now in core
/* List of events thrown from Moodle core
==== user related events ====
user_created - object user table record
user_updated - object user table record
user_deleted - object user table record
==== course related events ====
course_category_updated - object course_categories table record
course_category_created - object course_categories table record
course_category_deleted - object course_categories table record
course_created - object course table record
course_updated - object course table record
course_deleted - object course table record
==== group related events ====
groups_group_created - object groups_group table record
groups_group_updated - object groups_group table record
groups_group_deleted - object groups_group table record
groups_member_added - object userid, groupid properties
groups_member_removed - object userid, groupid properties
groups_grouping_created - object groups_grouping table record
groups_grouping_updated - object groups_grouping table record
groups_grouping_deleted - object groups_grouping table record
groups_members_removed - int course id - removed all members from all groups in course
groups_groupings_groups_removed - int course id - removed all groups from all groupings in course
groups_groups_deleted - int course id - deleted all course groups
groups_groupings_deleted - int course id - deleted all course groupings
*/
?>

View File

@ -2901,6 +2901,8 @@ function delete_user($user) {
// notify auth plugin - do not block the delete even when plugin fails
$authplugin = get_auth_plugin($user->auth);
$authplugin->user_delete($user);
events_trigger('user_deleted', $user);
return true;
} else {
@ -3326,16 +3328,26 @@ function set_login_session_preferences() {
* Delete a course, including all related data from the database,
* and any associated files from the moodledata folder.
*
* @param int $courseid The id of the course to delete.
* @param mixed $courseorid The id of the course or course object to delete.
* @param bool $showfeedback Whether to display notifications of each action the function performs.
* @return bool true if all the removals succeeded. false if there were any failures. If this
* method returns false, some of the removals will probably have succeeded, and others
* failed, but you have no way of knowing which.
*/
function delete_course($courseid, $showfeedback = true) {
function delete_course($courseorid, $showfeedback = true) {
global $CFG, $DB;
$result = true;
if (is_object($courseorid)) {
$courseid = $courseorid->id;
$course = $courseorid;
} else {
$courseid = $courseorid;
if (!$course = $DB->get_record('course', array('id'=>$courseid))) {
return false;
}
}
// frontpage course can not be deleted!!
if ($courseid == SITEID) {
return false;
@ -3370,6 +3382,11 @@ function delete_course($courseid, $showfeedback = true) {
$result = false;
}
if ($result) {
//trigger events
events_trigger('course_deleted', $course);
}
return $result;
}
@ -5644,7 +5661,7 @@ function rc4encrypt($data) {
*
* @param string $data ?
* @return string
* @todo Finish documenting this function
* @todo Finish documenting this function
*/
function rc4decrypt($data) {
$password = 'nfgjeingjk';

View File

@ -73,12 +73,6 @@
$strpasswordchanged = get_string('passwordchanged');
// MDL-9983
$eventdata = new object();
$eventdata -> user = $USER;
$eventdata -> newpassword = $data -> newpassword1;
events_trigger('password_changed', $eventdata);
add_to_log($course->id, 'user', 'change password', "view.php?id=$USER->id&course=$course->id", "$USER->id");
$fullname = fullname($USER, true);

View File

@ -180,14 +180,16 @@
}
}
// reload from db
$usernew = $DB->get_record('user', array('id'=>$user->id));
events_trigger('user_updated', $usernew);
if ($USER->id == $user->id) {
// Override old $USER session variable if needed
$usernew = $DB->get_record('user', array('id'=>$user->id)); // reload from db
foreach ($usernew as $variable => $value) {
foreach ((array)$usernew as $variable => $value) {
$USER->$variable = $value;
}
}
events_trigger('user_updated', $usernew);
if (!$email_changed || !$CFG->emailchangeconfirmation) {
redirect("$CFG->wwwroot/user/view.php?id=$user->id&course=$course->id");

View File

@ -99,6 +99,7 @@
if (!$usernew->id = $DB->insert_record('user', $usernew)) {
print_error('cannotcreateuser');
}
$usercreated = true;
} else {
if (!$DB->update_record('user', $usernew)) {
print_error('cannotupdateuser');
@ -118,9 +119,7 @@
}
}
}
// MDL-9983
events_trigger('user_updated', $usernew);
$usercreated = false;
}
//update preferences
@ -145,10 +144,19 @@
// save custom profile fields data
profile_save_data($usernew);
// reload from db
$usernew = $DB->get_record('user', array('id'=>$usernew->id));
// trigger events
if ($usercreated) {
events_trigger('user_created', $usernew);
} else {
events_trigger('user_updated', $usernew);
}
if ($user->id == $USER->id) {
// Override old $USER session variable
$usernew = $DB->get_record('user', array('id'=>$usernew->id)); // reload from db
foreach ($usernew as $variable => $value) {
foreach ((array)$usernew as $variable => $value) {
$USER->$variable = $value;
}
if (!empty($USER->newadminuser)) {