1: <?php
2: 3: 4:
5:
6: require_once('AwlQuery.php');
7: require_once('vComponent.php');
8:
9: class VTimezone extends vComponent {
10:
11: static function getInstance($name) {
12: $qry = new AwlQuery('SELECT * FROM timezones WHERE tzid = ? ORDER BY active DESC', $name);
13: if ( $qry->Exec('VTimezone',__LINE__,__FILE__) && $qry->rows() > 0 && $row = $qry->Fetch() ) {
14: $vtz = new vComponent($row->vtimezone);
15: if ( $vtz->GetType() == 'VTIMEZONE' ) return $vtz;
16: $tmp = $vtz->GetComponents('VTIMEZONE');
17: if ( count($tmp) < 1 || $tmp[0]->GetType() != 'VTIMEZONE' ) return null;
18: $vtz = $tmp[0];
19: return $vtz;
20: }
21: return null;
22: }
23:
24: static function msCdoToOlson($tzcdo) {
25: switch( $tzcdo ) {
26: 27: 28: 29:
30: case 0: return('UTC');
31: case 1: return('Europe/London');
32: case 2: return('Europe/Lisbon');
33: case 3: return('Europe/Paris');
34: case 4: return('Europe/Berlin');
35: case 5: return('Europe/Bucharest');
36: case 6: return('Europe/Prague');
37: case 7: return('Europe/Athens');
38: case 8: return('America/Brasilia');
39: case 9: return('America/Halifax');
40: case 10: return('America/New_York');
41: case 11: return('America/Chicago');
42: case 12: return('America/Denver');
43: case 13: return('America/Los_Angeles');
44: case 14: return('America/Anchorage');
45: case 15: return('Pacific/Honolulu');
46: case 16: return('Pacific/Apia');
47: case 17: return('Pacific/Auckland');
48: case 18: return('Australia/Brisbane');
49: case 19: return('Australia/Adelaide');
50: case 20: return('Asia/Tokyo');
51: case 21: return('Asia/Singapore');
52: case 22: return('Asia/Bangkok');
53: case 23: return('Asia/Kolkata');
54: case 24: return('Asia/Muscat');
55: case 25: return('Asia/Tehran');
56: case 26: return('Asia/Baghdad');
57: case 27: return('Asia/Jerusalem');
58: case 28: return('America/St_Johns');
59: case 29: return('Atlantic/Azores');
60: case 30: return('America/Noronha');
61: case 31: return('Africa/Casablanca');
62: case 32: return('America/Argentina/Buenos_Aires');
63: case 33: return('America/La_Paz');
64: case 34: return('America/Indiana/Indianapolis');
65: case 35: return('America/Bogota');
66: case 36: return('America/Regina');
67: case 37: return('America/Tegucigalpa');
68: case 38: return('America/Phoenix');
69: case 39: return('Pacific/Kwajalein');
70: case 40: return('Pacific/Fiji');
71: case 41: return('Asia/Magadan');
72: case 42: return('Australia/Hobart');
73: case 43: return('Pacific/Guam');
74: case 44: return('Australia/Darwin');
75: case 45: return('Asia/Shanghai');
76: case 46: return('Asia/Novosibirsk');
77: case 47: return('Asia/Karachi');
78: case 48: return('Asia/Kabul');
79: case 49: return('Africa/Cairo');
80: case 50: return('Africa/Harare');
81: case 51: return('Europe/Moscow');
82: case 53: return('Atlantic/Cape_Verde');
83: case 54: return('Asia/Yerevan');
84: case 55: return('America/Panama');
85: case 56: return('Africa/Nairobi');
86: case 58: return('Asia/Yekaterinburg');
87: case 59: return('Europe/Helsinki');
88: case 60: return('America/Godthab');
89: case 61: return('Asia/Rangoon');
90: case 62: return('Asia/Kathmandu');
91: case 63: return('Asia/Irkutsk');
92: case 64: return('Asia/Krasnoyarsk');
93: case 65: return('America/Santiago');
94: case 66: return('Asia/Colombo');
95: case 67: return('Pacific/Tongatapu');
96: case 68: return('Asia/Vladivostok');
97: case 69: return('Africa/Ndjamena');
98: case 70: return('Asia/Yakutsk');
99: case 71: return('Asia/Dhaka');
100: case 72: return('Asia/Seoul');
101: case 73: return('Australia/Perth');
102: case 74: return('Asia/Riyadh');
103: case 75: return('Asia/Taipei');
104: case 76: return('Australia/Sydney');
105:
106: case 57:
107: case 52:
108: default:
109: }
110: return null;
111: }
112:
113:
114: }