From 7aa157a5e8c0652d055f7ebc6fef0c2e1748ebee Mon Sep 17 00:00:00 2001 From: "akhilesh.goud" Date: Mon, 30 Sep 2024 16:31:01 +0530 Subject: [PATCH 1/3] double event issue --- .../calendars/views/default-calendar-grid.php | 45 ++++++++++++++++--- 1 file changed, 38 insertions(+), 7 deletions(-) diff --git a/includes/calendars/views/default-calendar-grid.php b/includes/calendars/views/default-calendar-grid.php index 620ef66c..2955f0d2 100644 --- a/includes/calendars/views/default-calendar-grid.php +++ b/includes/calendars/views/default-calendar-grid.php @@ -363,22 +363,53 @@ private function draw_month($month, $year, $id = 0) $timestamps = array_keys($events); $lower_bound = array_filter($timestamps, [$this, 'filter_events_before']); $higher_bound = array_filter($lower_bound, [$this, 'filter_events_after']); - $filtered = - is_array($events) && is_array($higher_bound) && !empty($events) && !empty($higher_bound) - ? array_intersect_key($events, array_combine($higher_bound, $higher_bound)) - : []; - // Put resulting events in an associative array, with day of the month as key for easy retrieval in calendar days loop. + $current_month = Carbon::createFromTimestamp($this->start, $calendar->timezone)->month; + $current_year = Carbon::createFromTimestamp($this->start, $calendar->timezone)->year; + + $filtered = array_filter($events, function ($events_in_day) { + foreach ($events_in_day as $event) { + if ($event instanceof Event) { + if ( + ($event->start >= $this->start && $event->start < $this->end + 86400) || + ($event->end >= $this->start && $event->end < $this->end + 86400) + ) { + return true; + } + } + } + return false; + }); + $day_events = []; foreach ($filtered as $timestamp => $events_in_day) { foreach ($events_in_day as $event) { if ($event instanceof Event) { - $day = intval(Carbon::createFromTimestamp($timestamp, $calendar->timezone)->endOfDay()->day); - $day_events[$day][] = $event; + $event_start = Carbon::createFromTimestamp($event->start, $calendar->timezone); + $event_end = Carbon::createFromTimestamp($event->end, $calendar->timezone); + + for ($day = $event_start->copy(); $day->lte($event_end); $day->addDay()) { + if ($day->month == $current_month && $day->year == $current_year) { + $day_key = intval($day->format('j')); + $event_id = $event->uid; + + if ($day->isSameDay($event_end) && $event_end->hour == 0 && $event_end->minute == 0) { + continue; + } + + if (!isset($day_events[$day_key][$event_id])) { + $day_events[$day_key][$event_id] = $event; + } + } + } } } } + foreach ($day_events as $day_key => $events) { + $day_events[$day_key] = array_values($events); + } + ksort($day_events, SORT_NUMERIC); } From 9eb7784b88963aebd11788153f43069e98a0dac0 Mon Sep 17 00:00:00 2001 From: "akhilesh.goud" Date: Mon, 30 Sep 2024 17:25:58 +0530 Subject: [PATCH 2/3] background variable and deprecated warning --- includes/calendars/views/default-calendar-grid.php | 8 ++++---- includes/feeds/google.php | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/includes/calendars/views/default-calendar-grid.php b/includes/calendars/views/default-calendar-grid.php index 2955f0d2..b3f4c1ee 100644 --- a/includes/calendars/views/default-calendar-grid.php +++ b/includes/calendars/views/default-calendar-grid.php @@ -171,7 +171,7 @@ public function styles() * * @since 3.4.3 */ - public function format_timestamp($format = 'F', $timestamp) + public function format_timestamp($timestamp, $format = 'F') { $datetime = new \DateTime(); $datetime->setTimezone(new \DateTimeZone($this->calendar->timezone)); @@ -231,7 +231,7 @@ class="simcal-nav simcal-current" } foreach ($current as $k => $v) { - echo ' ' . $this->format_timestamp($v, $calendar->start) . ' '; + echo ' ' . $this->format_timestamp($calendar->start, $v) . ' '; } echo ''; @@ -281,8 +281,8 @@ class="simcal-nav simcal-current" draw_month( - date($this->format_timestamp('n', $calendar->start)), - date($this->format_timestamp('Y', $calendar->start)) + date($this->format_timestamp($calendar->start, 'n')), + date($this->format_timestamp($calendar->start, 'Y')) ); ?> diff --git a/includes/feeds/google.php b/includes/feeds/google.php index 62efc250..d6fee733 100644 --- a/includes/feeds/google.php +++ b/includes/feeds/google.php @@ -562,13 +562,13 @@ public function make_request($id = '', $time_min = 0, $time_max = 0) // Query events in calendar. $simple_calendar_auth_site_token = get_option('simple_calendar_auth_site_token'); $response = ''; + $backgroundcolor = ''; if ( isset($simple_calendar_auth_site_token) && !empty($simple_calendar_auth_site_token && $is_authhelper) && isset($feed_type[0]->slug) && $feed_type[0]->slug != 'google' ) { - $backgroundcolor = ''; $response_arr = apply_filters('simple_calendar_oauth_list_events', '', $id, $args); $response = unserialize($response_arr['data']); From 969b0c82ec61fa193741820bd4c3001140cb0e59 Mon Sep 17 00:00:00 2001 From: "akhilesh.goud" Date: Thu, 10 Oct 2024 11:16:29 +0530 Subject: [PATCH 3/3] feedback --- .../calendars/views/default-calendar-grid.php | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-) diff --git a/includes/calendars/views/default-calendar-grid.php b/includes/calendars/views/default-calendar-grid.php index b3f4c1ee..feabcaac 100644 --- a/includes/calendars/views/default-calendar-grid.php +++ b/includes/calendars/views/default-calendar-grid.php @@ -367,19 +367,10 @@ private function draw_month($month, $year, $id = 0) $current_month = Carbon::createFromTimestamp($this->start, $calendar->timezone)->month; $current_year = Carbon::createFromTimestamp($this->start, $calendar->timezone)->year; - $filtered = array_filter($events, function ($events_in_day) { - foreach ($events_in_day as $event) { - if ($event instanceof Event) { - if ( - ($event->start >= $this->start && $event->start < $this->end + 86400) || - ($event->end >= $this->start && $event->end < $this->end + 86400) - ) { - return true; - } - } - } - return false; - }); + $filtered = + is_array($events) && is_array($higher_bound) && !empty($events) && !empty($higher_bound) + ? array_intersect_key($events, array_combine($higher_bound, $higher_bound)) + : []; $day_events = []; foreach ($filtered as $timestamp => $events_in_day) {