}
/**
- * @param array $timezones - Timezone strings
* @param $date_min
* @param $date_max
*
* @return array
*/
- public static function generate_timezones(array $timezones, $date_min, $date_max) {
- if (empty($timezones)) {
- return [];
- }
+ public static function generate_timezones($date_min, $date_max) {
+ $tzstr = date_default_timezone_get();
+ $timezone = new DateTimeZone($tzstr);
- $tz_items = [];
+ $transitions = $timezone->getTransitions($date_min, $date_max);
- foreach ($timezones as $tzstr) {
- $timezone = new DateTimeZone($tzstr);
+ if (count($transitions) === 1) {
+ $transitions[] = array_values($transitions)[0];
+ }
- $transitions = $timezone->getTransitions($date_min, $date_max);
+ $item = [
+ 'id' => $timezone->getName(),
+ 'transitions' => [],
+ ];
- if (count($transitions) === 1) {
- $transitions[] = array_values($transitions)[0];
- }
+ $last_transition = array_shift($transitions);
- $item = [
- 'id' => $timezone->getName(),
- 'transitions' => [],
+ foreach ($transitions as $transition) {
+ $item['transitions'][] = [
+ 'type' => $transition['isdst'] ? 'DAYLIGHT' : 'STANDARD',
+ 'offset_from' => self::format_tz_offset($last_transition['offset']),
+ 'offset_to' => self::format_tz_offset($transition['offset']),
+ 'abbr' => $transition['abbr'],
+ 'dtstart' => date_create($transition['time'], $timezone)->format("Ymd\THis"),
];
- $last_transition = array_shift($transitions);
-
- foreach ($transitions as $transition) {
- $item['transitions'][] = [
- 'type' => $transition['isdst'] ? 'DAYLIGHT' : 'STANDARD',
- 'offset_from' => self::format_tz_offset($last_transition['offset']),
- 'offset_to' => self::format_tz_offset($transition['offset']),
- 'abbr' => $transition['abbr'],
- 'dtstart' => date_create($transition['time'], $timezone)->format("Ymd\THis"),
- ];
-
- $last_transition = $transition;
- }
-
- $tz_items[] = $item;
+ $last_transition = $transition;
}
+ $tz_items[] = $item;
+
return $tz_items;
}
return strtotime($event['end_date'] ?? $event['start_date']);
}, $info)
);
- $template->assign('timezones', CRM_Utils_ICalendar::generate_timezones($timezones, $date_min, $date_max));
+ $template->assign('timezones', CRM_Utils_ICalendar::generate_timezones($date_min, $date_max));
}
else {
$template->assign('timezones', NULL);