$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)) {
// 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;
}
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);
// 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
$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';
* @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);
}
/**
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";