From 1eb862a3ea3a4e606ea19de5b1e6c6726ca17947 Mon Sep 17 00:00:00 2001 From: PMKuipers Date: Thu, 22 Aug 2024 10:46:32 +0200 Subject: [PATCH] Ensured all available contexts are listed in the edit form --- classes/form/studyplan_editform.php | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/classes/form/studyplan_editform.php b/classes/form/studyplan_editform.php index ca98337..c18ec16 100644 --- a/classes/form/studyplan_editform.php +++ b/classes/form/studyplan_editform.php @@ -30,6 +30,7 @@ use local_treestudyplan\studyplan; use local_treestudyplan\debug; use local_treestudyplan\studyplanservice; use local_treestudyplan\courseservice; +use local_treestudyplan\contextinfo; use local_treestudyplan\form\text_integer; use moodle_exception; use stdClass; @@ -184,8 +185,15 @@ class studyplan_editform extends formbase { []); $contextlist = []; - foreach (courseservice::list_available_categories('edit') as $c) { - $contextlist[$c['context_id']] = implode(" / ", $c['category']['path']); + // Add system if the user has permissions. + if (has_all_capabilities([courseservice::CAP_EDIT,'moodle/category:viewcourselist'], \context_system::instance())) { + $contextlist[1] = get_string("coresystem"); + } + // Add any other contexts the user has access to. + foreach (courseservice::categories_by_capability(courseservice::CAP_EDIT) as $c) { + $ctx = $c->get_context(); + $ci = new contextinfo($ctx); + $contextlist[$ctx->id] = implode(" / ", $ci->path(false)); } $mform->addElement('autocomplete', 'context_id',