From d32f9b7ced1e09338e6dc8aae325906b3a2a4481 Mon Sep 17 00:00:00 2001 From: Riedler Date: Sun, 28 Sep 2025 15:41:09 +0200 Subject: [PATCH 1/3] fix: broken get_my_courses --- lbplanner/classes/helpers/course_helper.php | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/lbplanner/classes/helpers/course_helper.php b/lbplanner/classes/helpers/course_helper.php index 021eba38..b59fedf2 100644 --- a/lbplanner/classes/helpers/course_helper.php +++ b/lbplanner/classes/helpers/course_helper.php @@ -93,6 +93,7 @@ public static function get_all_eduplanner_courses(bool $onlyenrolled=true): arra $lbptag = core_tag_tag::get_by_name(core_tag_collection::get_default(), self::EDUPLANNER_TAG, strictness:MUST_EXIST); $courseexpireseconds = config_helper::get_course_outdatedrange(); $courseexpiredate = (new DateTimeImmutable("{$courseexpireseconds} seconds ago"))->getTimestamp(); + $now = time(); /* NOTE: We could use enrol_get_my_courses() and get_courses() here. But their perf is so abysmal that we have to roll our own function. @@ -106,8 +107,8 @@ public static function get_all_eduplanner_courses(bool $onlyenrolled=true): arra WHERE ue.status = :active AND e.status = :enabled - AND ue.timestart <= :now - AND ue.timeend >= :now + AND ue.timestart <= :nowa + AND ue.timeend >= :nowb AND ( c.enddate > :courseexpiredate OR c.enddate = 0 @@ -118,7 +119,8 @@ public static function get_all_eduplanner_courses(bool $onlyenrolled=true): arra "userid" => $userid, "active" => ENROL_USER_ACTIVE, "enabled" => ENROL_INSTANCE_ENABLED, - "now" => time(), + "nowa" => $now, + "nowb" => $now, "courseexpiredate" => $courseexpiredate, "lbptagid" => $lbptag->id, ] From 4479f3a00a5483cd35cf2bac9ebe24824ab97d7f Mon Sep 17 00:00:00 2001 From: Riedler Date: Sun, 28 Sep 2025 15:47:41 +0200 Subject: [PATCH 2/3] chore: minor refactor to fit function name to effect --- lbplanner/classes/helpers/course_helper.php | 4 ++-- lbplanner/classes/helpers/slot_helper.php | 2 +- lbplanner/services/courses/get_all_courses.php | 2 +- lbplanner/services/courses/get_my_courses.php | 2 +- lbplanner/services/modules/get_all_modules.php | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/lbplanner/classes/helpers/course_helper.php b/lbplanner/classes/helpers/course_helper.php index b59fedf2..aa903c03 100644 --- a/lbplanner/classes/helpers/course_helper.php +++ b/lbplanner/classes/helpers/course_helper.php @@ -82,11 +82,11 @@ public static function get_eduplanner_course(int $courseid, int $userid): course } /** - * Get all current courses. + * Get current eduplanner-enabled courses. * @param bool $onlyenrolled whether to include only courses in which the current user is enrolled in * @return course[] all courses of the current year */ - public static function get_all_eduplanner_courses(bool $onlyenrolled=true): array { + public static function get_eduplanner_courses(bool $onlyenrolled): array { global $DB, $USER; $userid = $USER->id; diff --git a/lbplanner/classes/helpers/slot_helper.php b/lbplanner/classes/helpers/slot_helper.php index cf1fd720..73be7c93 100644 --- a/lbplanner/classes/helpers/slot_helper.php +++ b/lbplanner/classes/helpers/slot_helper.php @@ -274,7 +274,7 @@ public static function get_filters_for_slot(int $slotid): array { * @return slot[] the filtered slot array */ public static function filter_slots_for_user(array $allslots, \stdClass $user): array { - $mycourses = course_helper::get_all_eduplanner_courses(); + $mycourses = course_helper::get_eduplanner_courses(true); $mycourseids = []; foreach ($mycourses as $course) { array_push($mycourseids, $course->courseid); diff --git a/lbplanner/services/courses/get_all_courses.php b/lbplanner/services/courses/get_all_courses.php index eba53182..4f71caea 100644 --- a/lbplanner/services/courses/get_all_courses.php +++ b/lbplanner/services/courses/get_all_courses.php @@ -50,7 +50,7 @@ public static function get_all_courses(): array { throw new \moodle_exception('access denied: must be slotmaster'); } - $courses = course_helper::get_all_eduplanner_courses(false); + $courses = course_helper::get_eduplanner_courses(false); $results = []; foreach ($courses as $course) { array_push($results, $course->prepare_for_api()); diff --git a/lbplanner/services/courses/get_my_courses.php b/lbplanner/services/courses/get_my_courses.php index 707608d7..8263c7dd 100644 --- a/lbplanner/services/courses/get_my_courses.php +++ b/lbplanner/services/courses/get_my_courses.php @@ -43,7 +43,7 @@ public static function get_my_courses_parameters(): external_function_parameters * Get all the courses of the current year. */ public static function get_my_courses(): array { - $courses = course_helper::get_all_eduplanner_courses(true); + $courses = course_helper::get_eduplanner_courses(true); $results = []; foreach ($courses as $course) { array_push($results, $course->prepare_for_api()); diff --git a/lbplanner/services/modules/get_all_modules.php b/lbplanner/services/modules/get_all_modules.php index c54b553c..08055ea2 100644 --- a/lbplanner/services/modules/get_all_modules.php +++ b/lbplanner/services/modules/get_all_modules.php @@ -59,7 +59,7 @@ public static function get_all_modules(bool $ekenabled): array { $modules = []; - $courses = course_helper::get_all_eduplanner_courses(); + $courses = course_helper::get_eduplanner_courses(true); $planid = plan_helper::get_plan_id($USER->id); foreach ($courses as $course) { From 6b6103834fbf21e1d9b58bb66354d07479d5d36a Mon Sep 17 00:00:00 2001 From: Riedler Date: Sun, 28 Sep 2025 16:09:07 +0200 Subject: [PATCH 3/3] fix: same mistake as last time - 0 means no enddate --- lbplanner/classes/helpers/course_helper.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lbplanner/classes/helpers/course_helper.php b/lbplanner/classes/helpers/course_helper.php index aa903c03..0ddff628 100644 --- a/lbplanner/classes/helpers/course_helper.php +++ b/lbplanner/classes/helpers/course_helper.php @@ -108,7 +108,10 @@ public static function get_eduplanner_courses(bool $onlyenrolled): array { ue.status = :active AND e.status = :enabled AND ue.timestart <= :nowa - AND ue.timeend >= :nowb + AND ( + ue.timeend >= :nowb + OR ue.timeend = 0 + ) AND ( c.enddate > :courseexpiredate OR c.enddate = 0