66
77use DateInterval ;
88use DateTime ;
9- use DateTimeZone ;
109use Generator ;
1110use Icinga \Module \Notifications \Common \Links ;
1211use Icinga \Module \Notifications \Forms \RotationConfigForm ;
@@ -80,11 +79,11 @@ public function getPriority(): int
8079 */
8180 public function fetchTimeperiodEntries (DateTime $ after , DateTime $ until ): Generator
8281 {
83- $ scheduleTimezone = new DateTimeZone ( $ this -> model -> schedule -> execute ()-> current ()-> timezone );
82+ $ displayTimezone = $ after -> getTimezone ( );
8483
8584 $ actualHandoff = null ;
8685 if (RotationConfigForm::EXPERIMENTAL_OVERRIDES ) {
87- $ actualHandoff = $ this ->model ->actual_handoff ->setTimezone ($ scheduleTimezone );
86+ $ actualHandoff = $ this ->model ->actual_handoff ->setTimezone ($ displayTimezone );
8887 }
8988
9089 $ entries = $ this ->model ->timeperiod ->timeperiod_entry
@@ -100,8 +99,8 @@ public function fetchTimeperiodEntries(DateTime $after, DateTime $until): Genera
10099 )
101100 ));
102101 foreach ($ entries as $ timeperiodEntry ) {
103- $ timeperiodEntry ->start_time ->setTimezone ($ scheduleTimezone );
104- $ timeperiodEntry ->end_time ->setTimezone ($ scheduleTimezone );
102+ $ timeperiodEntry ->start_time ->setTimezone ($ displayTimezone );
103+ $ timeperiodEntry ->end_time ->setTimezone ($ displayTimezone );
105104
106105 if ($ timeperiodEntry ->member ->contact ->id !== null ) {
107106 $ member = new Member ($ timeperiodEntry ->member ->contact ->full_name );
@@ -121,7 +120,7 @@ public function fetchTimeperiodEntries(DateTime $after, DateTime $until): Genera
121120 }
122121 } // TODO: Yearly? (Those unoptimized single occurrences)
123122
124- $ before = (clone $ after )->setTimezone ( $ scheduleTimezone )-> setTime (
123+ $ before = (clone $ after )->setTime (
125124 (int ) $ timeperiodEntry ->start_time ->format ('H ' ),
126125 (int ) $ timeperiodEntry ->start_time ->format ('i ' )
127126 );
@@ -133,7 +132,7 @@ public function fetchTimeperiodEntries(DateTime $after, DateTime $until): Genera
133132 $ firstHandoff = $ timeperiodEntry ->start_time ;
134133 }
135134
136- $ rrule = new RRule ($ timeperiodEntry ->rrule );
135+ $ rrule = new RRule ($ timeperiodEntry ->rrule , $ displayTimezone -> getName () );
137136 $ rrule ->startAt ($ firstHandoff );
138137
139138 $ length = $ timeperiodEntry ->start_time ->diff ($ timeperiodEntry ->end_time );
0 commit comments