Moodle  2.2.1
http://www.collinsharper.com
C:/xampp/htdocs/moodle/user/editadvanced.php
Go to the documentation of this file.
00001 <?php
00002 
00003 // This file is part of Moodle - http://moodle.org/
00004 //
00005 // Moodle is free software: you can redistribute it and/or modify
00006 // it under the terms of the GNU General Public License as published by
00007 // the Free Software Foundation, either version 3 of the License, or
00008 // (at your option) any later version.
00009 //
00010 // Moodle is distributed in the hope that it will be useful,
00011 // but WITHOUT ANY WARRANTY; without even the implied warranty of
00012 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00013 // GNU General Public License for more details.
00014 //
00015 // You should have received a copy of the GNU General Public License
00016 // along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
00017 
00026 require_once('../config.php');
00027 require_once($CFG->libdir.'/gdlib.php');
00028 require_once($CFG->libdir.'/adminlib.php');
00029 require_once($CFG->dirroot.'/user/editadvanced_form.php');
00030 require_once($CFG->dirroot.'/user/editlib.php');
00031 require_once($CFG->dirroot.'/user/profile/lib.php');
00032 
00033 //HTTPS is required in this page when $CFG->loginhttps enabled
00034 $PAGE->https_required();
00035 
00036 $id     = optional_param('id', $USER->id, PARAM_INT);    // user id; -1 if creating new user
00037 $course = optional_param('course', SITEID, PARAM_INT);   // course id (defaults to Site)
00038 
00039 $PAGE->set_url('/user/editadvanced.php', array('course'=>$course, 'id'=>$id));
00040 
00041 $course = $DB->get_record('course', array('id'=>$course), '*', MUST_EXIST);
00042 
00043 if (!empty($USER->newadminuser)) {
00044     $PAGE->set_course($SITE);
00045     $PAGE->set_pagelayout('maintenance');
00046 } else {
00047     require_login($course);
00048     $PAGE->set_pagelayout('admin');
00049 }
00050 
00051 if ($course->id == SITEID) {
00052     $coursecontext = get_context_instance(CONTEXT_SYSTEM);   // SYSTEM context
00053 } else {
00054     $coursecontext = get_context_instance(CONTEXT_COURSE, $course->id);   // Course context
00055 }
00056 $systemcontext = get_context_instance(CONTEXT_SYSTEM);
00057 
00058 if ($id == -1) {
00059     // creating new user
00060     $user = new stdClass();
00061     $user->id = -1;
00062     $user->auth = 'manual';
00063     $user->confirmed = 1;
00064     $user->deleted = 0;
00065     require_capability('moodle/user:create', $systemcontext);
00066     admin_externalpage_setup('addnewuser', '', array('id' => -1));
00067 } else {
00068     // editing existing user
00069     require_capability('moodle/user:update', $systemcontext);
00070     $user = $DB->get_record('user', array('id'=>$id), '*', MUST_EXIST);
00071     $PAGE->set_context(get_context_instance(CONTEXT_USER, $user->id));
00072     if ($user->id == $USER->id) {
00073         if ($course->id != SITEID && $node = $PAGE->navigation->find($course->id, navigation_node::TYPE_COURSE)) {
00074             $node->make_active();
00075             $PAGE->navbar->includesettingsbase = true;
00076         }
00077     } else {
00078         $PAGE->navigation->extend_for_user($user);
00079     }
00080 }
00081 
00082 // remote users cannot be edited
00083 if ($user->id != -1 and is_mnet_remote_user($user)) {
00084     redirect($CFG->wwwroot . "/user/view.php?id=$id&course={$course->id}");
00085 }
00086 
00087 if ($user->id != $USER->id and is_siteadmin($user) and !is_siteadmin($USER)) {  // Only admins may edit other admins
00088     print_error('useradmineditadmin');
00089 }
00090 
00091 if (isguestuser($user->id)) { // the real guest user can not be edited
00092     print_error('guestnoeditprofileother');
00093 }
00094 
00095 if ($user->deleted) {
00096     echo $OUTPUT->header();
00097     echo $OUTPUT->heading(get_string('userdeleted'));
00098     echo $OUTPUT->footer();
00099     die;
00100 }
00101 
00102 //load user preferences
00103 useredit_load_preferences($user);
00104 
00105 //Load custom profile fields data
00106 profile_load_data($user);
00107 
00108 //User interests
00109 if (!empty($CFG->usetags)) {
00110     require_once($CFG->dirroot.'/tag/lib.php');
00111     $user->interests = tag_get_tags_array('user', $id);
00112 }
00113 
00114 if ($user->id !== -1) {
00115     $usercontext = get_context_instance(CONTEXT_USER, $user->id);
00116     $editoroptions = array(
00117         'maxfiles'   => EDITOR_UNLIMITED_FILES,
00118         'maxbytes'   => $CFG->maxbytes,
00119         'trusttext'  => false,
00120         'forcehttps' => false,
00121         'context'    => $usercontext
00122     );
00123 
00124     $user = file_prepare_standard_editor($user, 'description', $editoroptions, $usercontext, 'user', 'profile', 0);
00125 } else {
00126     $usercontext = null;
00127     // This is a new user, we don't want to add files here
00128     $editoroptions = array(
00129         'maxfiles'=>0,
00130         'maxbytes'=>0,
00131         'trusttext'=>false,
00132         'forcehttps'=>false,
00133         'context' => $coursecontext
00134     );
00135 }
00136 
00137 //create form
00138 $userform = new user_editadvanced_form(null, array('editoroptions'=>$editoroptions));
00139 $userform->set_data($user);
00140 
00141 if ($usernew = $userform->get_data()) {
00142     add_to_log($course->id, 'user', 'update', "view.php?id=$user->id&course=$course->id", '');
00143 
00144     if (empty($usernew->auth)) {
00145         //user editing self
00146         $authplugin = get_auth_plugin($user->auth);
00147         unset($usernew->auth); //can not change/remove
00148     } else {
00149         $authplugin = get_auth_plugin($usernew->auth);
00150     }
00151 
00152     $usernew->timemodified = time();
00153 
00154     if ($usernew->id == -1) {
00155         //TODO check out if it makes sense to create account with this auth plugin and what to do with the password
00156         unset($usernew->id);
00157         $usernew = file_postupdate_standard_editor($usernew, 'description', $editoroptions, null, 'user', 'profile', null);
00158         $usernew->mnethostid = $CFG->mnet_localhost_id; // always local user
00159         $usernew->confirmed  = 1;
00160         $usernew->timecreated = time();
00161         $usernew->password = hash_internal_user_password($usernew->newpassword);
00162         $usernew->id = $DB->insert_record('user', $usernew);
00163         $usercreated = true;
00164 
00165     } else {
00166         $usernew = file_postupdate_standard_editor($usernew, 'description', $editoroptions, $usercontext, 'user', 'profile', 0);
00167         $DB->update_record('user', $usernew);
00168         // pass a true $userold here
00169         if (! $authplugin->user_update($user, $userform->get_data())) {
00170             // auth update failed, rollback for moodle
00171             $DB->update_record('user', $user);
00172             print_error('cannotupdateuseronexauth', '', '', $user->auth);
00173         }
00174 
00175         //set new password if specified
00176         if (!empty($usernew->newpassword)) {
00177             if ($authplugin->can_change_password()) {
00178                 if (!$authplugin->user_update_password($usernew, $usernew->newpassword)){
00179                     print_error('cannotupdatepasswordonextauth', '', '', $usernew->auth);
00180                 }
00181                 unset_user_preference('create_password', $usernew); // prevent cron from generating the password
00182             }
00183         }
00184 
00185         // force logout if user just suspended
00186         if (isset($usernew->suspended) and $usernew->suspended and !$user->suspended) {
00187             session_kill_user($user->id);
00188         }
00189 
00190         $usercreated = false;
00191     }
00192 
00193     $usercontext = get_context_instance(CONTEXT_USER, $usernew->id);
00194 
00195     //update preferences
00196     useredit_update_user_preference($usernew);
00197 
00198     // update tags
00199     if (!empty($CFG->usetags) and empty($USER->newadminuser)) {
00200         useredit_update_interests($usernew, $usernew->interests);
00201     }
00202 
00203     //update user picture
00204     if (!empty($CFG->gdversion) and empty($USER->newadminuser)) {
00205         useredit_update_picture($usernew, $userform);
00206     }
00207 
00208     // update mail bounces
00209     useredit_update_bounces($user, $usernew);
00210 
00211     // update forum track preference
00212     useredit_update_trackforums($user, $usernew);
00213 
00214     // save custom profile fields data
00215     profile_save_data($usernew);
00216 
00217     // reload from db
00218     $usernew = $DB->get_record('user', array('id'=>$usernew->id));
00219 
00220     // trigger events
00221     if ($usercreated) {
00222         events_trigger('user_created', $usernew);
00223     } else {
00224         events_trigger('user_updated', $usernew);
00225     }
00226 
00227     if ($user->id == $USER->id) {
00228         // Override old $USER session variable
00229         foreach ((array)$usernew as $variable => $value) {
00230             $USER->$variable = $value;
00231         }
00232         // preload custom fields
00233         profile_load_custom_fields($USER);
00234 
00235         if (!empty($USER->newadminuser)) {
00236             unset($USER->newadminuser);
00237             // apply defaults again - some of them might depend on admin user info, backup, roles, etc.
00238             admin_apply_default_settings(NULL , false);
00239             // redirect to admin/ to continue with installation
00240             redirect("$CFG->wwwroot/$CFG->admin/");
00241         } else {
00242             redirect("$CFG->wwwroot/user/view.php?id=$USER->id&course=$course->id");
00243         }
00244     } else {
00245         session_gc(); // remove stale sessions
00246         redirect("$CFG->wwwroot/$CFG->admin/user.php");
00247     }
00248     //never reached
00249 }
00250 
00251 // make sure we really are on the https page when https login required
00252 $PAGE->verify_https_required();
00253 
00254 
00256 if ($user->id == -1 or ($user->id != $USER->id)) {
00257     if ($user->id == -1) {
00258         echo $OUTPUT->header();
00259     } else {
00260         $PAGE->set_heading($SITE->fullname);
00261         echo $OUTPUT->header();
00262         $userfullname = fullname($user, true);
00263         echo $OUTPUT->heading($userfullname);
00264     }
00265 } else if (!empty($USER->newadminuser)) {
00266     $strinstallation = get_string('installation', 'install');
00267     $strprimaryadminsetup = get_string('primaryadminsetup');
00268 
00269     $PAGE->navbar->add($strprimaryadminsetup);
00270     $PAGE->set_title($strinstallation);
00271     $PAGE->set_heading($strinstallation);
00272     $PAGE->set_cacheable(false);
00273 
00274     echo $OUTPUT->header();
00275     echo $OUTPUT->box(get_string('configintroadmin', 'admin'), 'generalbox boxwidthnormal boxaligncenter');
00276     echo '<br />';
00277 } else {
00278     $streditmyprofile = get_string('editmyprofile');
00279     $strparticipants  = get_string('participants');
00280     $strnewuser       = get_string('newuser');
00281     $userfullname     = fullname($user, true);
00282 
00283     $PAGE->set_title("$course->shortname: $streditmyprofile");
00284     $PAGE->set_heading($course->fullname);
00285 
00286     echo $OUTPUT->header();
00287     echo $OUTPUT->heading($userfullname);
00288 }
00289 
00291 $userform->display();
00292 
00294 echo $OUTPUT->footer();
00295 
 All Data Structures Namespaces Files Functions Variables Enumerations