. /** * Reset forgotten password form definition. * * @package core * @subpackage auth * @copyright 2006 Petr Skoda {@link http://skodak.org} * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ defined('MOODLE_INTERNAL') || die(); require_once $CFG->libdir.'/formslib.php'; class login_forgot_password_form extends moodleform { function definition() { $mform = $this->_form; $mform->addElement('header', '', get_string('searchbyusername'), ''); $mform->addElement('text', 'username', get_string('username')); $mform->setType('username', PARAM_RAW); $submitlabel = get_string('search'); $mform->addElement('submit', 'submitbuttonusername', $submitlabel); $mform->addElement('header', '', get_string('searchbyemail'), ''); $mform->addElement('text', 'email', get_string('email')); $mform->setType('email', PARAM_RAW); $submitlabel = get_string('search'); $mform->addElement('submit', 'submitbuttonemail', $submitlabel); } function validation($data, $files) { global $CFG, $DB; $errors = parent::validation($data, $files); if ((!empty($data['username']) and !empty($data['email'])) or (empty($data['username']) and empty($data['email']))) { $errors['username'] = get_string('usernameoremail'); $errors['email'] = get_string('usernameoremail'); } else if (!empty($data['email'])) { if (!validate_email($data['email'])) { $errors['email'] = get_string('invalidemail'); } else if ($DB->count_records('user', array('email'=>$data['email'])) > 1) { $errors['email'] = get_string('forgottenduplicate'); } else { if ($user = get_complete_user_data('email', $data['email'])) { if (empty($user->confirmed)) { $errors['email'] = get_string('confirmednot'); } } if (!$user and empty($CFG->protectusernames)) { $errors['email'] = get_string('emailnotfound'); } } } else { if ($user = get_complete_user_data('username', $data['username'])) { if (empty($user->confirmed)) { $errors['email'] = get_string('confirmednot'); } } if (!$user and empty($CFG->protectusernames)) { $errors['username'] = get_string('usernamenotfound'); } } return $errors; } }