From 3c1451a9fc08505892d200f9a9a7a7978dc8db2f Mon Sep 17 00:00:00 2001 From: Bram Goffings Date: Wed, 1 Aug 2012 13:11:36 +0200 Subject: [PATCH] regional settings to config --- core/includes/bootstrap.inc | 8 +++-- core/includes/install.core.inc | 8 +++-- core/modules/locale/locale.module | 2 +- .../Drupal/openid/Tests/OpenIDRegistrationTest.php | 24 ++++++++++---- .../lib/Drupal/simpletest/WebTestBase.php | 2 +- core/modules/system/config/system.regional.yml | 10 ++++++ .../Drupal/system/Tests/Common/FormatDateTest.php | 2 +- .../Drupal/system/Tests/System/DateTimeTest.php | 9 ++++-- core/modules/system/system.admin.inc | 37 ++++++++++++++++------ core/modules/system/system.install | 16 ++++++++++ core/modules/system/system.module | 15 +++++---- .../lib/Drupal/user/Tests/UserRegistrationTest.php | 8 +++-- .../lib/Drupal/user/Tests/UserTimeZoneTest.php | 7 ++-- core/modules/user/user.api.php | 3 +- 14 files changed, 111 insertions(+), 40 deletions(-) create mode 100644 core/modules/system/config/system.regional.yml diff --git a/core/includes/bootstrap.inc b/core/includes/bootstrap.inc index 082db6d..b2f127d 100644 --- a/core/includes/bootstrap.inc +++ b/core/includes/bootstrap.inc @@ -2187,13 +2187,15 @@ function drupal_bootstrap($phase = NULL, $new_phase = TRUE) { */ function drupal_get_user_timezone() { global $user; - if (variable_get('configurable_timezones', 1) && $user->uid && $user->timezone) { + $config = config('system.regional'); + if ($config->get('timezone.user.configurable') && $user->uid && $user->timezone) { return $user->timezone; } else { // Ignore PHP strict notice if time zone has not yet been set in the php.ini // configuration. - return variable_get('date_default_timezone', @date_default_timezone_get()); + $config_data_default_timezone = $config->get('timezone.default'); + return isset($config_data_default_timezone) ? $config_data_default_timezone : @date_default_timezone_get(); } } @@ -2420,7 +2422,7 @@ function drupal_get_bootstrap_phase() { * @code * // Register the LANGUAGE_TYPE_INTERFACE definition. Registered definitions * // do not necessarily need to be named by a constant. - * // See + * // See * // http://symfony.com/doc/current/components/dependency_injection/introduction.html * // for usage examples of adding object initialization code after register(). * $container = drupal_container(); diff --git a/core/includes/install.core.inc b/core/includes/install.core.inc index a112b5e..43f24fc 100644 --- a/core/includes/install.core.inc +++ b/core/includes/install.core.inc @@ -1830,7 +1830,7 @@ function _install_configure_form($form, &$form_state, &$install_state) { '#type' => 'select', '#title' => st('Default country'), '#empty_value' => '', - '#default_value' => variable_get('site_default_country', NULL), + '#default_value' => config('system.regional')->get('country.default'), '#options' => $countries, '#description' => st('Select the default country for the site.'), '#weight' => 0, @@ -1892,8 +1892,10 @@ function install_configure_form_submit($form, &$form_state) { ->set('mail', $form_state['values']['site_mail']) ->save(); - variable_set('date_default_timezone', $form_state['values']['date_default_timezone']); - variable_set('site_default_country', $form_state['values']['site_default_country']); + config('system.regional') + ->set('timezone.default', $form_state['values']['date_default_timezone']) + ->set('country.default', $form_state['values']['site_default_country']) + ->save(); // Enable update.module if this option was selected. if ($form_state['values']['update_status_module'][1]) { diff --git a/core/modules/locale/locale.module b/core/modules/locale/locale.module index ce20b59..00ea194 100644 --- a/core/modules/locale/locale.module +++ b/core/modules/locale/locale.module @@ -438,7 +438,7 @@ function locale_library_info_alter(&$libraries, $module) { 'ui' => array( 'datepicker' => array( 'isRTL' => $language_interface->direction == LANGUAGE_RTL, - 'firstDay' => variable_get('date_first_day', 0), + 'firstDay' => config('system.regional')->get('date.first_weekday'), ), ), ), diff --git a/core/modules/openid/lib/Drupal/openid/Tests/OpenIDRegistrationTest.php b/core/modules/openid/lib/Drupal/openid/Tests/OpenIDRegistrationTest.php index a143d34..4a42167 100644 --- a/core/modules/openid/lib/Drupal/openid/Tests/OpenIDRegistrationTest.php +++ b/core/modules/openid/lib/Drupal/openid/Tests/OpenIDRegistrationTest.php @@ -30,8 +30,11 @@ class OpenIDRegistrationTest extends OpenIDTestBase { */ function testRegisterUserWithEmailVerification() { variable_set('user_email_verification', TRUE); - variable_get('configurable_timezones', 1); - variable_set('date_default_timezone', 'Europe/Brussels'); + + config('system.regional') + ->set('timezone.user.configurable', 1) + ->set('timezone.default', 'Europe/Brussels') + ->save(); // Tell openid_test.module to respond with these SREG fields. variable_set('openid_test_response', array( @@ -87,8 +90,11 @@ class OpenIDRegistrationTest extends OpenIDTestBase { */ function testRegisterUserWithoutEmailVerification() { variable_set('user_email_verification', FALSE); - variable_get('configurable_timezones', 1); - variable_set('date_default_timezone', 'Europe/Brussels'); + + config('system.regional') + ->set('timezone.user.configurable', 1) + ->set('timezone.default', 'Europe/Brussels') + ->save(); // Tell openid_test.module to respond with these SREG fields. variable_set('openid_test_response', array( @@ -128,8 +134,10 @@ class OpenIDRegistrationTest extends OpenIDTestBase { * information (a username that is already taken, and no e-mail address). */ function testRegisterUserWithInvalidSreg() { - variable_get('configurable_timezones', 1); - variable_set('date_default_timezone', 'Europe/Brussels'); + config('system.regional') + ->set('timezone.user.configurable', 1) + ->set('timezone.default', 'Europe/Brussels') + ->save(); // Tell openid_test.module to respond with these SREG fields. $web_user = $this->drupalCreateUser(array()); @@ -219,7 +227,9 @@ class OpenIDRegistrationTest extends OpenIDTestBase { */ function testRegisterUserWithAXButNoSREG() { variable_set('user_email_verification', FALSE); - variable_set('date_default_timezone', 'Europe/Brussels'); + config('system.regional') + ->set('timezone.default', 'Europe/Brussels') + ->save(); // Tell openid_test.module to respond with these AX fields. variable_set('openid_test_response', array( diff --git a/core/modules/simpletest/lib/Drupal/simpletest/WebTestBase.php b/core/modules/simpletest/lib/Drupal/simpletest/WebTestBase.php index 73afaa6..ee43e95 100644 --- a/core/modules/simpletest/lib/Drupal/simpletest/WebTestBase.php +++ b/core/modules/simpletest/lib/Drupal/simpletest/WebTestBase.php @@ -671,7 +671,7 @@ abstract class WebTestBase extends TestBase { // Restore necessary variables. variable_set('install_task', 'done'); config('system.site')->set('mail', 'simpletest@example.com')->save(); - variable_set('date_default_timezone', date_default_timezone_get()); + config('system.regional')->set('timezone.default', date_default_timezone_get())->save(); // Set up English language. unset($conf['language_default']); diff --git a/core/modules/system/config/system.regional.yml b/core/modules/system/config/system.regional.yml new file mode 100644 index 0000000..99c5489 --- /dev/null +++ b/core/modules/system/config/system.regional.yml @@ -0,0 +1,10 @@ +country: + default: '' +date: + first_weekday: 'Sunday' +timezone: + default: '' + user: + configurable: '1' + default: '0' + not_set_warning: '0' diff --git a/core/modules/system/lib/Drupal/system/Tests/Common/FormatDateTest.php b/core/modules/system/lib/Drupal/system/Tests/Common/FormatDateTest.php index 7a71d33..78e7df3 100644 --- a/core/modules/system/lib/Drupal/system/Tests/Common/FormatDateTest.php +++ b/core/modules/system/lib/Drupal/system/Tests/Common/FormatDateTest.php @@ -29,7 +29,7 @@ class FormatDateTest extends WebTestBase { function setUp() { parent::setUp('language'); - variable_set('configurable_timezones', 1); + config('system.regional')->set('timezone.user.configurable', 1)->save(); variable_set('date_format_long', 'l, j. F Y - G:i'); variable_set('date_format_medium', 'j. F Y - G:i'); variable_set('date_format_short', 'Y M j - g:ia'); diff --git a/core/modules/system/lib/Drupal/system/Tests/System/DateTimeTest.php b/core/modules/system/lib/Drupal/system/Tests/System/DateTimeTest.php index 84bd7c6..b5a0292 100644 --- a/core/modules/system/lib/Drupal/system/Tests/System/DateTimeTest.php +++ b/core/modules/system/lib/Drupal/system/Tests/System/DateTimeTest.php @@ -35,8 +35,11 @@ class DateTimeTest extends WebTestBase { */ function testTimeZoneHandling() { // Setup date/time settings for Honolulu time. - variable_set('date_default_timezone', 'Pacific/Honolulu'); - variable_set('configurable_timezones', 0); + $config = config('system.regional'); + $config + ->set('timezone.default', 'Pacific/Honolulu') + ->set('timezone.user.configurable', 0) + ->save(); variable_set('date_format_medium', 'Y-m-d H:i:s O'); // Create some nodes with different authored-on dates. @@ -52,7 +55,7 @@ class DateTimeTest extends WebTestBase { $this->assertText('2007-07-31 21:00:00 -1000', t('Date should be identical, with GMT offset of -10 hours.')); // Set time zone to Los Angeles time. - variable_set('date_default_timezone', 'America/Los_Angeles'); + $config->set('timezone.default', 'America/Los_Angeles')->save(); // Confirm date format and time zone. $this->drupalGet("node/$node1->nid"); diff --git a/core/modules/system/system.admin.inc b/core/modules/system/system.admin.inc index 2947245..5cc46d4 100644 --- a/core/modules/system/system.admin.inc +++ b/core/modules/system/system.admin.inc @@ -1944,8 +1944,9 @@ function system_rss_feeds_settings_submit($form, &$form_state) { * @see system_settings_form() * @see system_regional_settings_submit() */ -function system_regional_settings() { +function system_regional_settings($form, &$form_state) { $countries = country_get_list(); + $config = config('system.regional'); // Date settings: $zones = system_time_zones(); @@ -1959,7 +1960,7 @@ function system_regional_settings() { '#type' => 'select', '#title' => t('Default country'), '#empty_value' => '', - '#default_value' => variable_get('site_default_country', ''), + '#default_value' => $config->get('country.default'), '#options' => $countries, '#attributes' => array('class' => array('country-detect')), ); @@ -1967,8 +1968,8 @@ function system_regional_settings() { $form['locale']['date_first_day'] = array( '#type' => 'select', '#title' => t('First day of week'), - '#default_value' => variable_get('date_first_day', 0), - '#options' => array(0 => t('Sunday'), 1 => t('Monday'), 2 => t('Tuesday'), 3 => t('Wednesday'), 4 => t('Thursday'), 5 => t('Friday'), 6 => t('Saturday')), + '#default_value' => $config->get('date.first_weekday'), + '#options' => array('Sunday' => t('Sunday'), 'Monday' => t('Monday'), 'Tuesday' => t('Tuesday'), 'Wednesday' => t('Wednesday'), 'Thrusday' => t('Thursday'), 'Friday' => t('Friday'), 'Saturday' => t('Saturday')), ); $form['timezone'] = array( @@ -1976,14 +1977,15 @@ function system_regional_settings() { '#title' => t('Time zones'), ); + $date_default_timezone = $config->get('timezone.default'); $form['timezone']['date_default_timezone'] = array( '#type' => 'select', '#title' => t('Default time zone'), - '#default_value' => variable_get('date_default_timezone', date_default_timezone_get()), + '#default_value' => isset($date_default_timezone) ? $date_default_timezone : date_default_timezone_get(), '#options' => $zones, ); - $configurable_timezones = variable_get('configurable_timezones', 1); + $configurable_timezones = $config->get('timezone.user.configurable'); $form['timezone']['configurable_timezones'] = array( '#type' => 'checkbox', '#title' => t('Users may set their own time zone.'), @@ -2003,14 +2005,14 @@ function system_regional_settings() { $form['timezone']['configurable_timezones_wrapper']['empty_timezone_message'] = array( '#type' => 'checkbox', '#title' => t('Remind users at login if their time zone is not set.'), - '#default_value' => variable_get('empty_timezone_message', 0), + '#default_value' => $config->get('timezone.user.not_set_warning'), '#description' => t('Only applied if users may set their own time zone.') ); $form['timezone']['configurable_timezones_wrapper']['user_default_timezone'] = array( '#type' => 'radios', '#title' => t('Time zone for new users'), - '#default_value' => variable_get('user_default_timezone', DRUPAL_USER_TIMEZONE_DEFAULT), + '#default_value' => $config->get('timezone.user.default'), '#options' => array( DRUPAL_USER_TIMEZONE_DEFAULT => t('Default time zone.'), DRUPAL_USER_TIMEZONE_EMPTY => t('Empty time zone.'), @@ -2019,7 +2021,24 @@ function system_regional_settings() { '#description' => t('Only applied if users may set their own time zone.') ); - return system_settings_form($form); + return system_config_form($form, $form_state); +} + +/** + * Form builder submit handler; Handle submission for regional settings. + * + * @ingroup forms + * @see system_settings_form() + */ +function system_regional_settings_submit($form, &$form_state) { + config('system.regional') + ->set('country.default', $form_state['values']['site_default_country']) + ->set('date.first_weekday', $form_state['values']['date_first_day']) + ->set('timezone.default', $form_state['values']['date_default_timezone']) + ->set('timezone.user.configurable', $form_state['values']['configurable_timezones']) + ->set('timezone.user.not_set_warning', $form_state['values']['empty_timezone_message']) + ->set('timezone.user.default', $form_state['values']['user_default_timezone']) + ->save(); } /** diff --git a/core/modules/system/system.install b/core/modules/system/system.install index 96c02c3..ff929a7 100644 --- a/core/modules/system/system.install +++ b/core/modules/system/system.install @@ -1998,6 +1998,22 @@ function system_update_8014() { } /** + * Moves site system regional settings from variable to config. + * + * @ingroup config_upgrade + */ +function system_update_8015() { + update_variables_to_config('system.regional', array( + 'site_default_country' => 'country.default', + 'date_first_day' => 'date.first_weekday', + 'date_default_timezone' => 'timezone.default', + 'configurable_timezones' => 'timezone.user.configurable', + 'empty_timezone_message' => 'timezone.user.not_set_warning', + 'user_default_timezone' => 'timezone.user.default', + )); +} + +/** * @} End of "defgroup updates-7.x-to-8.x". * The next series of updates should start at 9000. */ diff --git a/core/modules/system/system.module b/core/modules/system/system.module index 4c34dd2..caea3d8 100644 --- a/core/modules/system/system.module +++ b/core/modules/system/system.module @@ -2212,7 +2212,7 @@ function system_custom_theme() { * Implements hook_form_FORM_ID_alter(). */ function system_form_user_profile_form_alter(&$form, &$form_state) { - if (variable_get('configurable_timezones', 1)) { + if (config('system.regional')->get('timezone.user.configurable')) { system_user_timezone($form, $form_state); } return $form; @@ -2222,7 +2222,8 @@ function system_form_user_profile_form_alter(&$form, &$form_state) { * Implements hook_form_FORM_ID_alter(). */ function system_form_user_register_form_alter(&$form, &$form_state) { - if (variable_get('configurable_timezones', 1) && variable_get('user_default_timezone', DRUPAL_USER_TIMEZONE_DEFAULT) == DRUPAL_USER_TIMEZONE_SELECT) { + $config = config('system.regional'); + if ($config->get('timezone.user.configurable') && $config->get('timezone.user.default') == DRUPAL_USER_TIMEZONE_SELECT) { system_user_timezone($form, $form_state); return $form; } @@ -2232,8 +2233,9 @@ function system_form_user_register_form_alter(&$form, &$form_state) { * Implements hook_user_presave(). */ function system_user_presave($account) { - if (variable_get('configurable_timezones', 1) && empty($account->timezone) && !variable_get('user_default_timezone', DRUPAL_USER_TIMEZONE_DEFAULT)) { - $account->timezone = variable_get('date_default_timezone', ''); + $config = config('system.regional'); + if ($config->get('timezone.user.configurable') && empty($account->timezone) && !$config->get('timezone.user.default')) { + $account->timezone = $config->get('timezone.default'); } } @@ -2241,8 +2243,9 @@ function system_user_presave($account) { * Implements hook_user_login(). */ function system_user_login(&$edit, $account) { + $config = config('system.regional'); // If the user has a NULL time zone, notify them to set a time zone. - if (!$account->timezone && variable_get('configurable_timezones', 1) && variable_get('empty_timezone_message', 0)) { + if (!$account->timezone && $config->get('timezone.user.configurable') && $config->get('timezone.user.not_set_warning')) { drupal_set_message(t('Configure your account time zone setting.', array('@user-edit' => url("user/$account->uid/edit", array('query' => drupal_get_destination(), 'fragment' => 'edit-timezone'))))); } } @@ -2263,7 +2266,7 @@ function system_user_timezone(&$form, &$form_state) { $form['timezone']['timezone'] = array( '#type' => 'select', '#title' => t('Time zone'), - '#default_value' => isset($account->timezone) ? $account->timezone : ($account->uid == $user->uid ? variable_get('date_default_timezone', '') : ''), + '#default_value' => isset($account->timezone) ? $account->timezone : ($account->uid == $user->uid ? config('system.regional')->get('timezone.default') : ''), '#options' => system_time_zones($account->uid != $user->uid), '#description' => t('Select the desired local time and time zone. Dates and times throughout this site will be displayed using this time zone.'), ); diff --git a/core/modules/user/lib/Drupal/user/Tests/UserRegistrationTest.php b/core/modules/user/lib/Drupal/user/Tests/UserRegistrationTest.php index 56ad9a0..f9daf4e 100644 --- a/core/modules/user/lib/Drupal/user/Tests/UserRegistrationTest.php +++ b/core/modules/user/lib/Drupal/user/Tests/UserRegistrationTest.php @@ -145,8 +145,10 @@ class UserRegistrationTest extends WebTestBase { variable_set('user_email_verification', FALSE); // Set the default timezone to Brussels. - variable_set('configurable_timezones', 1); - variable_set('date_default_timezone', 'Europe/Brussels'); + $config = config('system.regional') + ->set('timezone.user.configurable', 1) + ->set('timezone.default', 'Europe/Brussels') + ->save(); // Check that the account information fieldset's options are not displayed // is a fieldset if there is not more than one fieldset in the form. @@ -169,7 +171,7 @@ class UserRegistrationTest extends WebTestBase { $this->assertEqual($new_user->signature, '', t('Correct signature field.')); $this->assertTrue(($new_user->created > REQUEST_TIME - 20 ), t('Correct creation time.')); $this->assertEqual($new_user->status, variable_get('user_register', USER_REGISTER_VISITORS_ADMINISTRATIVE_APPROVAL) == USER_REGISTER_VISITORS ? 1 : 0, t('Correct status field.')); - $this->assertEqual($new_user->timezone, variable_get('date_default_timezone'), t('Correct time zone field.')); + $this->assertEqual($new_user->timezone, $config->get('timezone.default'), t('Correct time zone field.')); $this->assertEqual($new_user->langcode, language_default()->langcode, t('Correct language field.')); $this->assertEqual($new_user->preferred_langcode, language_default()->langcode, t('Correct preferred language field.')); $this->assertEqual($new_user->picture, 0, t('Correct picture field.')); diff --git a/core/modules/user/lib/Drupal/user/Tests/UserTimeZoneTest.php b/core/modules/user/lib/Drupal/user/Tests/UserTimeZoneTest.php index 3ff4daf..a4a022a 100644 --- a/core/modules/user/lib/Drupal/user/Tests/UserTimeZoneTest.php +++ b/core/modules/user/lib/Drupal/user/Tests/UserTimeZoneTest.php @@ -26,8 +26,11 @@ class UserTimeZoneTest extends WebTestBase { */ function testUserTimeZone() { // Setup date/time settings for Los Angeles time. - variable_set('date_default_timezone', 'America/Los_Angeles'); - variable_set('configurable_timezones', 1); + $config = config('system.regional'); + $config + ->set('timezone.user.configurable', 1) + ->set('timezone.default', 'America/Los_Angeles') + ->save(); variable_set('date_format_medium', 'Y-m-d H:i T'); // Create a user account and login. diff --git a/core/modules/user/user.api.php b/core/modules/user/user.api.php index 98b9887..2b69350 100644 --- a/core/modules/user/user.api.php +++ b/core/modules/user/user.api.php @@ -297,8 +297,9 @@ function hook_user_update($account) { * The user object on which the operation was just performed. */ function hook_user_login(&$edit, $account) { + $config = config('system.regional'); // If the user has a NULL time zone, notify them to set a time zone. - if (!$account->timezone && variable_get('configurable_timezones', 1) && variable_get('empty_timezone_message', 0)) { + if (!$account->timezone && $config->get('timezone.user.configurable') && $config->get('timezone.user.not_set_warning')) { drupal_set_message(t('Configure your account time zone setting.', array('@user-edit' => url("user/$account->uid/edit", array('query' => drupal_get_destination(), 'fragment' => 'edit-timezone'))))); } } -- 1.7.11.msysgit.1