/** * 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; }