diff --git a/lbplanner/classes/helpers/modules_helper.php b/lbplanner/classes/helpers/modules_helper.php index 1e3cc2f2..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; @@ -116,6 +117,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; } @@ -188,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; diff --git a/lbplanner/services/modules/get_all_modules.php b/lbplanner/services/modules/get_all_modules.php index ae429eac..789a7d98 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,23 +34,33 @@ 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 + ), + ]); } /** * 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(): 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) {