MDL-8590 auth cleanup - part 7 and MDL-8598
authorskodak <skodak>
Wed, 21 Feb 2007 21:48:48 +0000 (21:48 +0000)
committerskodak <skodak>
Wed, 21 Feb 2007 21:48:48 +0000 (21:48 +0000)
lang/en_utf8/auth.php
lang/en_utf8/moodle.php
lib/db/upgrade.php
lib/moodlelib.php

index a5384ab53d4cc4eaf038236d830026b9da900426..fd7d1a1df91e6d3ffa3021e92256b4011243b5a9 100644 (file)
@@ -312,6 +312,8 @@ $string['guestloginbutton'] = 'Guest login button';
 $string['instructions'] = 'Instructions';
 $string['internal'] = 'Internal';
 $string['md5'] = 'MD5 hash';
+$string['nopasswordchange'] = 'Password can not be changed';
+$string['nopasswordchangeforced'] ='You cannot proceed without changing your password, however there is no available page for changing it. Please contact your Moodle Administrator.';
 $string['passwordhandling'] = 'Password field handling';
 $string['plaintext'] = 'Plain text';
 $string['selfregistration'] = 'Self registration';
index d720199f64281871fb9dc202c642477aae362e34..fcfb467174e69c007203bd18814e824f4e11a2b7 100644 (file)
@@ -484,6 +484,31 @@ If you continue to have difficulty, please contact the site administrator.</p>';
 $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
index 639078d72daaec21c9a7bcdd3b383b6fae3c86f8..dbf48477422bce19b8477d308101736979dd3d24 100644 (file)
@@ -138,9 +138,6 @@ function xmldb_main_upgrade($oldversion=0) {
             if (strpos($k, 'auth_') !== 0) {
                 continue;
             }
-            if ($k == 'auth_instructions') {
-                continue; //keep as global auth option
-            }
             $authsetting = substr($k, 5);
             foreach ($authplugins as $auth) {
                 if (strpos($authsetting, $auth) !== 0) {
index 4293915653b163d125123bf7e4aa640e1df6b97d..ba37c87790240048ebf479c84a50a5872e25b5d4 100644 (file)
@@ -1655,18 +1655,20 @@ function require_login($courseorid=0, $autologinguest=true, $cm=null) {
     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'));
         }
     }
 
@@ -2376,18 +2378,12 @@ function is_enabled_auth($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.");
@@ -2406,7 +2402,6 @@ function get_auth_plugin($auth = '') {
  * @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
@@ -3568,6 +3563,48 @@ function send_password_change_confirmation_email($user) {
 
 }
 
+/**
+ * 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.
@@ -4051,8 +4088,8 @@ function clean_filename($string) {
 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;