Back to TimezoneField class

Method getGroups

protected array
getGroups
()
Method to get the time zone field option groups.
Returns
  • array The field option objects as a nested array in groups.
Since
  • 1.7.0
Class: TimezoneField
Project: Joomla

Method getGroups - Source code

/**
 * Method to get the time zone field option groups.
 *
 * @return  array  The field option objects as a nested array in groups.
 *
 * @since   1.7.0
 */
protected function getGroups()
{
    $groups = array();
    // Get the list of time zones from the server.
    $zones = \DateTimeZone::listIdentifiers();
    // Build the group lists.
    foreach ($zones as $zone) {
        // Time zones not in a group we will ignore.
        if (strpos($zone, '/') === false) {
            continue;
        }
        // Get the group/locale from the timezone.
        list($group, $locale) = explode('/', $zone, 2);
        // Only use known groups.
        if (\in_array($group, self::$zones)) {
            // Initialize the group if necessary.
            if (!isset($groups[$group])) {
                $groups[$group] = array();
            }
            // Only add options where a locale exists.
            if (!empty($locale)) {
                $groups[$group][$zone] = HTMLHelper::_('select.option', $zone, str_replace('_', ' ', $locale), 'value', 'text', false);
            }
        }
    }
    // Sort the group lists.
    ksort($groups);
    foreach ($groups as &$location) {
        sort($location);
    }
    // Merge any additional groups in the XML definition.
    $groups = array_merge(parent::getGroups(), $groups);
    return $groups;
}