/** * Call to complete the user login process after authenticate_user_login() * has succeeded. It will setup the $USER variable and other required bits * and pieces. * * NOTE: * - It will NOT log anything -- up to the caller to decide what to log. * * * * @uses $CFG, $USER * @param string $user obj * @return user|flase A {@link $USER} object or false if error */ function complete_user_login($user) { global $CFG, $USER; $USER = $user; // this is required because we need to access preferences here! if (!empty($CFG->regenloginsession)) { // please note this setting may break some auth plugins session_regenerate_id(); } reload_user_preferences(); update_user_login_times(); if (empty($CFG->nolastloggedin)) { set_moodle_cookie($USER->username); } else { // do not store last logged in user in cookie // auth plugins can temporarily override this from loginpage_hook() // do not save $CFG->nolastloggedin in database! set_moodle_cookie('nobody'); } set_login_session_preferences(); // Call enrolment plugins check_enrolment_plugins($user); /// This is what lets the user do anything on the site :-) load_all_capabilities(); /// Select password change url $userauth = get_auth_plugin($USER->auth); /// check whether the user should be changing password if (get_user_preferences('auth_forcepasswordchange', false)) { if ($userauth->can_change_password()) { if ($changeurl = $userauth->change_password_url()) { redirect($changeurl); } else { redirect($CFG->httpswwwroot . '/login/change_password.php'); } } else { print_error('nopasswordchangeforced', 'auth'); } } return $USER; }
/** * If no arguments are supplied this function will return * all of the current user preferences as an array. * If a name is specified then this function * attempts to return that particular preference value. If * none is found, then the optional value $default is returned, * otherwise NULL. * @param string $name Name of the key to use in finding a preference value * @param string $default Value to be returned if the $name key is not set in the user preferences * @param int $otheruserid A moodle user ID * @uses $USER * @return string */ function get_user_preferences($name = NULL, $default = NULL, $otheruserid = NULL) { global $USER; if (!isset($USER->preference)) { reload_user_preferences(); } if (empty($otheruserid)) { $userid = $USER->id; } else { $userid = $otheruserid; } if ($userid == $USER->id) { $preference = $USER->preference; } else { $preference = array(); if ($prefdata = get_records('user_preferences', 'userid', $userid)) { foreach ($prefdata as $pref) { $preference[$pref->name] = $pref->value; } } } if (empty($name)) { return $preference; // All values } else { if (array_key_exists($name, $preference)) { return $preference[$name]; // The single value } else { return $default; // Default value (or NULL) } } }