2 require_once 'Pman.php';
4 class Pman_Core_TimeZone extends Pman
10 if (!$this->getAuthUser()) {
11 $this->jerr("Not authenticated", array('authFailure' => true));
17 function get($base, $opts=array())
23 foreach(self::$offsets as $tz => $o) {
24 $arr = explode('/', $tz);
26 if(!empty($_REQUEST['region']) && $_REQUEST['region'] != $arr[0]) {
30 $areaStartSeach = $_REQUEST['query']['area_start'];
31 if(!empty($areaStartSeach) && substr(strtolower($arr[1]), 0, strlen($areaStartSeach)) != strtolower($areaStartSeach)){
38 'displayArea' => self::getDisplayArea($tz)
42 echo json_encode(array(
46 'successProperty' => 'success',
47 'totalProperty' => 'total',
56 'total' => count($data),
62 function post($base) {
66 static $offsets = array();
68 static function getOffsets()
70 if(!empty(self::$offsets)) {
71 return self::$offsets;
74 $ce = DB_DataObject::factory('core_enum');
77 *, TIME_FORMAT(TIMEDIFF(NOW(), CONVERT_TZ(NOW(), Name, "UTC")), "%H:%i") as offset
86 // ignroe timezone such as 'CET' and 'America/Argentina/Buenos_Aires'
87 if(substr_count($ce->Name, '/') != 1) {
91 $ar = explode('/', $ce->Name);
92 // ignore timezone such as 'Etc/GMT+8'
97 self::$offsets[$ce->Name] = substr($ce->offset, 0, 1) == '-' ? $ce->offset : '+' . $ce->offset;
100 return self::$offsets;
103 static function getDisplayArea($timezone)
108 if(!isset(self::$offsets[$timezone])) {
112 $ar = explode('/', $timezone);
114 // e.g. 'Hong_Kong (GMT +08:00)'
115 return $ar[1] . ' (GMT ' . self::$offsets[$timezone] . ')';