diff --git a/core/cron.php b/core/cron.php index fa9aa14..126d991 100644 --- a/core/cron.php +++ b/core/cron.php @@ -20,7 +20,7 @@ if (!isset($_GET['cron_key']) || variable_get('cron_key', 'drupal') != $_GET['cr watchdog('cron', 'Cron could not run because an invalid key was used.', array(), WATCHDOG_NOTICE); drupal_access_denied(); } -elseif (variable_get('maintenance_mode', 0)) { +elseif (config('system.maintenance')->get('maintenance_mode')) { watchdog('cron', 'Cron could not run because the site is in maintenance mode.', array(), WATCHDOG_NOTICE); drupal_access_denied(); } diff --git a/core/includes/ajax.inc b/core/includes/ajax.inc index 8817356..dcfa055 100644 --- a/core/includes/ajax.inc +++ b/core/includes/ajax.inc @@ -515,8 +515,7 @@ function ajax_prepare_response($page_callback_result) { break; case MENU_SITE_OFFLINE: - $commands[] = ajax_command_alert(filter_xss_admin(variable_get('maintenance_mode_message', - t('@site is currently under maintenance. We should be back shortly. Thank you for your patience.', array('@site' => variable_get('site_name', 'Drupal')))))); + $commands[] = ajax_command_alert(filter_xss_admin(t(config('system.maintenance')->get('maintenance_mode_message'), array('@site' => variable_get('site_name', 'Drupal'))))); break; } } diff --git a/core/includes/common.inc b/core/includes/common.inc index a18e1e4..9a2963e 100644 --- a/core/includes/common.inc +++ b/core/includes/common.inc @@ -2592,8 +2592,7 @@ function drupal_deliver_html_page($page_callback_result) { drupal_maintenance_theme(); drupal_add_http_header('Status', '503 Service unavailable'); drupal_set_title(t('Site under maintenance')); - print theme('maintenance_page', array('content' => filter_xss_admin(variable_get('maintenance_mode_message', - t('@site is currently under maintenance. We should be back shortly. Thank you for your patience.', array('@site' => variable_get('site_name', 'Drupal'))))))); + print theme('maintenance_page', array('content' => filter_xss_admin(t(config('system.maintenance')->get('maintenance_mode_message'), array('@site' => variable_get('site_name', 'Drupal')))))); break; } } diff --git a/core/includes/menu.inc b/core/includes/menu.inc index 511c5d0..4b3d840 100644 --- a/core/includes/menu.inc +++ b/core/includes/menu.inc @@ -3795,7 +3795,7 @@ function _menu_router_save($menu, $masks) { */ function _menu_site_is_offline($check_only = FALSE) { // Check if site is in maintenance mode. - if (variable_get('maintenance_mode', 0)) { + if (config('system.maintenance')->get('maintenance_mode')) { if (user_access('access site in maintenance mode')) { // Ensure that the maintenance mode message is displayed only once // (allowing for page redirects) and specifically suppress its display on diff --git a/core/includes/update.inc b/core/includes/update.inc index 1660d7d..e6d924a 100644 --- a/core/includes/update.inc +++ b/core/includes/update.inc @@ -409,9 +409,9 @@ class DrupalUpdateException extends Exception { } function update_batch($start, $redirect = NULL, $url = NULL, $batch = array(), $redirect_callback = 'drupal_goto') { // During the update, bring the site offline so that schema changes do not // affect visiting users. - $_SESSION['maintenance_mode'] = variable_get('maintenance_mode', FALSE); + $_SESSION['maintenance_mode'] = config('system.maintenance')->get('maintenance_mode'); if ($_SESSION['maintenance_mode'] == FALSE) { - variable_set('maintenance_mode', TRUE); + config('system.maintenance')->set('maintenance_mode', TRUE)->save(); } // Resolve any update dependencies to determine the actual updates that will @@ -482,7 +482,7 @@ function update_finished($success, $results, $operations) { // Now that the update is done, we can put the site back online if it was // previously in maintenance mode. if (isset($_SESSION['maintenance_mode']) && $_SESSION['maintenance_mode'] == FALSE) { - variable_set('maintenance_mode', FALSE); + config('system.maintenance')->get('maintenance_mode'); unset($_SESSION['maintenance_mode']); } } diff --git a/core/modules/openid/openid.test b/core/modules/openid/openid.test index 7a4c9cf..be5581c 100644 --- a/core/modules/openid/openid.test +++ b/core/modules/openid/openid.test @@ -247,7 +247,7 @@ class OpenIDFunctionalTestCase extends OpenIDWebTestCase { $this->drupalLogout(); // Enable maintenance mode. - variable_set('maintenance_mode', 1); + config('system.maintenance')->set('maintenance_mode', TRUE)->save(); // Test logging in via the user/login page while the site is offline. $edit = array('openid_identifier' => $identity); diff --git a/core/modules/simpletest/tests/menu.test b/core/modules/simpletest/tests/menu.test index 8d1d651..e088dd0 100644 --- a/core/modules/simpletest/tests/menu.test +++ b/core/modules/simpletest/tests/menu.test @@ -221,7 +221,7 @@ class MenuRouterTestCase extends DrupalWebTestCase { * Test the theme callback when the site is in maintenance mode. */ function testThemeCallbackMaintenanceMode() { - variable_set('maintenance_mode', TRUE); + config('system.maintenance')->set('maintenance_mode', TRUE)->save(); // For a regular user, the fact that the site is in maintenance mode means // we expect the theme callback system to be bypassed entirely. @@ -242,7 +242,7 @@ class MenuRouterTestCase extends DrupalWebTestCase { * @see hook_menu_site_status_alter(). */ function testMaintenanceModeLoginPaths() { - variable_set('maintenance_mode', TRUE); + config('system.maintenance')->set('maintenance_mode', TRUE)->save(); $offline_message = t('@site is currently under maintenance. We should be back shortly. Thank you for your patience.', array('@site' => variable_get('site_name', 'Drupal'))); $this->drupalLogout(); diff --git a/core/modules/system/config/system.maintenance.xml b/core/modules/system/config/system.maintenance.xml new file mode 100644 index 0000000..f8bf0ad --- /dev/null +++ b/core/modules/system/config/system.maintenance.xml @@ -0,0 +1,5 @@ + + + 0 + @site is currently under maintenance. We should be back shortly. Thank you for your patience. + diff --git a/core/modules/system/system.admin.inc b/core/modules/system/system.admin.inc index 978b0f4..4961a2f 100644 --- a/core/modules/system/system.admin.inc +++ b/core/modules/system/system.admin.inc @@ -2191,19 +2191,36 @@ function system_date_time_lookup() { * @see system_settings_form() */ function system_site_maintenance_mode() { + $config = config('system.maintenance'); + $form['maintenance_mode'] = array( '#type' => 'checkbox', '#title' => t('Put site into maintenance mode'), - '#default_value' => variable_get('maintenance_mode', 0), + '#default_value' => $config->get('maintenance_mode'), '#description' => t('Visitors will only see the maintenance mode message. Only users with the "Access site in maintenance mode" permission will be able to access the site. Authorized users can log in directly via the user login page.', array('@permissions-url' => url('admin/config/people/permissions'), '@user-login' => url('user'))), ); - $form['maintenance_mode_message'] = array( + $form['maintenance_mode_message'] = array( '#type' => 'textarea', '#title' => t('Message to display when in maintenance mode'), - '#default_value' => variable_get('maintenance_mode_message', t('@site is currently under maintenance. We should be back shortly. Thank you for your patience.', array('@site' => variable_get('site_name', 'Drupal')))), + '#default_value' => t($config->get('maintenance_mode_message'), array('@site' => variable_get('site_name', 'Drupal'))), ); - return system_settings_form($form); + $form['submit'] = array('#type' => 'submit', '#value' => t('Submit')); + return $form; +} + +/** + * Form builder submit handler. Handle submission for site maintenance settings. + * + * @ingroup forms + * @see system_settings_form() + */ +function system_site_maintenance_mode_submit($form, &$form_state) { + // Set the maintenance mode parameters. + $config = config('system.maintenance'); + $config->set('maintenance_mode', $form_state['values']['maintenance_mode']); + $config->set('maintenance_mode_message', $form_state['values']['maintenance_mode_message']); + $config->save(); } /** diff --git a/core/modules/system/system.install b/core/modules/system/system.install index 905d11d..9d14d44 100644 --- a/core/modules/system/system.install +++ b/core/modules/system/system.install @@ -1762,6 +1762,13 @@ function system_update_8005() { } /** + * Move maintenance system settings from variable to config. + */ +function system_update_8006() { + update_variables_to_config('system.maintenance'); +} + +/** * @} End of "defgroup updates-7.x-to-8.x" * The next series of updates should start at 9000. */ diff --git a/core/modules/update/update.authorize.inc b/core/modules/update/update.authorize.inc index 48dfd35..939f415 100644 --- a/core/modules/update/update.authorize.inc +++ b/core/modules/update/update.authorize.inc @@ -180,7 +180,7 @@ function update_authorize_update_batch_finished($success, $results) { $success = FALSE; } } - $offline = variable_get('maintenance_mode', FALSE); + $offline = config('system.maintenance')->get('maintenance_mode'); if ($success) { // Now that the update completed, we need to clear the cache of available // update data and recompute our status, so prevent show bogus results. @@ -188,7 +188,7 @@ function update_authorize_update_batch_finished($success, $results) { // Take the site out of maintenance mode if it was previously that way. if ($offline && isset($_SESSION['maintenance_mode']) && $_SESSION['maintenance_mode'] == FALSE) { - variable_set('maintenance_mode', FALSE); + config('system.maintenance')->set('maintenance_mode', FALSE)->save(); $page_message = array( 'message' => t('Update was completed successfully. Your site has been taken out of maintenance mode.'), 'type' => 'status', @@ -242,11 +242,11 @@ function update_authorize_install_batch_finished($success, $results) { $success = FALSE; } } - $offline = variable_get('maintenance_mode', FALSE); + $offline = config('system.maintenance')->get('maintenance_mode'); if ($success) { // Take the site out of maintenance mode if it was previously that way. if ($offline && isset($_SESSION['maintenance_mode']) && $_SESSION['maintenance_mode'] == FALSE) { - variable_set('maintenance_mode', FALSE); + config('system.maintenance')->set('maintenance_mode', FALSE)->save(); $page_message = array( 'message' => t('Installation was completed successfully. Your site has been taken out of maintenance mode.'), 'type' => 'status', diff --git a/core/modules/update/update.manager.inc b/core/modules/update/update.manager.inc index 82b48f3..3644e24 100644 --- a/core/modules/update/update.manager.inc +++ b/core/modules/update/update.manager.inc @@ -406,9 +406,9 @@ function update_manager_update_ready_form($form, &$form_state) { */ function update_manager_update_ready_form_submit($form, &$form_state) { // Store maintenance_mode setting so we can restore it when done. - $_SESSION['maintenance_mode'] = variable_get('maintenance_mode', FALSE); + $_SESSION['maintenance_mode'] = config('system.maintenance')->get('maintenance_mode'); if ($form_state['values']['maintenance_mode'] == TRUE) { - variable_set('maintenance_mode', TRUE); + config('system.maintenance')->set('maintenance_mode', TRUE)->save(); } if (!empty($_SESSION['update_manager_update_projects'])) {