From f7d247490750ec939098b85d5d41fb41a70d1670 Mon Sep 17 00:00:00 2001 From: Simey Lameze Date: Wed, 31 Aug 2016 14:07:38 +0800 Subject: [PATCH] MDL-53893 core_badges: Add strictness to manual badge criteria --- badges/criteria/award_criteria_manual.php | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/badges/criteria/award_criteria_manual.php b/badges/criteria/award_criteria_manual.php index fd0ad2ead5d..51a7959d0ad 100644 --- a/badges/criteria/award_criteria_manual.php +++ b/badges/criteria/award_criteria_manual.php @@ -207,12 +207,15 @@ class award_criteria_manual extends award_criteria { return array($join, $where, $params); } else { foreach ($this->params as $param) { - $join .= " LEFT JOIN {badge_manual_award} bma{$param['role']} ON - bma{$param['role']}.recipientid = u.id AND - bma{$param['role']}.issuerrole = :issuerrole{$param['role']} "; - $where .= " AND bma{$param['role']}.issuerrole IS NOT NULL "; + $roledata[] = " bma.issuerrole = :issuerrole{$param['role']} "; $params["issuerrole{$param['role']}"] = $param['role']; } + if (!empty($roledata)) { + $extraon = implode(' AND ', $roledata); + $join = " JOIN {badge_manual_award} bma ON bma.recipientid = u.id + AND bma.badgeid = :badgeid{$this->badgeid} AND ({$extraon})"; + $params["badgeid{$this->badgeid}"] = $this->badgeid; + } return array($join, $where, $params); } }