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); } }