Skip to content

Commit

Permalink
CS-5724: Adds proper time zone setting for Newscoop
Browse files Browse the repository at this point in the history
  • Loading branch information
m038 committed May 15, 2015
1 parent fc24e47 commit 15da820
Show file tree
Hide file tree
Showing 4 changed files with 50 additions and 42 deletions.
12 changes: 12 additions & 0 deletions newscoop/application/AppKernel.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,18 @@

class AppKernel extends Kernel
{
protected function initializeContainer()
{
parent::initializeContainer();

try {
$timeZone = $this->getContainer()->get('system_preferences_service')->TimeZone;
if (!empty($timeZone)) {
date_default_timezone_set($timeZone);
}
} catch (\Exception $e) { }
}

public function registerBundles()
{
$bundles = array(
Expand Down
7 changes: 4 additions & 3 deletions newscoop/include/campsite_init.php
Original file line number Diff line number Diff line change
Expand Up @@ -35,9 +35,10 @@
$preferencesService = \Zend_Registry::get('container')->getService('system_preferences_service');
$timeZone = $preferencesService->TimeZone;
if (!empty($timeZone)) {
$g_ado_db->Execute("SET SESSION time_zone = '" . $timeZone . ":00'");
$timeZone[0] = $timeZone[0] == '-' ? '+' : '-';
date_default_timezone_set('Etc/GMT' . $timeZone);
date_default_timezone_set($timeZone);
$sqlTimeZone = date('P', time());
// Better use offsets to UTC/GMT for MySQL because by default named timezones are not installed
$g_ado_db->Execute("SET SESSION time_zone = '" . $sqlTimeZone . "'");
} else {
// Some people forget to set their timezone in their php.ini,
// this prevents that from generating warnings
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
UPDATE `SystemPreferences` SET value = "Europe/London" WHERE varname = "TimeZone" AND value = "0";
UPDATE `SystemPreferences` SET value = "Europe/Brussels" WHERE varname = "TimeZone" AND value = "1";
UPDATE `SystemPreferences` SET value = "Europe/Athens" WHERE varname = "TimeZone" AND value = "2";
UPDATE `SystemPreferences` SET value = "Asia/Baghdad" WHERE varname = "TimeZone" AND value = "3";
UPDATE `SystemPreferences` SET value = "Asia/Muscat" WHERE varname = "TimeZone" AND value = "4";
UPDATE `SystemPreferences` SET value = "Asia/Yekaterinburg" WHERE varname = "TimeZone" AND value = "5";
UPDATE `SystemPreferences` SET value = "Asia/Almaty" WHERE varname = "TimeZone" AND value = "6";
UPDATE `SystemPreferences` SET value = "Asia/Bangkok" WHERE varname = "TimeZone" AND value = "7";
UPDATE `SystemPreferences` SET value = "Asia/Singapore" WHERE varname = "TimeZone" AND value = "8";
UPDATE `SystemPreferences` SET value = "Asia/Tokyo" WHERE varname = "TimeZone" AND value = "9";
UPDATE `SystemPreferences` SET value = "Asia/Vladivostok" WHERE varname = "TimeZone" AND value = "10";
UPDATE `SystemPreferences` SET value = "Asia/Magadan" WHERE varname = "TimeZone" AND value = "11";
UPDATE `SystemPreferences` SET value = "Asia/Kamchatka" WHERE varname = "TimeZone" AND value = "12";
UPDATE `SystemPreferences` SET value = "Atlantic/Azores" WHERE varname = "TimeZone" AND value = "-1";
UPDATE `SystemPreferences` SET value = "America/Noronha" WHERE varname = "TimeZone" AND value = "-2";
UPDATE `SystemPreferences` SET value = "America/Argentina/Buenos_Aires" WHERE varname = "TimeZone" AND value = "-3";
UPDATE `SystemPreferences` SET value = "America/La_Paz" WHERE varname = "TimeZone" AND value = "-4";
UPDATE `SystemPreferences` SET value = "America/Bogota" WHERE varname = "TimeZone" AND value = "-5";
UPDATE `SystemPreferences` SET value = "America/Mexico_City" WHERE varname = "TimeZone" AND value = "-6";
UPDATE `SystemPreferences` SET value = "America/Phoenix" WHERE varname = "TimeZone" AND value = "-7";
UPDATE `SystemPreferences` SET value = "America/Metlakatla" WHERE varname = "TimeZone" AND value = "-8";
UPDATE `SystemPreferences` SET value = "Pacific/Gambier" WHERE varname = "TimeZone" AND value = "-9";
UPDATE `SystemPreferences` SET value = "Pacific/Honolulu" WHERE varname = "TimeZone" AND value = "-10";
UPDATE `SystemPreferences` SET value = "Pacific/Midway" WHERE varname = "TimeZone" AND value = "-11";
UPDATE `SystemPreferences` SET value = "Pacific/Kwajalein" WHERE varname = "TimeZone" AND value = "-12";
48 changes: 9 additions & 39 deletions newscoop/src/Newscoop/NewscoopBundle/Form/Type/PreferencesType.php
Original file line number Diff line number Diff line change
Expand Up @@ -14,46 +14,16 @@

class PreferencesType extends AbstractType
{

public function buildForm(FormBuilderInterface $builder, array $options)
{
$timeZoneCities = array(
0 => 'London, Lisbon, Casablanca',
1 => 'Brussels, Copenhagen, Madrid, Paris',
2 => 'Athens, Istanbul, Jerusalem',
3 => 'Baghdad, Riyadh, Moscow, St. Petersburg',
4 => 'Abu Dhabi, Muscat, Baku, Tbilisi',
5 => 'Ekaterinburg, Islamabad, Karachi, Tashkent',
6 => 'Almaty, Dhaka, Colombo',
7 => 'Bangkok, Hanoi, Jakarta',
8 => 'Beijing, Perth, Singapore, Hong Kong',
9 => 'Tokyo, Seoul, Osaka, Sapporo, Yakutsk',
10 => 'Eastern Australia, Guam, Vladivostok',
11 => 'Magadan, Solomon Islands, New Caledonia',
12 => 'Auckland, Wellington, Fiji, Kamchatka',
-1 => 'Azores, Cape Verde Islands',
-2 => 'Mid-Atlantic',
-3 => 'Brazil, Buenos Aires, Georgetown',
-4 => 'Atlantic Time (Canada), Caracas, La Paz',
-5 => 'Eastern Time (US & Canada), Bogota, Lima',
-6 => 'Central Time (US & Canada), Mexico City',
-7 => 'Mountain Time (US & Canada)',
-8 => 'Pacific Time (US & Canada)',
-9 => 'Alaska',
-10 => 'Hawaii',
-11 => 'Midway Island, Samoa',
-12 => 'Eniwetok, Kwajalein',
);

$timezones = array();
for ($k = -12; $k < 13; $k++) {
$v = $k < 0 ? $k : '+' . $k;
if ($timeZoneCities[$k] != '') {
$timezones[$v] = "GMT $v:00 ({$timeZoneCities[$k]})";
} else {
$timezones[$v] = "GMT $v:00";
}
}
$timeZones = array();
array_walk(timezone_identifiers_list(), function($timeZone) use (&$timeZones) {
$timeZoneGroup = (strpos($timeZone, '/') !== false) ? substr($timeZone, 0, strpos($timeZone, '/')) : $timeZone;
$value = (strpos($timeZone, '/') !== false) ? substr($timeZone, strpos($timeZone, '/')+1) : $timeZone;
$value = str_replace('_', ' ', $value);
$value = str_replace('/', ' - ', $value);
$timeZones[$timeZoneGroup][$timeZone] = $value;
});

$availableCacheEngines = $options['cacheService']->getAvailableCacheEngines();
$availableTemplateCacheHandlers = \CampTemplateCache::availableHandlers();
Expand Down Expand Up @@ -129,7 +99,7 @@ public function buildForm(FormBuilderInterface $builder, array $options)
'required' => true
))
->add('timezone', 'choice', array(
'choices' => $timezones,
'choices' => $timeZones,
'empty_value' => 'newscoop.preferences.label.disabled',
'required' => false
))
Expand Down

0 comments on commit 15da820

Please sign in to comment.