From: skodak Date: Fri, 26 Jan 2007 18:42:47 +0000 (+0000) Subject: MDL-8096 user edit form - some more refactoring and fixes X-Git-Url: http://git.mjollnir.org/gw?a=commitdiff_plain;h=14a6b7e1973c2b6e8e8734faa93f00a2630233d8;p=moodle.git MDL-8096 user edit form - some more refactoring and fixes --- diff --git a/user/edit.php b/user/edit.php index 79db2c500a..2502b59ae2 100644 --- a/user/edit.php +++ b/user/edit.php @@ -3,6 +3,7 @@ require_once('../config.php'); require_once($CFG->libdir.'/gdlib.php'); require_once($CFG->dirroot.'/user/edit_form.php'); + require_once($CFG->dirroot.'/user/editlib.php'); require_once($CFG->dirroot.'/user/profile/lib.php'); $course = optional_param('course', SITEID, PARAM_INT); // course id (defaults to Site) @@ -26,13 +27,11 @@ redirect($CFG->wwwroot . "/user/view.php?course={$course->id}"); } - //load preferences - if (!empty($user->id) and $preferences = get_user_preferences(null, null, $user->id)) { - foreach($preferences as $name=>$value) { - $user->{'preference_'.$name} = $value; - } - } - //TODO: Load the custom profile fields + //load user preferences + useredit_load_preferences($user); + + //Load custom profile fields data + profile_load_data($user); //create form $userform = new user_edit_form(); @@ -60,37 +59,21 @@ } //update preferences - $ua = (array)$usernew; - foreach($ua as $key=>$value) { - if (strpos($key, 'preference_') === 0) { - $name = substr($key, strlen('preference_')); - set_user_preference($name, $value, $usernew->id); - } - } + useredit_update_user_preference($usernew); + //update user picture if (!empty($CFG->gdversion) and empty($CFG->disableuserimages)) { - //update user picture - if ($usernew->deletepicture) { - //TODO - delete the files - set_field('user', 'picture', 0, 'id', $usernew->id); - } else if ($usernew->picture = save_profile_image($usernew->id, $userform->get_um(), 'users')) { - set_field('user', 'picture', 1, 'id', $usernew->id); - } + useredit_update_picture($usernew, $userform); } // update mail bounces - if ($user->email !== $usernew->email) { - set_bounce_count($usernew,true); - set_send_count($usernew,true); - } + useredit_update_bounces($user, $usernew); - /// Update forum track preference. - if (($usernew->trackforums != $user->trackforums) and !$usernew->trackforums) { - require_once($CFG->dirroot.'/mod/forum/lib.php'); - forum_tp_delete_read_records($usernew->id); - } + /// update forum track preference + useredit_update_trackforums($user, $usernew); - //TODO: Save the custom profile fields + // save custom profile fields data + profile_save_data($usernew); // Override old $USER session variable $usernew = (array)get_record('user', 'id', $newuser->id); // reload from db diff --git a/user/edit_form.php b/user/edit_form.php index 38c888ebcd..f7d7173225 100644 --- a/user/edit_form.php +++ b/user/edit_form.php @@ -19,7 +19,8 @@ class user_edit_form extends moodleform { /// Print the required moodle fields first $mform->addElement('header', 'moodle', $strrequired); - require('edit_form_common.php'); + /// shared fields + useredit_shared_definition($mform); /// extra settigs $mform->addRule('description', $strrequired, 'required', null, 'client'); @@ -91,7 +92,7 @@ class user_edit_form extends moodleform { } else if (($usernew->email !== $user->email) and record_exists('user', 'email', $usernew->email, 'mnethostid', $CFG->mnet_localhost_id)) { $err['email'] = get_string('emailexists'); } - + if ($usernew->email === $user->email and over_bounce_threshold($user)) { $err['email'] = get_string('toomanybounces'); } diff --git a/user/editadvanced.php b/user/editadvanced.php index bebcc019ce..5a2c1b5564 100644 --- a/user/editadvanced.php +++ b/user/editadvanced.php @@ -4,6 +4,7 @@ require_once($CFG->libdir.'/gdlib.php'); require_once($CFG->libdir.'/adminlib.php'); require_once($CFG->dirroot.'/user/editadvanced_form.php'); + require_once($CFG->dirroot.'/user/editlib.php'); require_once($CFG->dirroot.'/user/profile/lib.php'); $id = optional_param('id', $USER->id, PARAM_INT); // user id; -1 if creating new user @@ -44,13 +45,9 @@ print_error('guestnoeditprofileother'); } - //load preferences - if (!empty($user->id) and $preferences = get_user_preferences(null, null, $user->id)) { - foreach($preferences as $name=>$value) { - $user->{'preference_'.$name} = $value; - } - } - + //load user preferences + useredit_load_preferences($user); + //Load custom profile fields data profile_load_data($user); @@ -64,7 +61,7 @@ if (empty($usernew->auth)) { //user editing self $authplugin = get_auth_plugin($user->auth); - unset($usernew->auth); + unset($usernew->auth); //can not change/remove } else { $authplugin = get_auth_plugin($usernew->auth); } @@ -73,7 +70,7 @@ $usernew->timemodified = time(); if ($usernew->id == -1) { - //TODO check out that it makes sense to create account with this auth plugin and what to do with the password + //TODO check out if it makes sense to create account with this auth plugin and what to do with the password unset($usernew->id); $usernew->mnethostid = $CFG->mnet_localhost_id; // always local user $usernew->confirmed = 1; @@ -110,37 +107,19 @@ } } - //update preferences - $ua = (array)$usernew; - foreach($ua as $key=>$value) { - if (strpos($key, 'preference_') === 0) { - $name = substr($key, strlen('preference_')); - set_user_preference($name, $value, $usernew->id); - } - } + useredit_update_user_preference($usernew); //update user picture if (!empty($CFG->gdversion)) { - if ($usernew->deletepicture) { - //TODO - delete the files - set_field('user', 'picture', 0, 'id', $usernew->id); - } else if ($usernew->picture = save_profile_image($usernew->id, $userform->get_um(), 'users')) { - set_field('user', 'picture', 1, 'id', $usernew->id); - } + useredit_update_picture($usernew, $userform); } // update mail bounces - if ($user->email !== $usernew->email) { - set_bounce_count($usernew,true); - set_send_count($usernew,true); - } + useredit_update_bounces($user, $usernew); - /// Update forum track preference. - if (($usernew->trackforums != $user->trackforums) and !$usernew->trackforums) { - require_once($CFG->dirroot.'/mod/forum/lib.php'); - forum_tp_delete_read_records($usernew->id); - } + /// update forum track preference + useredit_update_trackforums($user, $usernew); // save custom profile fields data profile_save_data($usernew); @@ -155,7 +134,7 @@ unset($USER->newadminuser); // redirect to admin/ to continue with installation redirect("$CFG->wwwroot/$CFG->admin/"); - } else { + } else { redirect("$CFG->wwwroot/user/view.php?id=$USER->id&course=$course->id"); } } else { diff --git a/user/editadvanced_form.php b/user/editadvanced_form.php index 88a9879418..ef5ebe7425 100644 --- a/user/editadvanced_form.php +++ b/user/editadvanced_form.php @@ -39,7 +39,8 @@ class user_editadvanced_form extends moodleform { $mform->addElement('checkbox', 'preference_auth_forcepasswordchange', get_string('forcepasswordchange')); //TODO: add missing help - user will be forced to change password - require('edit_form_common.php'); + /// shared fields + useredit_shared_definition($mform); /// Next the customisable profile fields profile_definition($mform); diff --git a/user/edit_form_common.php b/user/editlib.php similarity index 83% rename from user/edit_form_common.php rename to user/editlib.php index 50990463e2..b7eb065fdc 100644 --- a/user/edit_form_common.php +++ b/user/editlib.php @@ -1,8 +1,60 @@ id) and $preferences = get_user_preferences(null, null, $user->id)) { + foreach($preferences as $name=>$value) { + $user->{'preference_'.$name} = $value; + } + } +} + +function useredit_update_user_preference($usernew) { + $ua = (array)$usernew; + foreach($ua as $key=>$value) { + if (strpos($key, 'preference_') === 0) { + $name = substr($key, strlen('preference_')); + set_user_preference($name, $value, $usernew->id); + } + } +} + +function useredit_update_picture(&$usernew, &$userform) { + if (isset($usernew->deletepicture) and $usernew->deletepicture) { + //TODO - delete the file + set_field('user', 'picture', 0, 'id', $usernew->id); + } else if ($usernew->picture = save_profile_image($usernew->id, $userform->get_um(), 'users')) { + set_field('user', 'picture', 1, 'id', $usernew->id); + } +} + +function useredit_update_bounces($user, $usernew) { + if (!isset($usernew->email)) { + //locked field + return; } + if ($user->email !== $usernew->email) { + set_bounce_count($usernew,true); + set_send_count($usernew,true); + } +} + +function useredit_update_trackforums($user, $usernew) { + global $CFG; + if (!isset($usernew->trackforums)) { + //locked field + return; + } + if (($usernew->trackforums != $user->trackforums) and !$usernew->trackforums) { + require_once($CFG->dirroot.'/mod/forum/lib.php'); + forum_tp_delete_read_records($usernew->id); + } +} + +function useredit_shared_definition(&$mform) { + global $CFG; + + $strrequired = get_string('required'); $mform->addElement('text', 'firstname', get_string('firstname'), 'maxlength="100" size="30"'); $mform->addRule('firstname', $strrequired, 'required', null, 'client'); @@ -195,6 +247,6 @@ $mform->addElement('text', 'address', get_string('address'), 'maxlength="70" size="25"'); $mform->setType('address', PARAM_MULTILANG); - +} ?> \ No newline at end of file