MDL-47190 Ensure badges cannot be awarded without a role

Signed-off-by: Yuliya Bozhko <[email protected]>
This commit is contained in:
Yuliya Bozhko
2014-11-04 10:16:29 +13:00
committed by Sam Hemelryk
parent 35a60cbb38
commit b2fa954d75
2 changed files with 13 additions and 0 deletions
+8
View File
@@ -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));