From e8e0bb2d7b6af8dbd71206cf16686cf5ead76be2 Mon Sep 17 00:00:00 2001 From: skodak Date: Thu, 25 Jan 2007 11:03:33 +0000 Subject: [PATCH] MDL-8096 - advanced edit now mostly works, though still some parts missing; RIP changeme user :-) --- admin/roles/assign.php | 2 +- admin/uploaduser.php | 6 ---- admin/user.php | 2 +- lang/en_utf8/moodle.php | 1 + lib/datalib.php | 7 ++-- lib/db/upgrade.php | 4 +++ user/edit.php | 9 +---- user/editadvanced_form.php | 74 ++++++++++++++++++++++++++++++-------- version.php | 2 +- 9 files changed, 71 insertions(+), 36 deletions(-) diff --git a/admin/roles/assign.php b/admin/roles/assign.php index 469ad31a472b4..70b0716c4e0d0 100755 --- a/admin/roles/assign.php +++ b/admin/roles/assign.php @@ -203,7 +203,7 @@ $contextusers = array(); } - $select = "username <> 'guest' AND username <> 'changeme' AND deleted = 0 AND confirmed = 1"; + $select = "username <> 'guest' AND deleted = 0 AND confirmed = 1"; $usercount = count_records_select('user', $select) - count($contextusers); diff --git a/admin/uploaduser.php b/admin/uploaduser.php index 34cbb77b9b896..d0113c9de1f0e 100755 --- a/admin/uploaduser.php +++ b/admin/uploaduser.php @@ -227,12 +227,6 @@ } } - if ($user->username === 'changeme') { - notify(get_string('invaliduserchangeme', 'admin')); - $userserrors++; - continue; - } - // before insert/update, check whether we should be updating // an old record instead if ($allowrenames && !empty($user->oldusername) ) { diff --git a/admin/user.php b/admin/user.php index 2fe06de1a3c93..190f90f6c0576 100644 --- a/admin/user.php +++ b/admin/user.php @@ -301,7 +301,7 @@ $table->align = array ("left", "left", "left", "left", "left", "center", "center", "center"); $table->width = "95%"; foreach ($users as $user) { - if ($user->username == 'changeme' or $user->username == 'guest') { + if ($user->username == 'guest') { continue; // do not dispaly dummy new user and guest here } diff --git a/lang/en_utf8/moodle.php b/lang/en_utf8/moodle.php index e19c12d84600a..2ea6213708dd0 100644 --- a/lang/en_utf8/moodle.php +++ b/lang/en_utf8/moodle.php @@ -1433,6 +1433,7 @@ $string['username'] = 'Username'; $string['usernameemailmatch'] = 'The username and email address do not relate to the same user'; $string['usernameexists'] = 'This username already exists, choose another'; +$string['usernamelowercase'] = 'Only lowercase letters allowed'; $string['usernamenotfound'] = 'The username was not found in the database'; $string['usernotconfirmed'] = 'Could not confirm $a'; $string['userpic'] = 'User picture'; diff --git a/lib/datalib.php b/lib/datalib.php index 0f04b29ac6982..4f27c91984b88 100644 --- a/lib/datalib.php +++ b/lib/datalib.php @@ -225,7 +225,7 @@ function get_users($get=true, $search='', $confirmed=false, $exceptions='', $sor $LIKE = sql_ilike(); $fullname = sql_fullname(); - $select = 'username <> \'guest\' AND username <> \'changeme\' AND deleted = 0'; + $select = 'username <> \'guest\' AND deleted = 0'; if (!empty($search)){ $search = trim($search); @@ -280,7 +280,7 @@ function get_users_listing($sort='lastaccess', $dir='ASC', $page=0, $recordsperp $LIKE = sql_ilike(); $fullname = sql_fullname(); - $select = "deleted <> '1' AND username <> 'changeme'"; + $select = "deleted <> '1'"; if (!empty($search)) { $search = trim($search); @@ -321,8 +321,7 @@ function get_users_confirmed() { FROM {$CFG->prefix}user WHERE confirmed = 1 AND deleted = 0 - AND username <> 'guest' - AND username <> 'changeme'"); + AND username <> 'guest'"); } diff --git a/lib/db/upgrade.php b/lib/db/upgrade.php index bfc5871e8668c..e077a6fb0251e 100644 --- a/lib/db/upgrade.php +++ b/lib/db/upgrade.php @@ -589,6 +589,10 @@ function xmldb_main_upgrade($oldversion=0) { $result = $result && rename_field($table, $field, 'accessctrl'); } + if ($result && $oldversion < 2007012500) { + execute_sql("DELETE FROM {$CFG->prefix}user WHERE username='changeme'; ", true); + } + return $result; } diff --git a/user/edit.php b/user/edit.php index 53abc59c429f3..a045809810ad3 100644 --- a/user/edit.php +++ b/user/edit.php @@ -79,14 +79,7 @@ $userform = new user_edit_form(null, compact('user','course','authplugin')); - if ($user->username == 'changeme') { - $changeme = new object(); - $changeme->id = $user->id; - $changeme->auth = $user->auth; - $userform->set_data($changeme); - } else { - $userform->set_data($user); - } + $userform->set_data($user); /// If data submitted, then process and store. if ($usernew = $userform->get_data()) { diff --git a/user/editadvanced_form.php b/user/editadvanced_form.php index ce1d031619268..ad6e2c82a69e0 100644 --- a/user/editadvanced_form.php +++ b/user/editadvanced_form.php @@ -50,35 +50,79 @@ function definition_after_data() { global $USER, $CFG; $mform =& $this->_form; - $user = get_record('user', 'id', $mform->getElementValue('id')); + $userid = $mform->getElementValue('id'); + $user = get_record('user', 'id', $userid); - if ($user) { - - // user can not change own auth method - if ($user->id == $USER->id) { - $mform->hardFreeze('auth'); - $mform->hardFreeze('preference_auth_forcepasswordchange'); - } + // user can not change own auth method + if ($userid == $USER->id) { + $mform->hardFreeze('auth'); + $mform->hardFreeze('preference_auth_forcepasswordchange'); } // admin must choose some password and supply correct email if (!empty($USER->newadminuser)) { $mform->addRule('newpassword', get_string('required'), 'required', null, 'client'); - $email = $mform->getElement('email'); - if ($email->getValue() == 'root@localhost') { - $email->setValue(''); + $email_el = $mform->getElement('email'); + if ($email_el->getValue() == 'root@localhost') { + $email_el->setValue(''); } } + // require password for new users + if ($userid == -1) { + $mform->addRule('newpassword', get_string('required'), 'required', null, 'client'); + } + + // print picture if (!empty($CFG->gdversion)) { - $image = $mform->getElement('currentpicture'); - if ($user) { - $image->setValue(print_user_picture($user->id, SITEID, $user->picture, 64, true, false, '', true)); + $image_el = $mform->getElement('currentpicture'); + if ($user and $user->picture) { + $image_el->setValue(print_user_picture($user->id, SITEID, $user->picture, 64, true, false, '', true)); + } else { + $image_el->setValue(get_string('none')); + } + } + } + + function validation ($usernew) { + global $CFG; + + $usernew = (object)$usernew; + $user = get_record('user', 'id', $usernew->id); + $err = array(); + + if (!$user or $user->username !== $usernew->username) { + //check new username does not exist + if (record_exists('user', 'username', $usernew->username, 'mnethostid', $CFG->mnet_localhost_id)) { + $err['username'] = get_string('usernameexists'); + } + //check allowed characters + if ($usernew->username !== moodle_strtolower($usernew->username)) { + $err['username'] = get_string('usernamelowercase'); } else { - $image->setValue(print_user_picture(0, SITEID, 0, 64, true, false, '', true)); + if (empty($CFG->extendedusernamechars)) { + $string = eregi_replace("[^(-\.[:alnum:])]", '', $usernew->username); + if ($usernew->username !== $string) { + $err['username'] = get_string('alphanumerical'); + } + } } } + + if (!$user or $user->email !== $usernew->email) { + if (!validate_email($usernew->email)) { + $err['email'] = get_string('invalidemail'); + } else if (record_exists('user', 'email', $usernew->email, 'mnethostid', $CFG->mnet_localhost_id)) { + $err['email'] = get_string('emailexists'); + } + } + + if (count($err) == 0){ + return true; + } else { + return $err; + } } function get_um() { diff --git a/version.php b/version.php index e2778253e93db..fc7529cfe41fc 100644 --- a/version.php +++ b/version.php @@ -6,7 +6,7 @@ // This is compared against the values stored in the database to determine // whether upgrades should be performed (see lib/db/*.php) - $version = 2007012400; // YYYYMMDD = date + $version = 2007012500; // YYYYMMDD = date // XY = increments within a single day $release = '1.8 dev'; // Human-friendly version name