diff --git a/admin/user.php b/admin/user.php index 0caf98f6b6d..f6ab61f6bf3 100644 --- a/admin/user.php +++ b/admin/user.php @@ -19,6 +19,7 @@ $suspend = optional_param('suspend', 0, PARAM_INT); $unsuspend = optional_param('unsuspend', 0, PARAM_INT); $unlock = optional_param('unlock', 0, PARAM_INT); + $resendemail = optional_param('resendemail', 0, PARAM_INT); admin_externalpage_setup('editusers'); @@ -37,6 +38,7 @@ $strunsuspend = get_string('unsuspenduser', 'admin'); $strunlock = get_string('unlockaccount', 'admin'); $strconfirm = get_string('confirm'); + $strresendemail = get_string('resendemail'); $returnurl = new moodle_url('/admin/user.php', array('sort' => $sort, 'dir' => $dir, 'perpage' => $perpage, 'page'=>$page)); @@ -59,6 +61,24 @@ redirect($returnurl, get_string('usernotconfirmed', '', fullname($user, true))); } + } else if ($resendemail && confirm_sesskey()) { + if (!$user = $DB->get_record('user', ['id' => $resendemail, 'mnethostid' => $CFG->mnet_localhost_id, 'deleted' => 0])) { + print_error('nousers'); + } + + // Prevent spamming users who are already confirmed. + if ($user->confirmed) { + print_error('alreadyconfirmed'); + } + + $returnmsg = get_string('emailconfirmsentsuccess'); + $messagetype = \core\output\notification::NOTIFY_SUCCESS; + if (!send_confirmation_email($user)) { + $returnmsg = get_string('emailconfirmsentfailure'); + $messagetype = \core\output\notification::NOTIFY_ERROR; + } + + redirect($returnurl, $returnmsg, null, $messagetype); } else if ($delete and confirm_sesskey()) { // Delete a selected user, after confirmation require_capability('moodle/user:delete', $sitecontext); @@ -362,6 +382,13 @@ } else { $lastcolumn = "".get_string('confirm').""; } + + $lastcolumn .= ' | ' . html_writer::link(new moodle_url($returnurl, + [ + 'resendemail' => $user->id, + 'sesskey' => sesskey() + ] + ), $strresendemail); } if ($user->lastaccess) { diff --git a/lang/en/moodle.php b/lang/en/moodle.php index b5c75df4d68..2c78274d2c8 100644 --- a/lang/en/moodle.php +++ b/lang/en/moodle.php @@ -1651,6 +1651,7 @@ $string['requestedcourses'] = 'Requested courses'; $string['requestreason'] = 'Reason for course request'; $string['required'] = 'Required'; $string['requirespayment'] = 'This course requires payment for access'; +$string['resendemail'] = 'Resend email'; $string['reset'] = 'Reset'; $string['resetcomponent'] = 'Component'; $string['resetcourse'] = 'Reset course';