MDL-47190 Ensure badges cannot be awarded without a role
Signed-off-by: Yuliya Bozhko <[email protected]>
This commit is contained in:
committed by
Sam Hemelryk
parent
35a60cbb38
commit
b2fa954d75
@@ -81,6 +81,14 @@ $output = $PAGE->get_renderer('core', 'badges');
|
||||
// Roles that can award this badge.
|
||||
$acceptedroles = array_keys($badge->criteria[BADGE_CRITERIA_TYPE_MANUAL]->params);
|
||||
|
||||
if (empty($acceptedroles)) {
|
||||
echo $OUTPUT->header();
|
||||
$return = html_writer::link(new moodle_url('recipients.php', array('id' => $badge->id)), $strrecipients);
|
||||
echo $OUTPUT->notification(get_string('notacceptedrole', 'badges', $return));
|
||||
echo $OUTPUT->footer();
|
||||
die();
|
||||
}
|
||||
|
||||
if (count($acceptedroles) > 1) {
|
||||
// If there is more than one role that can award a badge, prompt user to make a selection.
|
||||
// If it is an admin, include all accepted roles, otherwise only the ones that current user has in this context.
|
||||
|
||||
@@ -147,6 +147,11 @@ class award_criteria_manual extends award_criteria {
|
||||
public function review($userid) {
|
||||
global $DB;
|
||||
|
||||
// Roles should always have a parameter.
|
||||
if (empty($this->params)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$overall = false;
|
||||
foreach ($this->params as $param) {
|
||||
$crit = $DB->get_record('badge_manual_award', array('issuerrole' => $param['role'], 'recipientid' => $userid, 'badgeid' => $this->badgeid));
|
||||
|
||||
Reference in New Issue
Block a user