From f0040e7dafbb1243dc5608ba88d11eba8c02664c Mon Sep 17 00:00:00 2001 From: Yuliya Bozhko Date: Wed, 15 Jan 2014 16:25:48 +1300 Subject: [PATCH] MDL-43621 badges: Fix has_awards() result when deleted users are the only recipients of a badge --- lib/badgeslib.php | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/lib/badgeslib.php b/lib/badgeslib.php index 40bd0f73a5c..41b59c3ddf2 100644 --- a/lib/badgeslib.php +++ b/lib/badgeslib.php @@ -331,10 +331,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; } /**