136
|
1 |
<?php |
|
2 |
/* |
|
3 |
Copyright (c) 2006, Alex Tingle. $Revision: 236 $ |
|
4 |
|
|
5 |
This program is free software; you can redistribute it and/or |
|
6 |
modify it under the terms of the GNU General Public License |
|
7 |
as published by the Free Software Foundation; either version 2 |
|
8 |
of the License, or (at your option) any later version. |
|
9 |
|
|
10 |
This program is distributed in the hope that it will be useful, |
|
11 |
but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
12 |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
13 |
GNU General Public License for more details. |
|
14 |
|
|
15 |
You should have received a copy of the GNU General Public License |
|
16 |
along with this program; if not, write to the Free Software |
|
17 |
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. |
|
18 |
*/ |
|
19 |
|
|
20 |
// Deal with timezones differently, depending upon what PHP has to offer. |
|
21 |
if(function_exists('date_default_timezone_get')): |
|
22 |
|
|
23 |
// PHP5 |
|
24 |
function ec3_tz_push($tz) |
|
25 |
{ |
|
26 |
$old_tz=date_default_timezone_get(); |
|
27 |
date_default_timezone_set($tz); |
|
28 |
return $old_tz; |
|
29 |
} |
|
30 |
function ec3_tz_pop($tz) |
|
31 |
{ |
|
32 |
date_default_timezone_set($tz); |
|
33 |
} |
|
34 |
|
|
35 |
elseif(ini_get('safe_mode')): |
|
36 |
|
|
37 |
// PHP4 safe mode. |
|
38 |
function ec3_tz_push($tz) |
|
39 |
{ |
|
40 |
return $tz; |
|
41 |
} |
|
42 |
function ec3_tz_pop($tz) |
|
43 |
{ |
|
44 |
// do nothing |
|
45 |
} |
|
46 |
$ec3->tz_disabled=true; |
|
47 |
$ec3->tz=getenv('TZ'); |
|
48 |
|
|
49 |
else: |
|
50 |
|
|
51 |
// PHP4 safe mode OFF |
|
52 |
function ec3_tz_push($tz) |
|
53 |
{ |
|
54 |
$old_tz=getenv('TZ'); |
|
55 |
putenv("TZ=$tz"); |
|
56 |
return $old_tz; |
|
57 |
} |
|
58 |
function ec3_tz_pop($tz) |
|
59 |
{ |
|
60 |
putenv("TZ=$tz"); |
|
61 |
} |
|
62 |
|
|
63 |
endif; |
|
64 |
|
|
65 |
|
|
66 |
/** Converts a WordPress timestamp to Unix time. */ |
|
67 |
function ec3_to_time($timestamp) |
|
68 |
{ |
|
69 |
global $ec3; |
|
70 |
// Parse $timestamp and extract the Unix time. |
|
71 |
$old_tz=ec3_tz_push($ec3->tz); |
|
72 |
$unix_time = strtotime($timestamp); |
|
73 |
ec3_tz_pop($old_tz); |
|
74 |
// Unix time is seconds since the epoch (in UTC). |
|
75 |
return $unix_time; |
|
76 |
} |
|
77 |
|
|
78 |
/** Converts a WordPress timestamp to UTC. */ |
|
79 |
function ec3_to_utc($timestamp,$fmt='%Y%m%dT%H%M00Z') |
|
80 |
{ |
|
81 |
$result = gmstrftime($fmt,ec3_to_time($timestamp)); |
|
82 |
return $result; |
|
83 |
} |
|
84 |
|
|
85 |
/** Formats a Unix time as a time in the current timezone. */ |
|
86 |
function ec3_strftime($format,$unix_time=0) |
|
87 |
{ |
|
88 |
global $ec3; |
|
89 |
if(!$unix_time) |
|
90 |
$unix_time=time(); |
|
91 |
// Express the Unix time as a string for timezone $ec3->tz. |
|
92 |
$old_tz=ec3_tz_push($ec3->tz); |
|
93 |
$result = strftime($format,$unix_time); |
|
94 |
ec3_tz_pop($old_tz); |
|
95 |
return $result; |
|
96 |
} |
|
97 |
|
|
98 |
|
|
99 |
$ec3->today=ec3_strftime("%Y-%m-%d 00:00:00"); |
|
100 |
|
|
101 |
|
|
102 |
/** Call from within a <select>. Echos grouped options for all timezones. */ |
|
103 |
function ec3_get_tz_options($selected='') |
|
104 |
{ |
|
105 |
/** All possible timezones, by group. */ |
|
106 |
$groups = array( |
|
107 |
'Africa' => array( |
|
108 |
'Abidjan', |
|
109 |
'Accra', |
|
110 |
'Addis_Ababa', |
|
111 |
'Algiers', |
|
112 |
'Asmera', |
|
113 |
'Bamako', |
|
114 |
'Bangui', |
|
115 |
'Banjul', |
|
116 |
'Bissau', |
|
117 |
'Blantyre', |
|
118 |
'Brazzaville', |
|
119 |
'Bujumbura', |
|
120 |
'Cairo', |
|
121 |
'Casablanca', |
|
122 |
'Ceuta', |
|
123 |
'Conakry', |
|
124 |
'Dakar', |
|
125 |
'Dar_es_Salaam', |
|
126 |
'Djibouti', |
|
127 |
'Douala', |
|
128 |
'El_Aaiun', |
|
129 |
'Freetown', |
|
130 |
'Gaborone', |
|
131 |
'Harare', |
|
132 |
'Johannesburg', |
|
133 |
'Kampala', |
|
134 |
'Khartoum', |
|
135 |
'Kigali', |
|
136 |
'Kinshasa', |
|
137 |
'Lagos', |
|
138 |
'Libreville', |
|
139 |
'Lome', |
|
140 |
'Luanda', |
|
141 |
'Lubumbashi', |
|
142 |
'Lusaka', |
|
143 |
'Malabo', |
|
144 |
'Maputo', |
|
145 |
'Maseru', |
|
146 |
'Mbabane', |
|
147 |
'Mogadishu', |
|
148 |
'Monrovia', |
|
149 |
'Nairobi', |
|
150 |
'Ndjamena', |
|
151 |
'Niamey', |
|
152 |
'Nouakchott', |
|
153 |
'Ouagadougou', |
|
154 |
'Porto-Novo', |
|
155 |
'Sao_Tome', |
|
156 |
'Timbuktu', |
|
157 |
'Tripoli', |
|
158 |
'Tunis', |
|
159 |
'Windhoek' |
|
160 |
), |
|
161 |
'America' => array( |
|
162 |
'Adak', |
|
163 |
'Anchorage', |
|
164 |
'Anguilla', |
|
165 |
'Antigua', |
|
166 |
'Araguaina', |
|
167 |
'Argentina/Buenos_Aires', |
|
168 |
'Argentina/Catamarca', |
|
169 |
'Argentina/ComodRivadavia', |
|
170 |
'Argentina/Cordoba', |
|
171 |
'Argentina/Jujuy', |
|
172 |
'Argentina/La_Rioja', |
|
173 |
'Argentina/Mendoza', |
|
174 |
'Argentina/Rio_Gallegos', |
|
175 |
'Argentina/San_Juan', |
|
176 |
'Argentina/Tucuman', |
|
177 |
'Argentina/Ushuaia', |
|
178 |
'Aruba', |
|
179 |
'Asuncion', |
|
180 |
'Atikokan', |
|
181 |
'Atka', |
|
182 |
'Bahia', |
|
183 |
'Barbados', |
|
184 |
'Belem', |
|
185 |
'Belize', |
|
186 |
'Blanc-Sablon', |
|
187 |
'Boa_Vista', |
|
188 |
'Bogota', |
|
189 |
'Boise', |
|
190 |
'Buenos_Aires', |
|
191 |
'Cambridge_Bay', |
|
192 |
'Campo_Grande', |
|
193 |
'Cancun', |
|
194 |
'Caracas', |
|
195 |
'Catamarca', |
|
196 |
'Cayenne', |
|
197 |
'Cayman', |
|
198 |
'Chicago', |
|
199 |
'Chihuahua', |
|
200 |
'Coral_Harbour', |
|
201 |
'Cordoba', |
|
202 |
'Costa_Rica', |
|
203 |
'Cuiaba', |
|
204 |
'Curacao', |
|
205 |
'Danmarkshavn', |
|
206 |
'Dawson', |
|
207 |
'Dawson_Creek', |
|
208 |
'Denver', |
|
209 |
'Detroit', |
|
210 |
'Dominica', |
|
211 |
'Edmonton', |
|
212 |
'Eirunepe', |
|
213 |
'El_Salvador', |
|
214 |
'Ensenada', |
|
215 |
'Fort_Wayne', |
|
216 |
'Fortaleza', |
|
217 |
'Glace_Bay', |
|
218 |
'Godthab', |
|
219 |
'Goose_Bay', |
|
220 |
'Grand_Turk', |
|
221 |
'Grenada', |
|
222 |
'Guadeloupe', |
|
223 |
'Guatemala', |
|
224 |
'Guayaquil', |
|
225 |
'Guyana', |
|
226 |
'Halifax', |
|
227 |
'Havana', |
|
228 |
'Hermosillo', |
|
229 |
'Indiana/Indianapolis', |
|
230 |
'Indiana/Knox', |
|
231 |
'Indiana/Marengo', |
|
232 |
'Indiana/Petersburg', |
|
233 |
'Indiana/Vevay', |
|
234 |
'Indiana/Vincennes', |
|
235 |
'Indianapolis', |
|
236 |
'Inuvik', |
|
237 |
'Iqaluit', |
|
238 |
'Jamaica', |
|
239 |
'Jujuy', |
|
240 |
'Juneau', |
|
241 |
'Kentucky/Louisville', |
|
242 |
'Kentucky/Monticello', |
|
243 |
'Knox_IN', |
|
244 |
'La_Paz', |
|
245 |
'Lima', |
|
246 |
'Los_Angeles', |
|
247 |
'Louisville', |
|
248 |
'Maceio', |
|
249 |
'Managua', |
|
250 |
'Manaus', |
|
251 |
'Martinique', |
|
252 |
'Mazatlan', |
|
253 |
'Mendoza', |
|
254 |
'Menominee', |
|
255 |
'Merida', |
|
256 |
'Mexico_City', |
|
257 |
'Miquelon', |
|
258 |
'Moncton', |
|
259 |
'Monterrey', |
|
260 |
'Montevideo', |
|
261 |
'Montreal', |
|
262 |
'Montserrat', |
|
263 |
'Nassau', |
|
264 |
'New_York', |
|
265 |
'Nipigon', |
|
266 |
'Nome', |
|
267 |
'Noronha', |
|
268 |
'North_Dakota/Center', |
|
269 |
'North_Dakota/New_Salem', |
|
270 |
'Panama', |
|
271 |
'Pangnirtung', |
|
272 |
'Paramaribo', |
|
273 |
'Phoenix', |
|
274 |
'Port-au-Prince', |
|
275 |
'Port_of_Spain', |
|
276 |
'Porto_Acre', |
|
277 |
'Porto_Velho', |
|
278 |
'Puerto_Rico', |
|
279 |
'Rainy_River', |
|
280 |
'Rankin_Inlet', |
|
281 |
'Recife', |
|
282 |
'Regina', |
|
283 |
'Rio_Branco', |
|
284 |
'Rosario', |
|
285 |
'Santiago', |
|
286 |
'Santo_Domingo', |
|
287 |
'Sao_Paulo', |
|
288 |
'Scoresbysund', |
|
289 |
'Shiprock', |
|
290 |
'St_Johns', |
|
291 |
'St_Kitts', |
|
292 |
'St_Lucia', |
|
293 |
'St_Thomas', |
|
294 |
'St_Vincent', |
|
295 |
'Swift_Current', |
|
296 |
'Tegucigalpa', |
|
297 |
'Thule', |
|
298 |
'Thunder_Bay', |
|
299 |
'Tijuana', |
|
300 |
'Toronto', |
|
301 |
'Tortola', |
|
302 |
'Vancouver', |
|
303 |
'Virgin', |
|
304 |
'Whitehorse', |
|
305 |
'Winnipeg', |
|
306 |
'Yakutat', |
|
307 |
'Yellowknife' |
|
308 |
), |
|
309 |
'Antarctica' => array( |
|
310 |
'Casey', |
|
311 |
'Davis', |
|
312 |
'DumontDUrville', |
|
313 |
'Mawson', |
|
314 |
'McMurdo', |
|
315 |
'Palmer', |
|
316 |
'Rothera', |
|
317 |
'South_Pole', |
|
318 |
'Syowa', |
|
319 |
'Vostok' |
|
320 |
), |
|
321 |
'Arctic' => array('Longyearbyen'), |
|
322 |
'Asia' => array( |
|
323 |
'Aden', |
|
324 |
'Almaty', |
|
325 |
'Amman', |
|
326 |
'Anadyr', |
|
327 |
'Aqtau', |
|
328 |
'Aqtobe', |
|
329 |
'Ashgabat', |
|
330 |
'Ashkhabad', |
|
331 |
'Baghdad', |
|
332 |
'Bahrain', |
|
333 |
'Baku', |
|
334 |
'Bangkok', |
|
335 |
'Beirut', |
|
336 |
'Bishkek', |
|
337 |
'Brunei', |
|
338 |
'Calcutta', |
|
339 |
'Choibalsan', |
|
340 |
'Chongqing', |
|
341 |
'Chungking', |
|
342 |
'Colombo', |
|
343 |
'Dacca', |
|
344 |
'Damascus', |
|
345 |
'Dhaka', |
|
346 |
'Dili', |
|
347 |
'Dubai', |
|
348 |
'Dushanbe', |
|
349 |
'Gaza', |
|
350 |
'Harbin', |
|
351 |
'Hong_Kong', |
|
352 |
'Hovd', |
|
353 |
'Irkutsk', |
|
354 |
'Istanbul', |
|
355 |
'Jakarta', |
|
356 |
'Jayapura', |
|
357 |
'Jerusalem', |
|
358 |
'Kabul', |
|
359 |
'Kamchatka', |
|
360 |
'Karachi', |
|
361 |
'Kashgar', |
|
362 |
'Katmandu', |
|
363 |
'Krasnoyarsk', |
|
364 |
'Kuala_Lumpur', |
|
365 |
'Kuching', |
|
366 |
'Kuwait', |
|
367 |
'Macao', |
|
368 |
'Macau', |
|
369 |
'Magadan', |
|
370 |
'Makassar', |
|
371 |
'Manila', |
|
372 |
'Muscat', |
|
373 |
'Nicosia', |
|
374 |
'Novosibirsk', |
|
375 |
'Omsk', |
|
376 |
'Oral', |
|
377 |
'Phnom_Penh', |
|
378 |
'Pontianak', |
|
379 |
'Pyongyang', |
|
380 |
'Qatar', |
|
381 |
'Qyzylorda', |
|
382 |
'Rangoon', |
|
383 |
'Riyadh', |
|
384 |
'Saigon', |
|
385 |
'Sakhalin', |
|
386 |
'Samarkand', |
|
387 |
'Seoul', |
|
388 |
'Shanghai', |
|
389 |
'Singapore', |
|
390 |
'Taipei', |
|
391 |
'Tashkent', |
|
392 |
'Tbilisi', |
|
393 |
'Tehran', |
|
394 |
'Tel_Aviv', |
|
395 |
'Thimbu', |
|
396 |
'Thimphu', |
|
397 |
'Tokyo', |
|
398 |
'Ujung_Pandang', |
|
399 |
'Ulaanbaatar', |
|
400 |
'Ulan_Bator', |
|
401 |
'Urumqi', |
|
402 |
'Vientiane', |
|
403 |
'Vladivostok', |
|
404 |
'Yakutsk', |
|
405 |
'Yekaterinburg', |
|
406 |
'Yerevan' |
|
407 |
), |
|
408 |
'Atlantic' => array( |
|
409 |
'Azores', |
|
410 |
'Bermuda', |
|
411 |
'Canary', |
|
412 |
'Cape_Verde', |
|
413 |
'Faeroe', |
|
414 |
'Jan_Mayen', |
|
415 |
'Madeira', |
|
416 |
'Reykjavik', |
|
417 |
'South_Georgia', |
|
418 |
'St_Helena', |
|
419 |
'Stanley', |
|
420 |
), |
|
421 |
'Australia' => array( |
|
422 |
'ACT', |
|
423 |
'Adelaide', |
|
424 |
'Brisbane', |
|
425 |
'Broken_Hill', |
|
426 |
'Canberra', |
|
427 |
'Currie', |
|
428 |
'Darwin', |
|
429 |
'Hobart', |
|
430 |
'LHI', |
|
431 |
'Lindeman', |
|
432 |
'Lord_Howe', |
|
433 |
'Melbourne', |
|
434 |
'North', |
|
435 |
'NSW', |
|
436 |
'Perth', |
|
437 |
'Queensland', |
|
438 |
'South', |
|
439 |
'Sydney', |
|
440 |
'Tasmania', |
|
441 |
'Victoria', |
|
442 |
'West', |
|
443 |
'Yancowinna' |
|
444 |
), |
|
445 |
'Europe' => array( |
|
446 |
'Amsterdam', |
|
447 |
'Andorra', |
|
448 |
'Athens', |
|
449 |
'Belfast', |
|
450 |
'Belgrade', |
|
451 |
'Berlin', |
|
452 |
'Bratislava', |
|
453 |
'Brussels', |
|
454 |
'Bucharest', |
|
455 |
'Budapest', |
|
456 |
'Chisinau', |
|
457 |
'Copenhagen', |
|
458 |
'Dublin', |
|
459 |
'Gibraltar', |
|
460 |
'Guernsey', |
|
461 |
'Helsinki', |
|
462 |
'Isle_of_Man', |
|
463 |
'Istanbul', |
|
464 |
'Jersey', |
|
465 |
'Kaliningrad', |
|
466 |
'Kiev', |
|
467 |
'Lisbon', |
|
468 |
'Ljubljana', |
|
469 |
'London', |
|
470 |
'Luxembourg', |
|
471 |
'Madrid', |
|
472 |
'Malta', |
|
473 |
'Mariehamn', |
|
474 |
'Minsk', |
|
475 |
'Monaco', |
|
476 |
'Moscow', |
|
477 |
'Nicosia', |
|
478 |
'Oslo', |
|
479 |
'Paris', |
|
480 |
'Prague', |
|
481 |
'Riga', |
|
482 |
'Rome', |
|
483 |
'Samara', |
|
484 |
'San_Marino', |
|
485 |
'Sarajevo', |
|
486 |
'Simferopol', |
|
487 |
'Skopje', |
|
488 |
'Sofia', |
|
489 |
'Stockholm', |
|
490 |
'Tallinn', |
|
491 |
'Tirane', |
|
492 |
'Tiraspol', |
|
493 |
'Uzhgorod', |
|
494 |
'Vaduz', |
|
495 |
'Vatican', |
|
496 |
'Vienna', |
|
497 |
'Vilnius', |
|
498 |
'Volgograd', |
|
499 |
'Warsaw', |
|
500 |
'Zagreb', |
|
501 |
'Zaporozhye', |
|
502 |
'Zurich' |
|
503 |
), |
|
504 |
'Indian' => array( |
|
505 |
'Antananarivo', |
|
506 |
'Chagos', |
|
507 |
'Christmas', |
|
508 |
'Cocos', |
|
509 |
'Comoro', |
|
510 |
'Kerguelen', |
|
511 |
'Mahe', |
|
512 |
'Maldives', |
|
513 |
'Mauritius', |
|
514 |
'Mayotte', |
|
515 |
'Reunion' |
|
516 |
), |
|
517 |
'Pacific' => array( |
|
518 |
'Apia', |
|
519 |
'Auckland', |
|
520 |
'Chatham', |
|
521 |
'Easter', |
|
522 |
'Efate', |
|
523 |
'Enderbury', |
|
524 |
'Fakaofo', |
|
525 |
'Fiji', |
|
526 |
'Funafuti', |
|
527 |
'Galapagos', |
|
528 |
'Gambier', |
|
529 |
'Guadalcanal', |
|
530 |
'Guam', |
|
531 |
'Honolulu', |
|
532 |
'Johnston', |
|
533 |
'Kiritimati', |
|
534 |
'Kosrae', |
|
535 |
'Kwajalein', |
|
536 |
'Majuro', |
|
537 |
'Marquesas', |
|
538 |
'Midway', |
|
539 |
'Nauru', |
|
540 |
'Niue', |
|
541 |
'Norfolk', |
|
542 |
'Noumea', |
|
543 |
'Pago_Pago', |
|
544 |
'Palau', |
|
545 |
'Pitcairn', |
|
546 |
'Ponape', |
|
547 |
'Port_Moresby', |
|
548 |
'Rarotonga', |
|
549 |
'Saipan', |
|
550 |
'Samoa', |
|
551 |
'Tahiti', |
|
552 |
'Tarawa', |
|
553 |
'Tongatapu', |
|
554 |
'Truk', |
|
555 |
'Wake', |
|
556 |
'Wallis', |
|
557 |
'Yap' |
|
558 |
) |
|
559 |
); |
|
560 |
|
|
561 |
foreach($groups as $group => $zones) |
|
562 |
{ |
|
563 |
echo "<optgroup label='$group'>\n"; |
|
564 |
foreach($zones as $z) |
|
565 |
{ |
|
566 |
echo "<option value='$group/$z'"; |
|
567 |
if($selected=="$group/$z") |
|
568 |
echo ' selected="selected"'; |
|
569 |
echo ">$z</option>\n"; |
|
570 |
} |
|
571 |
echo '</optgroup>\n'; |
|
572 |
} |
|
573 |
} // end function ec3_get_tz_options() |
|
574 |
|
|
575 |
?> |