Часовой пояс в phpFoX

Форум поддержки движка социальной сети phpFOX.
Аватара пользователя
Slash
Администратор
Сообщения: 2113
Зарегистрирован: Сб авг 11, 2012 7:39 am
Поблагодарили: 71 раз

Часовой пояс в phpFoX

Сообщение Slash » Пн сен 12, 2016 9:04 am

Заметил, что в движке отображается время на час меньше, то есть при выборе Asia/Omsk должно быть +6, а по факту +5. Немного покопавшись в коде, понял причину. В кэш генерируется файл time_zones.php, где содержится список часовых поясов (массив $aContent), начинается счет с ноля (с символом z):

Код: Выделить всё

  'z0' => 'Africa/Abidjan',
  'z1' => 'Africa/Accra',
  'z2' => 'Africa/Addis_Ababa',
  'z3' => 'Africa/Algiers',
На Омск выпадает z259:

Код: Выделить всё

  'z259' => 'Asia/Omsk', 
Я для пробы заменил z259 на z260 и получил правильный часовой пояс (+6), для остальных зон отобразилось, тоже правильно. Принял решение, начинать массив не с z0, а с z1. Для этого я немного изменил функцию getTimeZones, в файле: module/core/include/service/core.class.php, вот так:

Код: Выделить всё

    public function getTimeZones()
    {
        $cacheid = $this->cache()->set('time_zones');
        if (!($zones = $this->cache()->get($cacheid)) && PHPFOX_USE_DATE_TIME)
        {
            $timezones = DateTimeZone::listIdentifiers(2047);
            sort($timezones);
            $amount = count($timezones);
            for ($i = 1, $j = 0; $j < $amount; $i++, $j++)
            {
                $timezones['z' . $i] = $timezones[$j];
                unset($timezones[$j]);
            }

            $this->cache()->save($cacheid, $timezones);

            return $timezones;
        }
        else if (isset($zones) && is_array($zones) && !empty($zones))
        {
            return $zones;
        }

        return array(
            '-12'  => '(GMT -12:00)',
            '-11'  => '(GMT -11:00)',
            '-10'  => '(GMT -10:00)',
            '-9'   => '(GMT -9:00)',
            '-8'   => '(GMT -8:00)',
            '-7'   => '(GMT -7:00)',
            '-6'   => '(GMT -6:00)',
            '-5'   => '(GMT -5:00)',
            '-4.5' => '(GMT -4:30)',
            '-4'   => '(GMT -4:00)',
            '-3.5' => '(GMT -3:30)',
            '-3'   => '(GMT -3:00)',
            '-2'   => '(GMT -2:00)',
            '-1'   => '(GMT -1:00 hour)',
            '0'    => '(GMT)',
            '1'    => '(GMT +1:00 hour)',
            '2'    => '(GMT +2:00)',
            '3'    => '(GMT +3:00)',
            '3.5'  => '(GMT +3:30)',
            '4'    => '(GMT +4:00)',
            '4.5'  => '(GMT +4:30)',
            '5'    => '(GMT +5:00)',
            '5.5'  => '(GMT +5:30)',
            '5.75' => '(GMT +5:45)',
            '6'    => '(GMT +6:00) Novosibirsk, Omsk',
            '6.5'  => '(GMT +6:30)',
            '7'    => '(GMT +7:00)',
            '8'    => '(GMT +8:00)',
            '9'    => '(GMT +9:00)',
            '9.5'  => '(GMT +9:30)',
            '10'   => '(GMT +10:00)',
            '11'   => '(GMT +11:00)',
            '12'   => '(GMT +12:00)'    
        );
    } 
Изменения вступят в силу, только после очистки кэша.

Реклама

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость