From 77dd41cbb3a505a98d0261bccfdcebb53f577342 Mon Sep 17 00:00:00 2001 From: Riedler Date: Wed, 22 Jan 2025 13:54:45 +0100 Subject: [PATCH 1/4] fix: default to GK if no module type is found instead of crashing --- lbplanner/classes/helpers/modules_helper.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lbplanner/classes/helpers/modules_helper.php b/lbplanner/classes/helpers/modules_helper.php index 1e3cc2f2..91e32667 100644 --- a/lbplanner/classes/helpers/modules_helper.php +++ b/lbplanner/classes/helpers/modules_helper.php @@ -116,6 +116,9 @@ public static function determine_type(int $cmid): int { throw new \moodle_exception("found multiple data for module ID {$cmid} in category ID {$catid}"); } $type = intval($instancedata[1]->get_value()) - 1; // NOTE: why the hell is this on index one? + if ($type === -1) { + $type = MODULE_TYPE::GK; // Default is GK if nothing is selected. + } MODULE_TYPE::name_from($type); // Basically asserting that this value exists as a module type. return $type; } From 637400a5252ca3adb28a478d21294e34700734db Mon Sep 17 00:00:00 2001 From: Riedler Date: Wed, 22 Jan 2025 14:15:31 +0100 Subject: [PATCH 2/4] refactor: minor changes in get_all_modules_by_course --- lbplanner/classes/helpers/modules_helper.php | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/lbplanner/classes/helpers/modules_helper.php b/lbplanner/classes/helpers/modules_helper.php index 91e32667..5330ae0a 100644 --- a/lbplanner/classes/helpers/modules_helper.php +++ b/lbplanner/classes/helpers/modules_helper.php @@ -25,6 +25,7 @@ namespace local_lbplanner\helpers; +use coding_exception; use core_customfield\category_controller; use DateTimeImmutable; use DateTimeZone; @@ -191,13 +192,14 @@ public static function get_all_modules_by_course(int $courseid, bool $ekenabled) $modules = []; foreach ($assignments as $assign) { + if ($assign === null) { + throw new coding_exception("what the fuck? 1 {$courseid} {$ekenabled}"); + } $module = module::from_assignobj($assign); - if (!$ekenabled && self::determine_type($module->get_assignid()) == MODULE_TYPE::EK) { + if ((!$ekenabled) && $module->get_type() === MODULE_TYPE::EK) { continue; } - if ($module != null) { - $modules[] = $module; - } + array_push($modules, $module); } return $modules; From 76058259e163820791092df4d1f9dabbf6c270c3 Mon Sep 17 00:00:00 2001 From: Riedler Date: Wed, 22 Jan 2025 14:35:10 +0100 Subject: [PATCH 3/4] feat: allow ekenabled as parameter in get_all_modules --- .../services/modules/get_all_modules.php | 20 ++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/lbplanner/services/modules/get_all_modules.php b/lbplanner/services/modules/get_all_modules.php index ae429eac..cb04150c 100644 --- a/lbplanner/services/modules/get_all_modules.php +++ b/lbplanner/services/modules/get_all_modules.php @@ -16,7 +16,7 @@ namespace local_lbplanner_services; -use core_external\{external_api, external_function_parameters, external_multiple_structure}; +use core_external\{external_api, external_function_parameters, external_multiple_structure, external_value}; use local_lbplanner\helpers\{modules_helper, plan_helper, course_helper}; use local_lbplanner\model\module; @@ -34,7 +34,15 @@ class modules_get_all_modules extends external_api { * @return external_function_parameters */ public static function get_all_modules_parameters(): external_function_parameters { - return new external_function_parameters([]); + return new external_function_parameters([ + 'ekenabled' => new external_value( + PARAM_BOOL, + 'Whether to include ek modules', + VALUE_DEFAULT, + false, + NULL_NOT_ALLOWED + ), + ]); } /** @@ -42,15 +50,17 @@ public static function get_all_modules_parameters(): external_function_parameter * * @return array the modules */ - public static function get_all_modules(): array { + public static function get_all_modules(bool $ekenabled): array { global $USER; + self::validate_parameters( + self::get_all_modules_parameters(), + ['ekenabled' => $ekenabled] + ); $modules = []; $courses = course_helper::get_all_lbplanner_courses(); $planid = plan_helper::get_plan_id($USER->id); - $plan = plan_helper::get_plan($planid); - $ekenabled = $plan["enableek"]; foreach ($courses as $course) { if (!$course->enabled) { From 06e4690b4bb1d0467debdcd86f8a78c449bac436 Mon Sep 17 00:00:00 2001 From: Riedler Date: Wed, 22 Jan 2025 14:55:54 +0100 Subject: [PATCH 4/4] fix: appease PHPDoc checker --- lbplanner/services/modules/get_all_modules.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lbplanner/services/modules/get_all_modules.php b/lbplanner/services/modules/get_all_modules.php index cb04150c..789a7d98 100644 --- a/lbplanner/services/modules/get_all_modules.php +++ b/lbplanner/services/modules/get_all_modules.php @@ -47,7 +47,7 @@ public static function get_all_modules_parameters(): external_function_parameter /** * Returns all the modules for a user. - * + * @param bool $ekenabled Whether to include ek modules * @return array the modules */ public static function get_all_modules(bool $ekenabled): array {