diff --git a/core/includes/errors.inc b/core/includes/errors.inc index 0524170..12d773a 100644 --- a/core/includes/errors.inc +++ b/core/includes/errors.inc @@ -163,7 +163,7 @@ function _drupal_render_exception_safe($exception) { * TRUE if an error should be displayed. */ function error_displayable($error = NULL) { - $error_level = variable_get('error_level', ERROR_REPORTING_DISPLAY_ALL); + $error_level = config('system.logging')->get('error_level'); $updating = (defined('MAINTENANCE_MODE') && MAINTENANCE_MODE == 'update'); $all_errors_displayed = ($error_level == ERROR_REPORTING_DISPLAY_ALL); $error_needs_display = ($error_level == ERROR_REPORTING_DISPLAY_SOME && diff --git a/core/modules/dblog/dblog.install b/core/modules/dblog/dblog.install index 23f85ba..091135a 100644 --- a/core/modules/dblog/dblog.install +++ b/core/modules/dblog/dblog.install @@ -92,8 +92,14 @@ function dblog_schema() { } /** - * Implements hook_uninstall(). - */ -function dblog_uninstall() { - variable_del('dblog_row_limit'); + * Update settings to the new configuration system. + **/ +function dblog_update_8000() { + $config = config('dblog.logging'); + + $value = db_query("SELECT value FROM {variable} WHERE name = 'dblog_row_limit'")->fetchField(); + $config->set('row_limit', unserialize($value)); + + db_delete('variable')->condition('name', 'dblog_row_limit')->execute(); + $config->save(); } diff --git a/core/modules/dblog/dblog.module b/core/modules/dblog/dblog.module index e92fcbd..a8aaf55 100644 --- a/core/modules/dblog/dblog.module +++ b/core/modules/dblog/dblog.module @@ -102,7 +102,7 @@ function dblog_init() { */ function dblog_cron() { // Cleanup the watchdog table. - $row_limit = variable_get('dblog_row_limit', 1000); + $row_limit = config('dblog.logging')->get('row_limit'); // For row limit n, get the wid of the nth row in descending wid order. // Counting the most recent n rows avoids issues with wid number sequences, @@ -163,14 +163,27 @@ function dblog_watchdog(array $log_entry) { * Implements hook_form_FORM_ID_alter(). */ function dblog_form_system_logging_settings_alter(&$form, $form_state) { - $form['dblog_row_limit'] = array( + $form['row_limit'] = array( '#type' => 'select', '#title' => t('Database log messages to keep'), - '#default_value' => variable_get('dblog_row_limit', 1000), + '#default_value' => config('dblog.logging')->get('row_limit'), '#options' => array(0 => t('All')) + drupal_map_assoc(array(100, 1000, 10000, 100000, 1000000)), '#description' => t('The maximum number of messages to keep in the database log. Requires a cron maintenance task.', array('@cron' => url('admin/reports/status'))) ); $form['actions']['#weight'] = 1; + + $form['#submit'][] = 'dblog_logging_settings_submit'; +} + +/** + * Form submission handler for dblog logging settings. + * + * @ingroup forms + */ +function dblog_logging_settings_submit($form, &$form_state) { + config('dblog.logging') + ->set('row_limit', $form_state['values']['row_limit']) + ->save(); } /** diff --git a/core/modules/dblog/dblog.test b/core/modules/dblog/dblog.test index e3a997e..31c2264 100644 --- a/core/modules/dblog/dblog.test +++ b/core/modules/dblog/dblog.test @@ -55,16 +55,13 @@ class DBLogTestCase extends DrupalWebTestCase { private function verifyRowLimit($row_limit) { // Change the dblog row limit. $edit = array(); - $edit['dblog_row_limit'] = $row_limit; + $edit['row_limit'] = $row_limit; $this->drupalPost('admin/config/development/logging', $edit, t('Save configuration')); $this->assertResponse(200); // Check row limit variable. - $current_limit = variable_get('dblog_row_limit', 1000); + $current_limit = config('dblog.logging')->get('row_limit'); $this->assertTrue($current_limit == $row_limit, t('[Cache] Row limit variable of @count equals row limit of @limit', array('@count' => $current_limit, '@limit' => $row_limit))); - // Verify dblog row limit equals specified row limit. - $current_limit = unserialize(db_query("SELECT value FROM {variable} WHERE name = :dblog_limit", array(':dblog_limit' => 'dblog_row_limit'))->fetchField()); - $this->assertTrue($current_limit == $row_limit, t('[Variable table] Row limit variable of @count equals row limit of @limit', array('@count' => $current_limit, '@limit' => $row_limit))); } /** @@ -472,7 +469,7 @@ class DBLogTestCase extends DrupalWebTestCase { $count = $this->getTypeCount($types); $this->assertEqual(array_sum($count), $type['count'], 'Count matched'); } - + // Clear all logs and make sure the confirmation message is found. $this->drupalPost('admin/reports/dblog', array(), t('Clear log messages')); $this->assertText(t('Database log cleared.'), t('Confirmation message found')); diff --git a/core/modules/simpletest/tests/error.test b/core/modules/simpletest/tests/error.test index 8c5a848..21a33df 100644 --- a/core/modules/simpletest/tests/error.test +++ b/core/modules/simpletest/tests/error.test @@ -20,6 +20,7 @@ class DrupalErrorHandlerUnitTest extends DrupalWebTestCase { * Test the error handler. */ function testErrorHandler() { + $config = config('system.logging'); $error_notice = array( '%type' => 'Notice', '!message' => 'Undefined variable: bananas', @@ -40,7 +41,7 @@ class DrupalErrorHandlerUnitTest extends DrupalWebTestCase { ); // Set error reporting to collect notices. - variable_set('error_level', ERROR_REPORTING_DISPLAY_ALL); + $config->set('error_level', ERROR_REPORTING_DISPLAY_ALL)->save(); $this->drupalGet('error-test/generate-warnings'); $this->assertResponse(200, t('Received expected HTTP status code.')); $this->assertErrorMessage($error_notice); @@ -48,7 +49,7 @@ class DrupalErrorHandlerUnitTest extends DrupalWebTestCase { $this->assertErrorMessage($error_user_notice); // Set error reporting to not collect notices. - variable_set('error_level', ERROR_REPORTING_DISPLAY_SOME); + $config->set('error_level', ERROR_REPORTING_DISPLAY_SOME)->save(); $this->drupalGet('error-test/generate-warnings'); $this->assertResponse(200, t('Received expected HTTP status code.')); $this->assertNoErrorMessage($error_notice); @@ -56,7 +57,7 @@ class DrupalErrorHandlerUnitTest extends DrupalWebTestCase { $this->assertErrorMessage($error_user_notice); // Set error reporting to not show any errors. - variable_set('error_level', ERROR_REPORTING_HIDE); + $config->set('error_level', ERROR_REPORTING_HIDE)->save(); $this->drupalGet('error-test/generate-warnings'); $this->assertResponse(200, t('Received expected HTTP status code.')); $this->assertNoErrorMessage($error_notice); diff --git a/core/modules/syslog/syslog.install b/core/modules/syslog/syslog.install index 12ff4fb..1092c39 100644 --- a/core/modules/syslog/syslog.install +++ b/core/modules/syslog/syslog.install @@ -6,10 +6,27 @@ */ /** - * Implements hook_uninstall(). + * Implements hook_install(). */ -function syslog_uninstall() { - variable_del('syslog_identity'); - variable_del('syslog_facility'); - variable_del('syslog_format'); +function syslog_install() { + // The default facility setting depends on the operating system, so it needs + // to be set dynamically during installation. + config('syslog.logging') + ->set('facility', defined('LOG_LOCAL0') ? LOG_LOCAL0 : LOG_USER) + ->save(); +} + +/** + * Update settings to the new configuration system. + **/ +function syslog_update_8000() { + $config = config('syslog.logging'); + + $variables = db_query("SELECT name, value FROM {variable} WHERE name IN ('syslog_facility', 'syslog_format', 'syslog_identiy')")->fetchAssoc(); + foreach ($variables as $name => $value) { + $config->set(str_replace('syslog_', '', $name), unserialize($value)); + } + + db_delete('variable')->condition('name', array('syslog_facility', 'syslog_format', 'syslog_identiy'))->execute(); + $config->save(); } diff --git a/core/modules/syslog/syslog.module b/core/modules/syslog/syslog.module index afbec7f..6abe6ab 100644 --- a/core/modules/syslog/syslog.module +++ b/core/modules/syslog/syslog.module @@ -45,29 +45,45 @@ function syslog_help($path, $arg) { * Implements hook_form_FORM_ID_alter(). */ function syslog_form_system_logging_settings_alter(&$form, &$form_state) { + $config = config('syslog.logging'); $help = module_exists('help') ? ' ' . l(t('More information'), 'admin/help/syslog') . '.' : NULL; - $form['syslog_identity'] = array( + $form['identity'] = array( '#type' => 'textfield', '#title' => t('Syslog identity'), - '#default_value' => variable_get('syslog_identity', 'drupal'), + '#default_value' => $config->get('identity'), '#description' => t('A string that will be prepended to every message logged to Syslog. If you have multiple sites logging to the same Syslog log file, a unique identity per site makes it easy to tell the log entries apart.') . $help, ); if (defined('LOG_LOCAL0')) { - $form['syslog_facility'] = array( + $form['facility'] = array( '#type' => 'select', '#title' => t('Syslog facility'), - '#default_value' => variable_get('syslog_facility', LOG_LOCAL0), + '#default_value' => $config->get('facility'), '#options' => syslog_facility_list(), '#description' => t('Depending on the system configuration, Syslog and other logging tools use this code to identify or filter messages from within the entire system log.') . $help, ); } - $form['syslog_format'] = array( + $form['format'] = array( '#type' => 'textarea', '#title' => t('Syslog format'), - '#default_value' => variable_get('syslog_format', '!base_url|!timestamp|!type|!ip|!request_uri|!referer|!uid|!link|!message'), + '#default_value' => $config->get('format'), '#description' => t('Specify the format of the syslog entry. Available variables are:
!base_url
!timestamp
!type
!ip
!request_uri
!referer
!uid
!link
!message