/// 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');
}
$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');
}
$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();
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
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");
if (!update_course($data)) {
print_error('coursenotupdated');
}
- // MDL-9983
- events_trigger('course_updated', $data);
redirect($CFG->wwwroot."/course/view.php?id=$course->id");
}
}
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;
}
$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');
$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');
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;
}
}
}
+ //trigger events
+ events_trigger('course_updated', $course);
return true;
} 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);
} 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);
* 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
*/
//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;
}
//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;
}
$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;
$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;
}
/**
$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;
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
//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;
}
/**
* @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
// 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;
}
/**
$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');
}
$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');
}
$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');
}
$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');
}
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);
}
}
}
///////////////////////////////////////////////////////////////////////////
+
+/* 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
+
+
+*/
+
?>
// 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 {
* 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;
$result = false;
}
+ if ($result) {
+ //trigger events
+ events_trigger('course_deleted', $course);
+ }
+
return $result;
}
*
* @param string $data ?
* @return string
- * @todo Finish documenting this function\r
+ * @todo Finish documenting this function
*/
function rc4decrypt($data) {
$password = 'nfgjeingjk';
$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);
}
}
+ // 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");
if (!$usernew->id = $DB->insert_record('user', $usernew)) {
print_error('cannotcreateuser');
}
+ $usercreated = true;
} else {
if (!$DB->update_record('user', $usernew)) {
print_error('cannotupdateuser');
}
}
}
-
- // MDL-9983
- events_trigger('user_updated', $usernew);
+ $usercreated = false;
}
//update preferences
// 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)) {