예제 #1
0
 /**
  * Returns a list of supported timezones
  * Triggers 'timezones','events_api' hook if $filter is set to true
  *
  * @param boolean $filter  If false, returns all supported PHP timezones
  * @param mixed   $format  Timezone label date format; if false, uses elgg_echo($tz_id)
  * @param mixed   $ts      Optional timestamp for label format
  * @param string  $sort_by 'alpha' or 'offset'
  * @return array
  */
 public static function getTimezones($filter = true, $format = false, $ts = 'now', $sort = self::TIMEZONE_SORT_ALPHA)
 {
     $tz_ids = DateTimeZone::listIdentifiers();
     $defaults = array();
     foreach ($tz_ids as $tz_id) {
         $defaults[$tz_id] = Util::getTimezoneLabel($tz_id, $format, $ts);
     }
     switch ($sort) {
         case self::TIMEZONE_SORT_ALPHA:
             asort($defaults);
             break;
         case self::TIMEZONE_SORT_OFFSET:
             uksort($defaults, array(self, 'compareTimezonesByOffset'));
             break;
     }
     if ($filter) {
         return elgg_trigger_plugin_hook('timezones', 'events_api', null, $defaults);
     }
     return $defaults;
 }