diff --git a/badges/recipients.php b/badges/recipients.php index 4eac9545623..9d3ef91312a 100644 --- a/badges/recipients.php +++ b/badges/recipients.php @@ -87,7 +87,7 @@ if ($badge->has_manual_award_criteria() && has_capability('moodle/badges:awardba $sql = "SELECT b.userid, b.dateissued, b.uniquehash, u.firstname, u.lastname FROM {badge_issued} b INNER JOIN {user} u ON b.userid = u.id - WHERE b.badgeid = :badgeid + WHERE b.badgeid = :badgeid AND u.deleted = 0 ORDER BY $sortby $sorthow"; $totalcount = $DB->count_records('badge_issued', array('badgeid' => $badge->id)); diff --git a/badges/renderer.php b/badges/renderer.php index b7b01480f99..10dbdfc478f 100644 --- a/badges/renderer.php +++ b/badges/renderer.php @@ -664,7 +664,9 @@ class core_badges_renderer extends plugin_renderer_base { } if (has_capability('moodle/badges:viewawarded', $context)) { - $awarded = $DB->count_records('badge_issued', array('badgeid' => $badgeid)); + $awarded = $DB->count_records_sql('SELECT COUNT(b.userid) + FROM {badge_issued} b INNER JOIN {user} u ON b.userid = u.id + WHERE b.badgeid = :badgeid AND u.deleted = 0', array('badgeid' => $badgeid)); $row[] = new tabobject('awards', new moodle_url('/badges/recipients.php', array('id' => $badgeid)), get_string('bawards', 'badges', $awarded) diff --git a/lib/badgeslib.php b/lib/badgeslib.php index 03c5539e18a..7a6480c9a65 100644 --- a/lib/badgeslib.php +++ b/lib/badgeslib.php @@ -333,10 +333,11 @@ class badge { */ public function has_awards() { global $DB; - if ($DB->record_exists('badge_issued', array('badgeid' => $this->id))) { - return true; - } - return false; + $awarded = $DB->record_exists_sql('SELECT b.uniquehash + FROM {badge_issued} b INNER JOIN {user} u ON b.userid = u.id + WHERE b.badgeid = :badgeid AND u.deleted = 0', array('badgeid' => $this->id)); + + return $awarded; } /** @@ -351,7 +352,7 @@ class badge { 'SELECT b.userid, b.dateissued, b.uniquehash, u.firstname, u.lastname FROM {badge_issued} b INNER JOIN {user} u ON b.userid = u.id - WHERE b.badgeid = :badgeid', array('badgeid' => $this->id)); + WHERE b.badgeid = :badgeid AND u.deleted = 0', array('badgeid' => $this->id)); return $awards; } @@ -765,7 +766,9 @@ function badges_get_badges($type, $courseid = 0, $sort = '', $dir = '', $page = $badges[$r->id]->dateissued = $r->dateissued; $badges[$r->id]->uniquehash = $r->uniquehash; } else { - $badges[$r->id]->awards = $DB->count_records('badge_issued', array('badgeid' => $badge->id)); + $badges[$r->id]->awards = $DB->count_records_sql('SELECT COUNT(b.userid) + FROM {badge_issued} b INNER JOIN {user} u ON b.userid = u.id + WHERE b.badgeid = :badgeid AND u.deleted = 0', array('badgeid' => $badge->id)); $badges[$r->id]->statstring = $badge->get_status_name(); } }