Skip to content
Snippets Groups Projects
Commit 1989a3be authored by Julian Wendling's avatar Julian Wendling
Browse files

REMOVE Mutliple calls to get_course_metadata

parent 418f90a8
Branches
No related tags found
No related merge requests found
...@@ -54,16 +54,22 @@ function local_sembasednav_extend_navigation(global_navigation $navigation) ...@@ -54,16 +54,22 @@ function local_sembasednav_extend_navigation(global_navigation $navigation)
// Creates a new array with semesters that contain their courses // Creates a new array with semesters that contain their courses
foreach ($courses as $c) { foreach ($courses as $c) {
$c->semesterId = get_semester_id((int) $c->key, $semFieldName); $semesterCustomField = get_semester_customFields((int) $c->key, $semFieldName);
$c->semesterName = get_semester_name((int) $c->key, $semFieldName); $semesterId = preg_replace('/[^0-9]/', '', $semesterCustomField);
$semesterName = \customfield_semester\data_controller::get_name_for_semester((int)$semesterId);
$c->semesterId = $semesterId;
$c->semesterName = $semesterName;
$courseName = empty($CFG->navshowfullcoursenames) ? $c->shorttext : $c->title; $courseName = empty($CFG->navshowfullcoursenames) ? $c->shorttext : $c->title;
if ($c->semesterId == 1) { if ($c->semesterId == 1) {
// Term-independent
$specialNodesList[$c->semesterId]["name"] = $c->semesterName; $specialNodesList[$c->semesterId]["name"] = $c->semesterName;
$specialNodesList[$c->semesterId]["courses"][] = $c; $specialNodesList[$c->semesterId]["courses"][] = $c;
$myCoursesNode->children->remove($c->key); $c->showinflatnavigation = false;
} else { } else {
// Normal semesters
$mySemesters[$c->semesterId]["name"] = $c->semesterName; $mySemesters[$c->semesterId]["name"] = $c->semesterName;
$mySemesters[$c->semesterId]["courses"][] = $c; $mySemesters[$c->semesterId]["courses"][] = $c;
$c->showinflatnavigation = false; $c->showinflatnavigation = false;
...@@ -124,9 +130,9 @@ function add_semester_nodes(array $semesterList, $parentNode) ...@@ -124,9 +130,9 @@ function add_semester_nodes(array $semesterList, $parentNode)
// Assign courses to their semester in the navigation // Assign courses to their semester in the navigation
foreach ($value["courses"] as $c) { foreach ($value["courses"] as $c) {
$parentNode->children->remove($c->key); $parentNode->children->remove($c->key);
$c->showinflatnavigation = true;
$c->add_class('p-l-3'); $c->add_class('p-l-3');
$c->set_parent($semesterNode); $c->set_parent($semesterNode);
$c->showinflatnavigation = true;
if (!$semesterNode->forceopen) if (!$semesterNode->forceopen)
$c->add_class('localboostnavigationcollapsedchild'); $c->add_class('localboostnavigationcollapsedchild');
...@@ -208,45 +214,19 @@ function create_node_key(string $semesterName) ...@@ -208,45 +214,19 @@ function create_node_key(string $semesterName)
} }
/** /**
* Returns semester name of given course id. * Gets the custom fields of a given course id
* If no semester is found, return no semester assigned name.
* @param int $id * @param int $id
* @return string * @return string
*/ */
function get_semester_name(int $id, $semFieldName) function get_semester_customFields(int $id, $semFieldName) {
{
$noSemesterAssigned = get_config('sembasednav', 'setting_nosemestername');
$semesterName = '';
try { try {
$allCustomFields = get_course_metadata($id); $allCustomFields = get_course_metadata($id);
$semesterField = $allCustomFields[$semFieldName->shortname]; $semesterField = $allCustomFields[$semFieldName->shortname];
$semesterValue = preg_replace('/[^0-9]/', '', $semesterField); // extract semester int from string
$semesterName = \customfield_semester\data_controller::get_name_for_semester((int)$semesterValue);
} catch (Exception $e) {
echo $e->getMessage();
}
return empty($semesterName) || $semesterName === '' ? $noSemesterAssigned : $semesterName;
}
/** return $semesterField;
* @param int $id
* @return string
*/
function get_semester_id(int $id, $semFieldName)
{
$semesterValue = '';
try {
$allCustomFields = get_course_metadata($id);
$semesterField = $allCustomFields[$semFieldName->shortname];
$semesterValue = preg_replace('/[^0-9]/', '', $semesterField); // extract semester int from string
} catch (Exception $e) { } catch (Exception $e) {
echo $e->getMessage(); echo $e->getMessage();
} }
return empty($semesterValue) || $semesterValue === '' ? 0 : $semesterValue;
} }
// https://docs.moodle.org/dev/Custom_fields_API#Example_code_for_course_custom_fields // https://docs.moodle.org/dev/Custom_fields_API#Example_code_for_course_custom_fields
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment