Skip to content

Commit

Permalink
MDL-37473 completion: Add missing cap checks to tracked users functions
Browse files Browse the repository at this point in the history
Namely get_num_tracked_users and is_tracked_user()
  • Loading branch information
Aaron Barnes committed Jan 25, 2013
1 parent 9da506c commit 10a8581
Show file tree
Hide file tree
Showing 5 changed files with 14 additions and 6 deletions.
2 changes: 1 addition & 1 deletion blocks/completionstatus/block_completionstatus.php
Expand Up @@ -220,7 +220,7 @@ public function get_content() {
$this->content->footer = '<br><a href="'.$details->out().'">'.get_string('moredetails', 'completion').'</a>';
} else {
// If user is not enrolled, show error
$this->content->text = get_string('notenroled', 'completion');
$this->content->text = get_string('nottracked', 'completion');
}

if (has_capability('report/completion:view', $context)) {
Expand Down
2 changes: 1 addition & 1 deletion blocks/selfcompletion/block_selfcompletion.php
Expand Up @@ -87,7 +87,7 @@ public function get_content() {

// Check this user is enroled
if (!$info->is_tracked_user($USER->id)) {
$this->content->text = get_string('notenroled', 'completion');
$this->content->text = get_string('nottracked', 'completion');
return $this->content;
}

Expand Down
9 changes: 8 additions & 1 deletion course/togglecompletion.php
Expand Up @@ -45,6 +45,11 @@
require_login($course);

$completion = new completion_info($course);
if (!$completion->is_enabled()) {
throw new moodle_exception('completionnotenabled', 'completion');
} elseif (!$completion->is_tracked_user($USER->id)) {
throw new moodle_exception('nottracked', 'completion');
}

// Check if we are marking a user complete via the completion report
$user = optional_param('user', 0, PARAM_INT);
Expand Down Expand Up @@ -136,7 +141,9 @@
// Now change state
$completion = new completion_info($course);
if (!$completion->is_enabled()) {
die;
throw new moodle_exception('completionnotenabled', 'completion');
} elseif (!$completion->is_tracked_user($USER->id)) {
throw new moodle_exception('nottracked', 'completion');
}

// Check completion state is manual
Expand Down
3 changes: 2 additions & 1 deletion lang/en/completion.php
Expand Up @@ -135,9 +135,10 @@
$string['markedcompleteby']='Marked complete by {$a}';
$string['markingyourselfcomplete']='Marking yourself complete';
$string['moredetails']='More details';
$string['notcompleted'] = 'Not completed';
$string['nocriteriaset']='No completion criteria set for this course';
$string['notcompleted'] = 'Not completed';
$string['notenroled']='You are not enrolled in this course';
$string['nottracked']='You are currently not being tracked by completion in this course';
$string['notyetstarted']='Not yet started';
$string['overallcriteriaaggregation']='Overall criteria type aggregation';
$string['pending']='Pending';
Expand Down
4 changes: 2 additions & 2 deletions lib/completionlib.php
Expand Up @@ -1021,7 +1021,7 @@ public function get_activities($modinfo=null) {
* @return bool
*/
public function is_tracked_user($userid) {
return is_enrolled(context_course::instance($this->course->id), $userid, '', true);
return is_enrolled(context_course::instance($this->course->id), $userid, 'moodle/course:isincompletionreports', true);
}

/**
Expand All @@ -1038,7 +1038,7 @@ public function get_num_tracked_users($where = '', $whereparams = array(), $grou
global $DB;

list($enrolledsql, $enrolledparams) = get_enrolled_sql(
context_course::instance($this->course->id), '', $groupid, true);
context_course::instance($this->course->id), 'moodle/course:isincompletionreports', $groupid, true);
$sql = 'SELECT COUNT(eu.id) FROM (' . $enrolledsql . ') eu JOIN {user} u ON u.id = eu.id';
if ($where) {
$sql .= " WHERE $where";
Expand Down

0 comments on commit 10a8581

Please sign in to comment.