Find correct Cisco TZ Code

This commit is contained in:
steve-lad 2021-06-12 11:29:26 +02:00
parent 84925a334e
commit 8303ec28a4

View file

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