$string['emailpasswordconfirmsent'] = 'An email should have been sent to your address at <b>$a</b>.
<br />It contains easy instructions to confirm and complete this password change.
If you continue to have difficulty, contact the site administrator.';
+$string['emailpasswordchangeinfo'] = 'Hi $a->firstname,
+
+Someone (probably you) has requested a new password for your
+account on \'$a->sitename\'.
+
+To change your password, please go to the following web address:
+
+$a->link
+
+In most mail programs, this should appear as a blue link
+which you can just click on. If that doesn\'t work,
+then cut and paste the address into the address
+line at the top of your web browser window.
+
+If you need help, please contact the site administrator,
+$a->admin';
+$string['emailpasswordchangeinfofail'] = 'Hi $a->firstname,
+
+Someone (probably you) has requested a new password for your
+account on \'$a->sitename\'.
+
+Unfortunately passwords can not be reset on this site,
+please contact the site administrator,
+$a->admin';
+$string['emailpasswordchangeinfosubject'] = '$a: Change password information';
$string['emailpasswordsent'] = 'Thank you for confirming the change of password.
An email containing your new password has been sent to your address at<br /><b>$a->email</b>.<br />
The new password was automatically generated - you might like to
if (!empty($USER->preference['auth_forcepasswordchange']) && empty($USER->realuser)) {
if ($userauth->can_change_password()) {
$SESSION->wantsurl = $FULLME;
- if (empty($CFG->loginhttps)) {
- redirect($CFG->wwwroot .'/login/change_password.php');
+ if (method_exists($userauth, 'change_password_url') and $userauth->change_password_url()) {
+ //use plugin custom url
+ redirect($userauth->change_password_url());
} else {
- $wwwroot = str_replace('http:','https:', $CFG->wwwroot);
- redirect($wwwroot .'/login/change_password.php');
+ //use moodle internal method
+ if (empty($CFG->loginhttps)) {
+ redirect($CFG->wwwroot .'/login/change_password.php');
+ } else {
+ $wwwroot = str_replace('http:','https:', $CFG->wwwroot);
+ redirect($wwwroot .'/login/change_password.php');
+ }
}
- } else if($userauth->change_password_url()) {
- redirect($userauth->change_password_url());
} else {
- error('You cannot proceed without changing your password.
- However there is no available page for changing it.
- Please contact your Moodle Administrator.');
+ error(get_strin('nopasswordchangeforced', 'auth'));
}
}
* Returns an authentication plugin instance.
*
* @uses $CFG
- * @param string $auth Form of authentication required. Defaults to the
- * global setting in {@link $CFG}.
+ * @param string $auth name of authentication plugin
* @return object An instance of the required authentication plugin.
*/
-function get_auth_plugin($auth = '') {
+function get_auth_plugin($auth) {
global $CFG;
- // use the manual if not specified
- if (empty($auth)) {
- $auth = 'manual';
- }
-
// check the plugin exists first
if (! exists_auth_plugin($auth)) {
error("Authentication plugin '$auth' not found.");
* @uses $CFG
* @param string $auth Form of authentication required
* @return bool
- * @todo Outline auth types and provide code example
*/
function is_internal_auth($auth) {
$authplugin = get_auth_plugin($auth); // throws error if bad $auth
}
+/**
+ * send_password_change_info.
+ *
+ * @uses $CFG
+ * @param user $user A {@link $USER} object
+ * @return bool|string Returns "true" if mail was sent OK, "emailstop" if email
+ * was blocked by user and "false" if there was another sort of error.
+ */
+function send_password_change_info($user) {
+
+ global $CFG;
+
+ $site = get_site();
+ $from = get_admin();
+
+ $data = new object();
+ $data->firstname = $user->firstname;
+ $data->sitename = $site->fullname;
+ $data->admin = fullname($from).' ('. $from->email .')';
+
+ $userauth = get_auth_plugin($user->auth);
+ if ($userauth->can_change_password() and method_exists($userauth, 'change_password_url') and $userauth->change_password_url()) {
+ // we have some external url for password cahnging
+ $data->link .= $userauth->change_password_url();
+
+ } else {
+ //no way to change password, sorry
+ $data->link = '';
+ }
+
+ if (!empty($data->link)) {
+ $message = get_string('emailpasswordchangeinfo', '', $data);
+ $subject = get_string('emailpasswordchangeinfosubject', '', $site->fullname);
+ } else {
+ $message = get_string('emailpasswordchangeinfofail', '', $data);
+ $subject = get_string('emailpasswordchangeinfosubject', '', $site->fullname);
+ }
+
+ return email_to_user($user, $from, $subject, $message);
+
+}
+
/**
* Check that an email is allowed. It returns an error message if there
* was a problem.
function current_language() {
global $CFG, $USER, $SESSION, $COURSE;
- if (!empty($OURSE->lang)) { // Course language can override all other settings for this page
- $return = $OURSE->lang;
+ if ($COURSE->id != SITEID and !empty($COURSE->lang)) { // Course language can override all other settings for this page
+ $return = $COURSE->lang;
} else if (!empty($SESSION->lang)) { // Session language can override other settings
$return = $SESSION->lang;