diff --git a/sccpManClasses/extconfigs.class.php b/sccpManClasses/extconfigs.class.php index 928b900..b1d8436 100644 --- a/sccpManClasses/extconfigs.class.php +++ b/sccpManClasses/extconfigs.class.php @@ -67,16 +67,21 @@ class extconfigs if (empty($tz_tmp)) { return array('offset' => '00', 'daylight' => '', 'cisco_code' => 'Greenwich'); } - + // as php DateTimeZone::listAbbreviations() has multiple historic Values // Need to find one that matches this machine offset. //Now find out if DST is used here. Test if DST setting is different in 6 months + $usesDaylight = false; $haveDstNow = date('I'); - $futureDate = (new \DateTime(null,new \DateTimeZone($index)))->modify('+6 months'); - dbug('now is',$haveDstNow); - dbug('future date', $futureDate->format('I')); - + $futureDateArray = array(2,4,6,8); + foreach ($futureDateArray as $numMonths) { + $futureDate = (new \DateTime(null,new \DateTimeZone($index)))->modify("+{$numMonths} months"); + if ($futureDate->format('I') != $haveDstNow) { + $usesDaylight = true; + break; + }; + } if (count($tz_tmp)==1) { $time_set = $tz_tmp[0]; @@ -91,11 +96,15 @@ class extconfigs } } - // Should now have a match on offset. + // Now look for a match in cisco_code based on offset and DST + // First correct offset if we have DST now $tmp_ofset = $time_set['offset'] / 60; - $tmp_dli = (empty($time_set['dst']) ? '' : 'Daylight' ); + if ($haveDstNow) { + $tmp_ofset = $tmp_ofset - 60; + } foreach ($this->cisco_timezone as $key => $value) { - if (($value['offset'] == $tmp_ofset) and ( $value['daylight'] == $tmp_dli )) { + if (($value['offset'] == $tmp_ofset) and ( $value['daylight'] == $usesDaylight )) { + dbug('cisco_code found', $key); return $this->get_cisco_time_zone($key); break; } @@ -200,74 +209,53 @@ class extconfigs 'zh_TW' => array('code' => 'zh', 'language' => 'Chinese', 'locale' => 'Chinese_Taiwan', 'codepage' => 'ISO8859-1') ); private $cisco_timezone = array( - 'Dateline' => array('offset' => '-720', 'daylight' => ''), - 'Samoa' => array('offset' => '-660', 'daylight' => ''), - 'Hawaiian' => array('offset' => '-600', 'daylight' => ''), - 'Alaskan' => array('offset' => '-540', 'daylight' => 'Daylight'), - 'Pacific' => array('offset' => '-480', 'daylight' => 'Daylight'), - 'Mountain' => array('offset' => '-420', 'daylight' => 'Daylight'), - 'US Mountain' => array('offset' => '-420', 'daylight' => ''), - 'Central' => array('offset' => '-360', 'daylight' => 'Daylight'), - 'Mexico' => array('offset' => '-360', 'daylight' => 'Daylight'), - 'Canada Central' => array('offset' => '-360', 'daylight' => ''), - 'SA Pacific' => array('offset' => '-300', 'daylight' => ''), - 'Eastern' => array('offset' => '-300', 'daylight' => 'Daylight'), - 'US Eastern' => array('offset' => '-300', 'daylight' => ''), - 'Atlantic' => array('offset' => '-240', 'daylight' => 'Daylight'), - 'SA Western' => array('offset' => '-240', 'daylight' => ''), - 'Pacific SA' => array('offset' => '-240', 'daylight' => ''), - 'Newfoundland' => array('offset' => '-210', 'daylight' => 'Daylight'), - 'E. South America' => array('offset' => '-180', 'daylight' => 'Daylight'), - 'SA Eastern' => array('offset' => '-180', 'daylight' => ''), - 'Pacific SA' => array('offset' => '-180', 'daylight' => 'Daylight'), - 'Mid-Atlantic' => array('offset' => '-120', 'daylight' => 'Daylight'), - 'Azores' => array('offset' => '-060', 'daylight' => 'Daylight'), - 'GMT' => array('offset' => '00', 'daylight' => 'Daylight'), - 'Greenwich' => array('offset' => '00', 'daylight' => ''), - 'W. Europe' => array('offset' => '60', 'daylight' => 'Daylight'), - 'GTB' => array('offset' => '60', 'daylight' => 'Daylight'), - 'Egypt' => array('offset' => '60', 'daylight' => 'Daylight'), - 'E. Europe' => array('offset' => '60', 'daylight' => 'Daylight'), - 'Romance' => array('offset' => '120', 'daylight' => 'Daylight'), - 'Central Europe' => array('offset' => '120', 'daylight' => 'Daylight'), - 'South Africa' => array('offset' => '120', 'daylight' => ''), - 'Jerusalem' => array('offset' => '120', 'daylight' => 'Daylight'), - 'Saudi Arabia' => array('offset' => '180', 'daylight' => ''), - /* Russian Regions */ - 'Russian/Kaliningrad' => array('offset' => '120', 'daylight' => '', 'cisco_code' => 'South Africa Standard Time'), - 'Russian/Moscow' => array('offset' => '180', 'daylight' => '', 'cisco_code' => 'Russian Standard Time'), - 'Russian/St.Peterburg' => array('offset' => '180', 'daylight' => '', 'cisco_code' => 'Russian Standard Time'), - 'Russian/Samara' => array('offset' => '240', 'daylight' => '', 'cisco_code' => 'Arabian Standard Time'), - 'Russian/Novosibirsk' => array('offset' => '300', 'daylight' => '', 'cisco_code' => 'Ekaterinburg Standard Time'), - 'Russian/Ekaterinburg' => array('offset' => '300', 'daylight' => '', 'cisco_code' => 'Ekaterinburg Standard Time'), - 'Russian/Irkutsk' => array('offset' => '480', 'daylight' => '', 'cisco_code' => 'China Standard Time'), - 'Russian/Yakutsk' => array('offset' => '540', 'daylight' => '', 'cisco_code' => 'Tokyo Standard Time'), - 'Russian/Khabarovsk' => array('offset' => '600', 'daylight' => '', 'cisco_code' => 'West Pacific Standard Time'), - 'Russian/Vladivostok' => array('offset' => '600', 'daylight' => '', 'cisco_code' => 'West Pacific Standard Time'), - 'Russian/Sakhalin' => array('offset' => '660', 'daylight' => '', 'cisco_code' => 'Central Pacific Standard Time'), - 'Russian/Magadan' => array('offset' => '660', 'daylight' => '', 'cisco_code' => 'Central Pacific Standard Time'), - 'Russian/Kamchatka' => array('offset' => '720', 'daylight' => '', 'cisco_code' => 'Fiji Standard Time'), - /* EnD - Russian Regions */ - 'Iran' => array('offset' => '210', 'daylight' => 'Daylight'), - 'Caucasus' => array('offset' => '240', 'daylight' => 'Daylight'), - 'Arabian' => array('offset' => '240', 'daylight' => ''), - 'Afghanistan' => array('offset' => '270', 'daylight' => ''), - 'West Asia' => array('offset' => '300', 'daylight' => ''), - 'India' => array('offset' => '330', 'daylight' => ''), - 'Central Asia' => array('offset' => '360', 'daylight' => ''), - 'SE Asia' => array('offset' => '420', 'daylight' => ''), - 'China' => array('offset' => '480', 'daylight' => ''), - 'Taipei' => array('offset' => '480', 'daylight' => ''), - 'Tokyo' => array('offset' => '540', 'daylight' => ''), - 'Cen. Australia' => array('offset' => '570', 'daylight' => 'Daylight'), - 'AUS Central' => array('offset' => '570', 'daylight' => ''), - 'E. Australia' => array('offset' => '600', 'daylight' => ''), - 'AUS Eastern' => array('offset' => '600', 'daylight' => 'Daylight'), - 'West Pacific' => array('offset' => '600', 'daylight' => ''), - 'Tasmania' => array('offset' => '600', 'daylight' => 'Daylight'), - 'Central Pacific' => array('offset' => '660', 'daylight' => ''), - 'Fiji' => array('offset' => '720', 'daylight' => ''), - 'New Zealand' => array('offset' => '720', 'daylight' => 'Daylight') + 'Dateline' => array('offset' => '-720', 'daylight' => false), + 'Samoa' => array('offset' => '-660', 'daylight' => false), + 'Hawaiian' => array('offset' => '-600', 'daylight' => false), + 'Alaskan' => array('offset' => '-540', 'daylight' => true), + 'Pacific' => array('offset' => '-480', 'daylight' => true), + 'Mountain' => array('offset' => '-420', 'daylight' => true), + 'US Mountain' => array('offset' => '-420', 'daylight' => false), + 'Central' => array('offset' => '-360', 'daylight' => true), + 'Mexico' => array('offset' => '-360', 'daylight' => true), + 'Canada Central' => array('offset' => '-360', 'daylight' => false), + 'SA Pacific' => array('offset' => '-300', 'daylight' => false), + 'Eastern' => array('offset' => '-300', 'daylight' => true), + 'US Eastern' => array('offset' => '-300', 'daylight' => false), + 'Atlantic' => array('offset' => '-240', 'daylight' => true), + 'SA Western' => array('offset' => '-240', 'daylight' => false), + 'Pacific SA' => array('offset' => '-240', 'daylight' => false), + 'Newfoundland' => array('offset' => '-210', 'daylight' => true), + 'E. South America' => array('offset' => '-180', 'daylight' => true), + 'SA Eastern' => array('offset' => '-180', 'daylight' => false), + 'Pacific SA' => array('offset' => '-180', 'daylight' => true), + 'Mid-Atlantic' => array('offset' => '-120', 'daylight' => true), + 'Azores' => array('offset' => '-060', 'daylight' => true), + 'GMT' => array('offset' => '00', 'daylight' => true), + 'Greenwich' => array('offset' => '00', 'daylight' => false), + 'W. Europe' => array('offset' => '60', 'daylight' => true), + 'Central Europe' => array('offset' => '120', 'daylight' => true), + 'South Africa' => array('offset' => '120', 'daylight' => false), + 'Saudi Arabia' => array('offset' => '180', 'daylight' => false), + 'Iran' => array('offset' => '210', 'daylight' => true), + 'Caucasus' => array('offset' => '240', 'daylight' => true), + 'Arabian' => array('offset' => '240', 'daylight' => false), + 'Afghanistan' => array('offset' => '270', 'daylight' => false), + 'West Asia' => array('offset' => '300', 'daylight' => false), + 'India' => array('offset' => '330', 'daylight' => false), + 'Central Asia' => array('offset' => '360', 'daylight' => false), + 'SE Asia' => array('offset' => '420', 'daylight' => false), + 'China' => array('offset' => '480', 'daylight' => false), + 'Tokyo' => array('offset' => '540', 'daylight' => false), + 'Cen. Australia' => array('offset' => '570', 'daylight' => true), + 'AUS Central' => array('offset' => '570', 'daylight' => false), + 'E. Australia' => array('offset' => '600', 'daylight' => false), + 'AUS Eastern' => array('offset' => '600', 'daylight' => true), + 'West Pacific' => array('offset' => '600', 'daylight' => false), + 'Tasmania' => array('offset' => '600', 'daylight' => true), + 'Central Pacific' => array('offset' => '660', 'daylight' => false), + 'Fiji' => array('offset' => '720', 'daylight' => false), + 'New Zealand' => array('offset' => '720', 'daylight' => true) ); public function validate_init_path($confDir = '', $db_vars, $sccp_driver_replace = '')