diff --git a/lbplanner/classes/helpers/course_helper.php b/lbplanner/classes/helpers/course_helper.php index 021eba38..0ddff628 100644 --- a/lbplanner/classes/helpers/course_helper.php +++ b/lbplanner/classes/helpers/course_helper.php @@ -82,17 +82,18 @@ 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; $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,11 @@ 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 + OR ue.timeend = 0 + ) AND ( c.enddate > :courseexpiredate OR c.enddate = 0 @@ -118,7 +122,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, ] 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) {