From 249a0ec55648fc4ebcc7a52e1faf1ca77ebc3b06 Mon Sep 17 00:00:00 2001 From: Riedler Date: Thu, 30 Jan 2025 18:13:43 +0100 Subject: [PATCH 1/9] fix: reserving slot on the same day --- lbplanner/services/slots/book_reservation.php | 4 ++-- lbplanner/version.php | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lbplanner/services/slots/book_reservation.php b/lbplanner/services/slots/book_reservation.php index 0f012baa..08956dad 100644 --- a/lbplanner/services/slots/book_reservation.php +++ b/lbplanner/services/slots/book_reservation.php @@ -82,14 +82,14 @@ public static function book_reservation(int $slotid, string $date, int $userid): ] ); - $now = new DateTimeImmutable(); + $now = new DateTimeImmutable('today'); $dateobj = DateTimeImmutable::createFromFormat("Y-m-d", $date); if ($dateobj === false) { throw new \moodle_exception("invalid date formatting: got '{$date}', must be YYYY-MM-DD"); } $td = $now->diff($dateobj); - if ($td->invert) { + if ($td->invert === 1) { throw new \moodle_exception('Can\'t reserve date in the past'); } diff --git a/lbplanner/version.php b/lbplanner/version.php index cef47ea5..f61e7cf5 100644 --- a/lbplanner/version.php +++ b/lbplanner/version.php @@ -28,7 +28,7 @@ $plugin->component = 'local_lbplanner'; $plugin->release = 'Alpha v.'.$release; -$plugin->version = 2025012803; +$plugin->version = 2025013000; $plugin->dependencies = [ // Depend upon version 2023110600 of local_modcustomfields. 'local_modcustomfields' => 2023110600, From 8b97c3a41ee23870426264dbd316ce7fb2b7652b Mon Sep 17 00:00:00 2001 From: Riedler Date: Sat, 1 Feb 2025 07:09:31 +0100 Subject: [PATCH 2/9] fix: added get_slot_reservations to services.php again? what the hell. feels like they disappear randomly --- lbplanner/db/services.php | 1 + lbplanner/version.php | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/lbplanner/db/services.php b/lbplanner/db/services.php index 6b9941a1..c4e1c2cc 100644 --- a/lbplanner/db/services.php +++ b/lbplanner/db/services.php @@ -435,6 +435,7 @@ 'local_lbplanner_slots_get_all_slots', 'local_lbplanner_slots_get_my_slots', 'local_lbplanner_slots_get_slot_filters', + 'local_lbplanner_slots_get_slot_reservations', 'local_lbplanner_slots_get_student_slots', 'local_lbplanner_slots_get_supervisor_slots', 'local_lbplanner_slots_remove_slot_supervisor', diff --git a/lbplanner/version.php b/lbplanner/version.php index f61e7cf5..eabd3b00 100644 --- a/lbplanner/version.php +++ b/lbplanner/version.php @@ -28,7 +28,7 @@ $plugin->component = 'local_lbplanner'; $plugin->release = 'Alpha v.'.$release; -$plugin->version = 2025013000; +$plugin->version = 2025020100; $plugin->dependencies = [ // Depend upon version 2023110600 of local_modcustomfields. 'local_modcustomfields' => 2023110600, From 1b7cd68279edf53d3d486774fff57e970ccfd405 Mon Sep 17 00:00:00 2001 From: Riedler Date: Fri, 7 Feb 2025 14:34:01 +0100 Subject: [PATCH 3/9] fix: cast userid to int before comparing & bump version --- lbplanner/services/plan/update_access.php | 2 +- lbplanner/version.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lbplanner/services/plan/update_access.php b/lbplanner/services/plan/update_access.php index 045f9558..901e5c59 100644 --- a/lbplanner/services/plan/update_access.php +++ b/lbplanner/services/plan/update_access.php @@ -71,7 +71,7 @@ public static function update_access(int $accesstype, int $memberid) { $planid = plan_helper::get_plan_id($USER->id); - if (plan_helper::get_owner($planid) !== $USER->id) { + if (plan_helper::get_owner($planid) !== intval($USER->id)) { throw new \moodle_exception('Access denied'); } diff --git a/lbplanner/version.php b/lbplanner/version.php index eabd3b00..134f38db 100644 --- a/lbplanner/version.php +++ b/lbplanner/version.php @@ -28,7 +28,7 @@ $plugin->component = 'local_lbplanner'; $plugin->release = 'Alpha v.'.$release; -$plugin->version = 2025020100; +$plugin->version = 2025020700; $plugin->dependencies = [ // Depend upon version 2023110600 of local_modcustomfields. 'local_modcustomfields' => 2023110600, From d1c1cd7d50d295559be5127ea9757460fbc79c35 Mon Sep 17 00:00:00 2001 From: Riedler Date: Mon, 10 Feb 2025 17:04:36 +0100 Subject: [PATCH 4/9] fix: off-by-one in datetime in get_my_slots this happened because we weren't properly ignoring the time of day --- lbplanner/classes/helpers/slot_helper.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lbplanner/classes/helpers/slot_helper.php b/lbplanner/classes/helpers/slot_helper.php index 3335db04..0d3cbd6d 100644 --- a/lbplanner/classes/helpers/slot_helper.php +++ b/lbplanner/classes/helpers/slot_helper.php @@ -321,7 +321,7 @@ public static function filter_slots_for_time(array $allslots, int $range): array foreach ($allslots as $slot) { $slotdatetime = self::calculate_slot_datetime($slot, $now); - if ($now->diff($slotdatetime)->days <= $range) { + if ($now->setTime(0,0,0)->diff($slotdatetime->setTime(0,0,0))->days <= $range) { array_push($slots, $slot); } } From a5efdfb4458a01ca1dc7d8ed61218104cfb91605 Mon Sep 17 00:00:00 2001 From: Riedler Date: Mon, 10 Feb 2025 17:05:22 +0100 Subject: [PATCH 5/9] fix: specified UTC in one more endpoint --- lbplanner/services/slots/book_reservation.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lbplanner/services/slots/book_reservation.php b/lbplanner/services/slots/book_reservation.php index 08956dad..0cf98bd8 100644 --- a/lbplanner/services/slots/book_reservation.php +++ b/lbplanner/services/slots/book_reservation.php @@ -20,6 +20,7 @@ use core_user; use core_external\{external_api, external_function_parameters, external_single_structure, external_value}; +use DateTimeZone; use local_lbplanner\enums\NOTIF_TRIGGER; use local_lbplanner\helpers\notifications_helper; use local_lbplanner\helpers\slot_helper; @@ -82,8 +83,9 @@ public static function book_reservation(int $slotid, string $date, int $userid): ] ); - $now = new DateTimeImmutable('today'); - $dateobj = DateTimeImmutable::createFromFormat("Y-m-d", $date); + $utctz = new DateTimeZone('UTC'); + $now = new DateTimeImmutable('today', $utctz); + $dateobj = DateTimeImmutable::createFromFormat("Y-m-d", $date, $utctz); if ($dateobj === false) { throw new \moodle_exception("invalid date formatting: got '{$date}', must be YYYY-MM-DD"); } From 8eb63a27c5124417a6ac4b9b4e55b3a1d0abe0ef Mon Sep 17 00:00:00 2001 From: Riedler Date: Mon, 10 Feb 2025 17:06:05 +0100 Subject: [PATCH 6/9] docs: added missing code comment oops, forgot saving the file before committing --- lbplanner/classes/helpers/slot_helper.php | 1 + 1 file changed, 1 insertion(+) diff --git a/lbplanner/classes/helpers/slot_helper.php b/lbplanner/classes/helpers/slot_helper.php index 0d3cbd6d..e65bad3d 100644 --- a/lbplanner/classes/helpers/slot_helper.php +++ b/lbplanner/classes/helpers/slot_helper.php @@ -321,6 +321,7 @@ public static function filter_slots_for_time(array $allslots, int $range): array foreach ($allslots as $slot) { $slotdatetime = self::calculate_slot_datetime($slot, $now); + // compare only date difference, ignoring time if ($now->setTime(0,0,0)->diff($slotdatetime->setTime(0,0,0))->days <= $range) { array_push($slots, $slot); } From 709aea750734490ce462865c8e97fe0a5e7ec06f Mon Sep 17 00:00:00 2001 From: Riedler Date: Mon, 10 Feb 2025 17:14:58 +0100 Subject: [PATCH 7/9] fix: appease moodle code checker --- lbplanner/classes/helpers/slot_helper.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lbplanner/classes/helpers/slot_helper.php b/lbplanner/classes/helpers/slot_helper.php index e65bad3d..5cf18843 100644 --- a/lbplanner/classes/helpers/slot_helper.php +++ b/lbplanner/classes/helpers/slot_helper.php @@ -321,8 +321,8 @@ public static function filter_slots_for_time(array $allslots, int $range): array foreach ($allslots as $slot) { $slotdatetime = self::calculate_slot_datetime($slot, $now); - // compare only date difference, ignoring time - if ($now->setTime(0,0,0)->diff($slotdatetime->setTime(0,0,0))->days <= $range) { + // Compare only date difference, ignoring time. + if ($now->setTime(0, 0, 0)->diff($slotdatetime->setTime(0, 0, 0))->days <= $range) { array_push($slots, $slot); } } From 8c1c55d3d4d4e586b132a1eca895986ebe9966cf Mon Sep 17 00:00:00 2001 From: Riedler Date: Tue, 11 Feb 2025 10:29:00 +0100 Subject: [PATCH 8/9] fix: YET ANOTHER FUCKING OFF-BY-ONE --- lbplanner/classes/helpers/slot_helper.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lbplanner/classes/helpers/slot_helper.php b/lbplanner/classes/helpers/slot_helper.php index 5cf18843..e85c5dba 100644 --- a/lbplanner/classes/helpers/slot_helper.php +++ b/lbplanner/classes/helpers/slot_helper.php @@ -322,7 +322,7 @@ public static function filter_slots_for_time(array $allslots, int $range): array $slotdatetime = self::calculate_slot_datetime($slot, $now); // Compare only date difference, ignoring time. - if ($now->setTime(0, 0, 0)->diff($slotdatetime->setTime(0, 0, 0))->days <= $range) { + if ($now->setTime(0, 0, 0)->diff($slotdatetime->setTime(0, 0, 0))->days < $range) { array_push($slots, $slot); } } From 6ea26c847e089b70212fe6ea4950d3a5679946d0 Mon Sep 17 00:00:00 2001 From: Riedler Date: Tue, 11 Feb 2025 10:34:09 +0100 Subject: [PATCH 9/9] feat: bump version to 1.0.0 --- lbplanner/version.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lbplanner/version.php b/lbplanner/version.php index 134f38db..6faf6ef6 100644 --- a/lbplanner/version.php +++ b/lbplanner/version.php @@ -24,11 +24,11 @@ defined('MOODLE_INTERNAL') || die(); -$release = '0.0.0'; +$release = '1.0.0'; $plugin->component = 'local_lbplanner'; -$plugin->release = 'Alpha v.'.$release; -$plugin->version = 2025020700; +$plugin->release = 'Beta v.'.$release; +$plugin->version = 2025021100; $plugin->dependencies = [ // Depend upon version 2023110600 of local_modcustomfields. 'local_modcustomfields' => 2023110600,