diff --git a/completion/classes/activity_custom_completion.php b/completion/classes/activity_custom_completion.php index 7c7806a5f7c..2ac83dd11ad 100644 --- a/completion/classes/activity_custom_completion.php +++ b/completion/classes/activity_custom_completion.php @@ -96,8 +96,9 @@ abstract class activity_custom_completion { public function get_available_custom_rules(): array { $rules = static::get_defined_custom_rules(); $availablerules = []; + $customdata = (array)$this->cm->customdata; foreach ($rules as $rule) { - $customrule = $this->cm->customdata['customcompletionrules'][$rule] ?? false; + $customrule = $customdata['customcompletionrules'][$rule] ?? false; if (!empty($customrule)) { $availablerules[] = $rule; } diff --git a/lib/completionlib.php b/lib/completionlib.php index 053be164197..5318a86df09 100644 --- a/lib/completionlib.php +++ b/lib/completionlib.php @@ -1107,8 +1107,10 @@ class completion_info { // Custom activity module completion data. + // Cast custom data to array before checking for custom completion rules. + $customdata = (array)$cm->customdata; // Return early if the plugin does not define custom completion rules. - if (empty($cm->customdata['customcompletionrules'])) { + if (empty($customdata['customcompletionrules'])) { return []; } @@ -1120,7 +1122,7 @@ class completion_info { /** @var activity_custom_completion $customcmcompletion */ $customcmcompletion = new $cmcompletionclass($cm, $userid); - foreach ($cm->customdata['customcompletionrules'] as $rule => $enabled) { + foreach ($customdata['customcompletionrules'] as $rule => $enabled) { if (!$enabled) { // Skip inactive completion rules. continue;