diff --git a/blocks/completionstatus/block_completionstatus.php b/blocks/completionstatus/block_completionstatus.php
index 12f0ea18593..b2cb80365a0 100644
--- a/blocks/completionstatus/block_completionstatus.php
+++ b/blocks/completionstatus/block_completionstatus.php
@@ -220,7 +220,7 @@ class block_completionstatus extends block_base {
$this->content->footer = '
'.get_string('moredetails', 'completion').'';
} 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)) {
diff --git a/blocks/selfcompletion/block_selfcompletion.php b/blocks/selfcompletion/block_selfcompletion.php
index 9ea6db40cf3..fe0d3af9279 100644
--- a/blocks/selfcompletion/block_selfcompletion.php
+++ b/blocks/selfcompletion/block_selfcompletion.php
@@ -87,7 +87,7 @@ class block_selfcompletion extends block_base {
// 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;
}
diff --git a/course/togglecompletion.php b/course/togglecompletion.php
index 2977f7179f1..e1e0c17ae7f 100644
--- a/course/togglecompletion.php
+++ b/course/togglecompletion.php
@@ -45,6 +45,11 @@ if ($courseid) {
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);
@@ -136,7 +141,9 @@ if (isguestuser() or !confirm_sesskey()) {
// 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
diff --git a/lang/en/completion.php b/lang/en/completion.php
index a488b9dabd6..d3230bb7c49 100644
--- a/lang/en/completion.php
+++ b/lang/en/completion.php
@@ -135,9 +135,10 @@ $string['markcomplete']='Mark complete';
$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';