Calculate the daylight savings settings
This commit is contained in:
parent
d3cedcf17f
commit
1778963607
|
|
@ -1141,27 +1141,57 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
//get the time zone
|
//get the time zone
|
||||||
$time_zone_name = $this->settings->get('domain','time_zone', '');
|
$time_zone = $this->settings->get('domain','time_zone', 'UTC');
|
||||||
if (!empty($time_zone_name)) {
|
|
||||||
$time_zone_offset_raw = get_time_zone_offset($time_zone_name)/3600;
|
//calculate the time zone offset
|
||||||
$time_zone_offset_hours = floor($time_zone_offset_raw);
|
if (!empty($time_zone)) {
|
||||||
$time_zone_offset_minutes = ($time_zone_offset_raw - $time_zone_offset_hours) * 60;
|
$tz = new DateTimeZone($time_zone);
|
||||||
$time_zone_offset_minutes = number_pad($time_zone_offset_minutes, 2);
|
$current_date = new DateTime('now', $tz);
|
||||||
if ($time_zone_offset_raw > 0) {
|
$offset_seconds = $tz->getOffset($current_date);
|
||||||
$time_zone_offset_hours = number_pad($time_zone_offset_hours, 2);
|
$time_zone_offset_hours = floor($offset_seconds / 3600);
|
||||||
$time_zone_offset_hours = "+".$time_zone_offset_hours;
|
$time_zone_offset_minutes = abs(floor(($offset_seconds % 3600) / 60));
|
||||||
}
|
}
|
||||||
else {
|
|
||||||
$time_zone_offset_hours = str_replace("-", "", $time_zone_offset_hours);
|
//auto calculate the daylight savings settings
|
||||||
$time_zone_offset_hours = "-".number_pad($time_zone_offset_hours, 2);
|
if ($this->settings->get('provision','daylight_savings_auto', true)) {
|
||||||
}
|
//initialize the variables
|
||||||
$time_zone_offset = $time_zone_offset_hours.":".$time_zone_offset_minutes;
|
$dst_start = null;
|
||||||
if (!isset($provision["time_zone_offset"])) {
|
$dst_start_month = null;
|
||||||
$provision["time_zone_offset"] = $time_zone_offset;
|
$dst_start_day = null;
|
||||||
|
$dst_start_hour = null;
|
||||||
|
$dst_end = null;
|
||||||
|
$dst_end_month = null;
|
||||||
|
$dst_end_day = null;
|
||||||
|
$dst_end_hour = null;
|
||||||
|
|
||||||
|
//prepare the daylight saving dates and build the transitions
|
||||||
|
date_default_timezone_set($time_zone);
|
||||||
|
$current_year = date('Y');
|
||||||
|
$tz = new DateTimeZone($time_zone);
|
||||||
|
$start_of_year = new DateTime($current_year.'-01-01 00:00:00', $tz);
|
||||||
|
$end_of_year = new DateTime($current_year.'-12-31 23:59:59', $tz);
|
||||||
|
$transitions = $tz->getTransitions($start_of_year->getTimestamp(), $end_of_year->getTimestamp());
|
||||||
|
|
||||||
|
//add the daylight savings to the provision array
|
||||||
|
foreach ($transitions as $transition) {
|
||||||
|
if ($transition['isdst']) {
|
||||||
|
$provision["daylight_savings_start"] = date('Y-m-d H:i:s', $transition['ts']);
|
||||||
|
$provision["daylight_savings_start_month"] = date('m', $transition['ts']);
|
||||||
|
$provision["daylight_savings_start_day"] = date('d', $transition['ts']);
|
||||||
|
$provision["daylight_savings_start_time"] = date('H', $transition['ts']);
|
||||||
|
} elseif (!$transition['isdst']) {
|
||||||
|
$provision["daylight_savings_stop"] = date('Y-m-d H:i:s', $transition['ts']);
|
||||||
|
$provision["daylight_savings_stop_month"] = date('m', $transition['ts']);
|
||||||
|
$provision["daylight_savings_stop_day"] = date('d', $transition['ts']);
|
||||||
|
$provision["daylight_savings_stop_time"] = date('H', $transition['ts']);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//set the daylight savings time
|
//set daylight savings settings for polycom
|
||||||
|
$provision["polycom_gmt_offset"] = $offset_seconds;
|
||||||
|
|
||||||
|
//set daylight savings settings time for yealink
|
||||||
if (!isset($provision["yealink_time_zone_start_time"])) {
|
if (!isset($provision["yealink_time_zone_start_time"])) {
|
||||||
$provision["yealink_time_zone_start_time"] = $provision["daylight_savings_start_month"]."/".$provision["daylight_savings_start_day"]."/".$provision["daylight_savings_start_time"];
|
$provision["yealink_time_zone_start_time"] = $provision["daylight_savings_start_month"]."/".$provision["daylight_savings_start_day"]."/".$provision["daylight_savings_start_time"];
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue