MDL-18293 exception and DML cleanup

This commit is contained in:
skodak 2009-02-17 17:32:36 +00:00
parent 013376dec4
commit 9c6972d630

View file

@ -2863,7 +2863,7 @@ function create_user_record($username, $password, $auth='manual') {
$newuser->timemodified = time();
$newuser->mnethostid = $CFG->mnet_localhost_id;
if ($DB->insert_record('user', $newuser)) {
$DB->insert_record('user', $newuser);
$user = get_complete_user_data('username', $newuser->username);
if(!empty($CFG->{'auth_'.$newuser->auth.'_forcechangepassword'})){
set_user_preference('auth_forcepasswordchange', 1, $user->id);
@ -2871,8 +2871,6 @@ function create_user_record($username, $password, $auth='manual') {
update_internal_user_password($user, $password);
return $user;
}
return false;
}
/**
* Will update a local user record from an external source
@ -2909,8 +2907,7 @@ function update_user_record($username, $authplugin) {
// nothing_ for this field. Thus it makes sense to let this value
// stand in until LDAP is giving a value for this field.
if (!(empty($value) && $lockval === 'unlockedifempty')) {
$DB->set_field('user', $key, $value, 'username', $username)
|| error_log("Error updating $key for $username");
$DB->set_field('user', $key, $value, 'username', $username);
}
}
}
@ -2963,8 +2960,10 @@ function delete_user($user) {
require_once($CFG->libdir.'/grouplib.php');
require_once($CFG->libdir.'/gradelib.php');
// TODO: decide if this transaction is really needed
$DB->begin_sql();
try {
// delete all grades - backup is kept in grade_grades_history table
if ($grades = grade_grade::fetch_all(array('userid'=>$user->id))) {
foreach ($grades as $grade) {
@ -2999,19 +2998,22 @@ function delete_user($user) {
$updateuser->idnumber = ''; // Clear this field to free it up
$updateuser->timemodified = time();
if ($DB->update_record('user', $updateuser)) {
$DB->update_record('user', $updateuser);
$DB->commit_sql();
// 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 {
} catch (Exception $e) {
$DB->rollback_sql();
return false;
throw $e;
}
return true;
}
/**
@ -3259,7 +3261,8 @@ function update_internal_user_password(&$user, $password) {
$hashedpassword = hash_internal_user_password($password);
}
return $DB->set_field('user', 'password', $hashedpassword, array('id'=>$user->id));
$DB->set_field('user', 'password', $hashedpassword, array('id'=>$user->id));
return true;
}
/**
@ -3457,12 +3460,7 @@ function delete_course($courseorid, $showfeedback = true) {
$result = false;
}
if (!$DB->delete_records("course", array("id"=>$courseid))) {
if ($showfeedback) {
notify("An error occurred while deleting the main course record.");
}
$result = false;
}
$DB->delete_records("course", array("id"=>$courseid));
/// Delete all roles and overiddes in the course context
if (!delete_context(CONTEXT_COURSE, $courseid)) {