#111 Fixed task creating duplicate rows in issue table
This commit is contained in:
parent
38d023b8db
commit
4d21173247
4 changed files with 51 additions and 8 deletions
|
@ -86,16 +86,14 @@ class email_certificate_task extends \core\task\scheduled_task {
|
|||
$info->coursename = $coursename;
|
||||
$info->certificatename = $certificatename;
|
||||
|
||||
// Get a list of issues that have not yet been emailed.
|
||||
// Get a list of all the issues.
|
||||
$userfields = get_all_user_name_fields(true, 'u');
|
||||
$sql = "SELECT u.id, u.username, $userfields, u.email, ci.id as issueid
|
||||
$sql = "SELECT u.id, u.username, $userfields, u.email, ci.id as issueid, ci.emailed
|
||||
FROM {customcert_issues} ci
|
||||
JOIN {user} u
|
||||
ON ci.userid = u.id
|
||||
WHERE ci.customcertid = :customcertid
|
||||
AND emailed = :emailed";
|
||||
$issuedusers = $DB->get_records_sql($sql, array('customcertid' => $customcert->id,
|
||||
'emailed' => 0));
|
||||
WHERE ci.customcertid = :customcertid";
|
||||
$issuedusers = $DB->get_records_sql($sql, array('customcertid' => $customcert->id));
|
||||
|
||||
// Now, get a list of users who can access the certificate but have not yet.
|
||||
$enrolledusers = get_enrolled_users(\context_course::instance($customcert->courseid), 'mod/customcert:view');
|
||||
|
@ -137,9 +135,17 @@ class email_certificate_task extends \core\task\scheduled_task {
|
|||
|
||||
// Add them to the array so we email them.
|
||||
$enroluser->issueid = $issueid;
|
||||
$enroluser->emailed = 0;
|
||||
$issuedusers[] = $enroluser;
|
||||
}
|
||||
|
||||
// Remove all the users who have already been emailed.
|
||||
foreach ($issuedusers as $key => $issueduser) {
|
||||
if ($issueduser->emailed) {
|
||||
unset($issuedusers[$key]);
|
||||
}
|
||||
}
|
||||
|
||||
// Now, email the people we need to.
|
||||
if ($issuedusers) {
|
||||
foreach ($issuedusers as $user) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue