diff --git a/core/modules/comment/comment.module b/core/modules/comment/comment.module index 0a7b261..36335c9 100644 --- a/core/modules/comment/comment.module +++ b/core/modules/comment/comment.module @@ -1757,7 +1757,7 @@ function comment_form($form, &$form_state, Comment $comment) { '#default_value' => $author, '#maxlength' => 60, '#size' => 30, - '#description' => t('Leave blank for %anonymous.', array('%anonymous' => variable_get('anonymous', t('Anonymous')))), + '#description' => t('Leave blank for %anonymous.', array('%anonymous' => config('user.settings')->get('anonymous'))), '#autocomplete_path' => 'user/autocomplete', ); } @@ -1918,7 +1918,7 @@ function comment_preview(Comment $comment) { $comment->picture = $account->picture; } elseif (empty($comment->name)) { - $comment->name = variable_get('anonymous', t('Anonymous')); + $comment->name = config('user.settings')->get('anonymous'); } $comment->created = !empty($comment->created) ? $comment->created : REQUEST_TIME; @@ -2009,7 +2009,7 @@ function comment_submit(Comment $comment) { // If the comment was posted by an anonymous user and no author name was // required, use "Anonymous" by default. if ($comment->is_anonymous && (!isset($comment->name) || $comment->name === '')) { - $comment->name = variable_get('anonymous', t('Anonymous')); + $comment->name = config('user.settings')->get('anonymous'); } // Validate the comment's subject. If not specified, extract from comment body. @@ -2212,7 +2212,7 @@ function theme_comment_post_forbidden($variables) { $destination = array('destination' => "node/$node->nid#comment-form"); } - if (variable_get('user_register', USER_REGISTER_VISITORS_ADMINISTRATIVE_APPROVAL)) { + if (config('user.settings')->get('register')) { // Users can register themselves. return t('Log in or register to post comments', array('@login' => url('user/login', array('query' => $destination)), '@register' => url('user/register', array('query' => $destination)))); } diff --git a/core/modules/comment/comment.tokens.inc b/core/modules/comment/comment.tokens.inc index f4a401d..318c1b6 100644 --- a/core/modules/comment/comment.tokens.inc +++ b/core/modules/comment/comment.tokens.inc @@ -131,7 +131,7 @@ function comment_tokens($type, $tokens, array $data = array(), array $options = break; case 'name': - $name = ($comment->uid == 0) ? variable_get('anonymous', t('Anonymous')) : $comment->name; + $name = ($comment->uid == 0) ? config('user.settings')->get('anonymous') : $comment->name; $replacements[$original] = $sanitize ? filter_xss($name) : $name; break; diff --git a/core/modules/comment/lib/Drupal/comment/Tests/CommentAnonymousTest.php b/core/modules/comment/lib/Drupal/comment/Tests/CommentAnonymousTest.php index 5181e32..21a2944 100644 --- a/core/modules/comment/lib/Drupal/comment/Tests/CommentAnonymousTest.php +++ b/core/modules/comment/lib/Drupal/comment/Tests/CommentAnonymousTest.php @@ -21,7 +21,7 @@ class CommentAnonymousTest extends CommentTestBase { function setUp() { parent::setUp(); - variable_set('user_register', USER_REGISTER_VISITORS); + config('user.settings')->set('register', USER_REGISTER_VISITORS)->save(); } /** diff --git a/core/modules/comment/lib/Drupal/comment/Tests/CommentInterfaceTest.php b/core/modules/comment/lib/Drupal/comment/Tests/CommentInterfaceTest.php index b7f42ae..d0898ff 100644 --- a/core/modules/comment/lib/Drupal/comment/Tests/CommentInterfaceTest.php +++ b/core/modules/comment/lib/Drupal/comment/Tests/CommentInterfaceTest.php @@ -369,7 +369,7 @@ class CommentInterfaceTest extends CommentTestBase { $this->assertEqual($node->comment_count, 1, t('The value of node comment_count is 1.')); // Prepare for anonymous comment submission (comment approval enabled). - variable_set('user_register', USER_REGISTER_VISITORS); + config('user.settings')->set('register', USER_REGISTER_VISITORS)->save(); $this->drupalLogin($this->admin_user); user_role_change_permissions(DRUPAL_ANONYMOUS_RID, array( 'access comments' => TRUE, @@ -556,7 +556,7 @@ class CommentInterfaceTest extends CommentTestBase { } // Change user settings. - variable_set('user_register', $info['user_register']); + config('user.settings')->set('register', $info['user_register'])->save(); // Change user permissions. $rid = ($this->loggedInUser ? DRUPAL_AUTHENTICATED_RID : DRUPAL_ANONYMOUS_RID); diff --git a/core/modules/comment/lib/Drupal/comment/Tests/CommentPreviewTest.php b/core/modules/comment/lib/Drupal/comment/Tests/CommentPreviewTest.php index e6eef56..10dc207 100644 --- a/core/modules/comment/lib/Drupal/comment/Tests/CommentPreviewTest.php +++ b/core/modules/comment/lib/Drupal/comment/Tests/CommentPreviewTest.php @@ -35,7 +35,7 @@ class CommentPreviewTest extends CommentTestBase { // Login as web user and add a signature and a user picture. $this->drupalLogin($this->web_user); - variable_set('user_signatures', 1); + config('user.settings')->set('signatures', 1)->save(); variable_set('user_pictures', 1); $test_signature = $this->randomName(); $edit['signature[value]'] = '' . $test_signature. ''; diff --git a/core/modules/contact/config/contact.settings.yml b/core/modules/contact/config/contact.settings.yml new file mode 100644 index 0000000..1f77cc5 --- /dev/null +++ b/core/modules/contact/config/contact.settings.yml @@ -0,0 +1 @@ +user_contact_default_enabled: '1' diff --git a/core/modules/contact/contact.install b/core/modules/contact/contact.install index 5956740..423a44c 100644 --- a/core/modules/contact/contact.install +++ b/core/modules/contact/contact.install @@ -87,7 +87,17 @@ function contact_install() { * Implements hook_uninstall(). */ function contact_uninstall() { - variable_del('contact_default_status'); variable_del('contact_threshold_limit'); variable_del('contact_threshold_window'); } + +/** + * Moves contact setting from variable to config. + * + * @ingroup config_upgrade + */ +function contact_update_8000() { + update_variables_to_config('contact.settings', array( + 'contact_default_status' => 'user_contact_default_enabled', + )); +} diff --git a/core/modules/contact/contact.module b/core/modules/contact/contact.module index a6c8aed..2fcf5c3 100644 --- a/core/modules/contact/contact.module +++ b/core/modules/contact/contact.module @@ -234,7 +234,7 @@ function contact_form_user_profile_form_alter(&$form, &$form_state) { * Implements hook_user_presave(). */ function contact_user_presave($account) { - $account->data['contact'] = isset($account->contact) ? $account->contact : variable_get('contact_default_status', 1); + $account->data['contact'] = isset($account->contact) ? $account->contact : config('contact.settings')->get('user_contact_default_enabled'); } /** @@ -250,10 +250,16 @@ function contact_form_user_admin_settings_alter(&$form, &$form_state) { '#title' => t('Contact settings'), '#weight' => 0, ); - $form['contact']['contact_default_status'] = array( + $form['contact']['user_contact_default_enabled'] = array( '#type' => 'checkbox', '#title' => t('Enable the personal contact form by default for new users.'), '#description' => t('Changing this setting will not affect existing users.'), - '#default_value' => variable_get('contact_default_status', 1), + '#default_value' => config('contact.settings')->get('user_contact_default_enabled'), ); + // Add submit handler to save contact configuration. + array_unshift($form['#submit'], 'contact_form_user_admin_settings_submit'); +} + +function contact_form_user_admin_settings_submit($form, &$form_state) { + config('contact.settings')->set('user_contact_default_enabled', $form_state['values']['user_contact_default_enabled'])->save(); } diff --git a/core/modules/contact/lib/Drupal/contact/Tests/ContactPersonalTest.php b/core/modules/contact/lib/Drupal/contact/Tests/ContactPersonalTest.php index 0d5ff96..fec050d 100644 --- a/core/modules/contact/lib/Drupal/contact/Tests/ContactPersonalTest.php +++ b/core/modules/contact/lib/Drupal/contact/Tests/ContactPersonalTest.php @@ -32,7 +32,7 @@ class ContactPersonalTest extends WebTestBase { $this->admin_user = $this->drupalCreateUser(array('administer contact forms', 'administer users')); // Create some normal users with their contact forms enabled by default. - variable_set('contact_default_status', TRUE); + config('contact.settings')->set('user_contact_default_enabled', 1)->save(); $this->web_user = $this->drupalCreateUser(array('access user contact forms')); $this->contact_user = $this->drupalCreateUser(); } @@ -84,7 +84,7 @@ class ContactPersonalTest extends WebTestBase { // Disable the personal contact form. $this->drupalLogin($this->admin_user); - $edit = array('contact_default_status' => FALSE); + $edit = array('user_contact_default_enabled' => FALSE); $this->drupalPost('admin/config/people/accounts', $edit, t('Save configuration')); $this->assertText(t('The configuration options have been saved.'), t('Setting successfully saved.')); $this->drupalLogout(); diff --git a/core/modules/contact/lib/Drupal/contact/Tests/ContactSitewideTest.php b/core/modules/contact/lib/Drupal/contact/Tests/ContactSitewideTest.php index 6519267..fcb5665 100644 --- a/core/modules/contact/lib/Drupal/contact/Tests/ContactSitewideTest.php +++ b/core/modules/contact/lib/Drupal/contact/Tests/ContactSitewideTest.php @@ -39,7 +39,7 @@ class ContactSitewideTest extends WebTestBase { // Set settings. $edit = array(); - $edit['contact_default_status'] = TRUE; + $edit['user_contact_default_enabled'] = TRUE; $this->drupalPost('admin/config/people/accounts', $edit, t('Save configuration')); $this->assertText(t('The configuration options have been saved.'), t('Setting successfully saved.')); diff --git a/core/modules/filter/filter.admin.inc b/core/modules/filter/filter.admin.inc index 40a5eab..e441cb1 100644 --- a/core/modules/filter/filter.admin.inc +++ b/core/modules/filter/filter.admin.inc @@ -154,7 +154,7 @@ function filter_admin_format_form($form, &$form_state, $format) { // If editing an existing text format, pre-select its current permissions. $form['roles']['#default_value'] = array_keys(filter_get_roles_by_format($format)); } - elseif ($admin_role = variable_get('user_admin_role', 0)) { + elseif ($admin_role = config('user.settings')->get('admin_role')) { // If adding a new text format and the site has an administrative role, // pre-select that role so as to grant administrators access to the new // text format permission by default. diff --git a/core/modules/node/node.pages.inc b/core/modules/node/node.pages.inc index 16b0ee5..767bf75 100644 --- a/core/modules/node/node.pages.inc +++ b/core/modules/node/node.pages.inc @@ -258,6 +258,7 @@ function node_form($form, &$form_state, Node $node) { ); // Node author information for administrators + $anonymous_name = config('user.settings')->get('anonymous'); $form['author'] = array( '#type' => 'fieldset', '#access' => user_access('administer nodes'), @@ -273,7 +274,7 @@ function node_form($form, &$form_state, Node $node) { drupal_get_path('module', 'node') . '/node.js', array( 'type' => 'setting', - 'data' => array('anonymous' => variable_get('anonymous', t('Anonymous'))), + 'data' => array('anonymous' => $anonymous_name), ), ), ), @@ -286,7 +287,7 @@ function node_form($form, &$form_state, Node $node) { '#autocomplete_path' => 'user/autocomplete', '#default_value' => !empty($node->name) ? $node->name : '', '#weight' => -1, - '#description' => t('Leave blank for %anonymous.', array('%anonymous' => variable_get('anonymous', t('Anonymous')))), + '#description' => t('Leave blank for %anonymous.', array('%anonymous' => $anonymous_name)), ); $form['author']['date'] = array( '#type' => 'textfield', diff --git a/core/modules/openid/lib/Drupal/openid/Tests/OpenIDRegistrationTest.php b/core/modules/openid/lib/Drupal/openid/Tests/OpenIDRegistrationTest.php index a143d34..4e30731 100644 --- a/core/modules/openid/lib/Drupal/openid/Tests/OpenIDRegistrationTest.php +++ b/core/modules/openid/lib/Drupal/openid/Tests/OpenIDRegistrationTest.php @@ -22,14 +22,14 @@ class OpenIDRegistrationTest extends OpenIDTestBase { function setUp() { // Add language module too to test with some non-built-in languages. parent::setUp('openid', 'openid_test', 'language'); - variable_set('user_register', USER_REGISTER_VISITORS); + config('user.settings')->set('register', USER_REGISTER_VISITORS)->save(); } /** * Test OpenID auto-registration with e-mail verification enabled. */ function testRegisterUserWithEmailVerification() { - variable_set('user_email_verification', TRUE); + config('user.settings')->set('mail.verification', TRUE)->save(); variable_get('configurable_timezones', 1); variable_set('date_default_timezone', 'Europe/Brussels'); @@ -86,7 +86,7 @@ class OpenIDRegistrationTest extends OpenIDTestBase { * Test OpenID auto-registration with e-mail verification disabled. */ function testRegisterUserWithoutEmailVerification() { - variable_set('user_email_verification', FALSE); + config('user.settings')->set('mail.verification', FALSE)->save(); variable_get('configurable_timezones', 1); variable_set('date_default_timezone', 'Europe/Brussels'); @@ -218,7 +218,7 @@ class OpenIDRegistrationTest extends OpenIDTestBase { * but no SREG. */ function testRegisterUserWithAXButNoSREG() { - variable_set('user_email_verification', FALSE); + config('user.settings')->set('mail.verification', FALSE)->save(); variable_set('date_default_timezone', 'Europe/Brussels'); // Tell openid_test.module to respond with these AX fields. diff --git a/core/modules/openid/openid.module b/core/modules/openid/openid.module index 034c7c2..0b1b091 100644 --- a/core/modules/openid/openid.module +++ b/core/modules/openid/openid.module @@ -86,7 +86,7 @@ function openid_help($path, $arg) { function openid_user_insert($account) { if (!empty($account->openid_claimed_id)) { // The user has registered after trying to log in via OpenID. - if (variable_get('user_email_verification', TRUE)) { + if (config('user.settings')->get('mail.verification')) { drupal_set_message(t('Once you have verified your e-mail address, you may log in via OpenID.')); } user_set_authmaps($account, array('authname_openid' => $account->openid_claimed_id)); @@ -216,9 +216,9 @@ function openid_form_user_register_form_alter(&$form, &$form_state) { $form['account']['mail']['#default_value'] = current($ax_mail_values); } - // If user_email_verification is off, hide the password field and just fill + // If email verification is off, hide the password field and just fill // with random password to avoid confusion. - if (!variable_get('user_email_verification', TRUE)) { + if (!config('user.settings')->get('mail.verification')) { $form['account']['pass']['#type'] = 'hidden'; $form['account']['pass']['#value'] = user_password(); } @@ -708,7 +708,7 @@ function openid_authentication($response) { $account = user_external_load($identity); if (isset($account->uid)) { - if (!variable_get('user_email_verification', TRUE) || $account->login) { + if (!config('user.settings')->get('mail.verification') || $account->login) { // Check if user is blocked. $state['values']['name'] = $account->name; user_login_name_validate(array(), $state); @@ -724,7 +724,7 @@ function openid_authentication($response) { // Let other modules act on OpenID login module_invoke_all('openid_response', $response, $account); } - elseif (variable_get('user_register', USER_REGISTER_VISITORS_ADMINISTRATIVE_APPROVAL)) { + elseif (config('user.settings')->get('register')) { // Register new user. // Save response for use in openid_form_user_register_form_alter(). diff --git a/core/modules/shortcut/shortcut.api.php b/core/modules/shortcut/shortcut.api.php index 717a7c9..2fcbdc9 100644 --- a/core/modules/shortcut/shortcut.api.php +++ b/core/modules/shortcut/shortcut.api.php @@ -32,7 +32,7 @@ */ function hook_shortcut_default_set($account) { // Use a special set of default shortcuts for administrators only. - if (in_array(variable_get('user_admin_role', 0), $account->roles)) { + if (in_array(config('user.settings')->get('admin_role'), $account->roles)) { return variable_get('mymodule_shortcut_admin_default_set'); } } diff --git a/core/modules/simpletest/lib/Drupal/simpletest/Tests/BrowserTest.php b/core/modules/simpletest/lib/Drupal/simpletest/Tests/BrowserTest.php index 7e2beca..e976a48 100644 --- a/core/modules/simpletest/lib/Drupal/simpletest/Tests/BrowserTest.php +++ b/core/modules/simpletest/lib/Drupal/simpletest/Tests/BrowserTest.php @@ -23,7 +23,7 @@ class BrowserTest extends WebTestBase { function setUp() { parent::setUp(); - variable_set('user_register', USER_REGISTER_VISITORS); + config('user.settings')->set('register', USER_REGISTER_VISITORS)->save(); } /** diff --git a/core/modules/system/lib/Drupal/system/Tests/Form/ArbitraryRebuildTest.php b/core/modules/system/lib/Drupal/system/Tests/Form/ArbitraryRebuildTest.php index d6be705..127ca96 100644 --- a/core/modules/system/lib/Drupal/system/Tests/Form/ArbitraryRebuildTest.php +++ b/core/modules/system/lib/Drupal/system/Tests/Form/ArbitraryRebuildTest.php @@ -43,7 +43,7 @@ class ArbitraryRebuildTest extends WebTestBase { ), ); field_create_instance($instance); - variable_set('user_register', USER_REGISTER_VISITORS); + config('user.settings')->set('register', USER_REGISTER_VISITORS)->save(); } /** diff --git a/core/modules/system/system.api.php b/core/modules/system/system.api.php index 3d2cae0..07c15e8 100644 --- a/core/modules/system/system.api.php +++ b/core/modules/system/system.api.php @@ -3781,7 +3781,7 @@ function hook_tokens($type, $tokens, array $data = array(), array $options = arr // Default values for the chained tokens handled below. case 'author': - $name = ($node->uid == 0) ? variable_get('anonymous', t('Anonymous')) : $node->name; + $name = ($node->uid == 0) ? config('user.settings')->get('anonymous') : $node->name; $replacements[$original] = $sanitize ? filter_xss($name) : $name; break; diff --git a/core/modules/user/config/user.settings.yml b/core/modules/user/config/user.settings.yml new file mode 100644 index 0000000..3c0ecff --- /dev/null +++ b/core/modules/user/config/user.settings.yml @@ -0,0 +1,9 @@ +anonymous: Anonymous +admin_role: 0 +register: visitors +signatures: '0' +mail: + status_activated_notify: '1' + status_blocked_notify: '0' + status_cancelled_notify: '0' + verification: '1' diff --git a/core/modules/user/lib/Drupal/user/Tests/UserEditedOwnAccountTest.php b/core/modules/user/lib/Drupal/user/Tests/UserEditedOwnAccountTest.php index d7d3bb2..e06298f 100644 --- a/core/modules/user/lib/Drupal/user/Tests/UserEditedOwnAccountTest.php +++ b/core/modules/user/lib/Drupal/user/Tests/UserEditedOwnAccountTest.php @@ -25,7 +25,7 @@ class UserEditedOwnAccountTest extends WebTestBase { function testUserEditedOwnAccount() { // Change account setting 'Who can register accounts?' to Administrators // only. - variable_set('user_register', USER_REGISTER_ADMINISTRATORS_ONLY); + config('user.settings')->set('register', USER_REGISTER_ADMINISTRATORS_ONLY)->save(); // Create a new user account and log in. $account = $this->drupalCreateUser(array('change own username')); diff --git a/core/modules/user/lib/Drupal/user/Tests/UserEntityCallbacksTest.php b/core/modules/user/lib/Drupal/user/Tests/UserEntityCallbacksTest.php index dc85ade..816c4e1 100644 --- a/core/modules/user/lib/Drupal/user/Tests/UserEntityCallbacksTest.php +++ b/core/modules/user/lib/Drupal/user/Tests/UserEntityCallbacksTest.php @@ -36,7 +36,7 @@ class UserEntityCallbacksTest extends WebTestBase { // Setup a random anonymous name to be sure the name is used. $name = $this->randomName(); - variable_set('anonymous', $name); + config('user.settings')->set('anonymous', $name)->save(); $this->assertEqual($this->anonymous->label(), $name, t('The variable anonymous should be used for name of uid 0')); } diff --git a/core/modules/user/lib/Drupal/user/Tests/UserLanguageCreationTest.php b/core/modules/user/lib/Drupal/user/Tests/UserLanguageCreationTest.php index dce7d0b..12cc00f 100644 --- a/core/modules/user/lib/Drupal/user/Tests/UserLanguageCreationTest.php +++ b/core/modules/user/lib/Drupal/user/Tests/UserLanguageCreationTest.php @@ -24,7 +24,7 @@ class UserLanguageCreationTest extends WebTestBase { function setUp() { parent::setUp(array('user', 'language')); - variable_set('user_register', USER_REGISTER_VISITORS); + config('user.settings')->set('register', USER_REGISTER_VISITORS)->save(); } /** diff --git a/core/modules/user/lib/Drupal/user/Tests/UserRegistrationTest.php b/core/modules/user/lib/Drupal/user/Tests/UserRegistrationTest.php index 56ad9a0..a591a04 100644 --- a/core/modules/user/lib/Drupal/user/Tests/UserRegistrationTest.php +++ b/core/modules/user/lib/Drupal/user/Tests/UserRegistrationTest.php @@ -23,16 +23,17 @@ class UserRegistrationTest extends WebTestBase { } function testRegistrationWithEmailVerification() { + $config = config('user.settings'); // Require e-mail verification. - variable_set('user_email_verification', TRUE); + $config->set('mail.verification', TRUE)->save(); // Set registration to administrator only. - variable_set('user_register', USER_REGISTER_ADMINISTRATORS_ONLY); + $config->set('register', USER_REGISTER_ADMINISTRATORS_ONLY)->save(); $this->drupalGet('user/register'); $this->assertResponse(403, t('Registration page is inaccessible when only administrators can create accounts.')); // Allow registration by site visitors without administrator approval. - variable_set('user_register', USER_REGISTER_VISITORS); + $config->set('register', USER_REGISTER_VISITORS)->save(); $edit = array(); $edit['name'] = $name = $this->randomName(); $edit['mail'] = $mail = $edit['name'] . '@example.com'; @@ -43,7 +44,7 @@ class UserRegistrationTest extends WebTestBase { $this->assertTrue($new_user->status, t('New account is active after registration.')); // Allow registration by site visitors, but require administrator approval. - variable_set('user_register', USER_REGISTER_VISITORS_ADMINISTRATIVE_APPROVAL); + $config->set('register', USER_REGISTER_VISITORS_ADMINISTRATIVE_APPROVAL)->save(); $edit = array(); $edit['name'] = $name = $this->randomName(); $edit['mail'] = $mail = $edit['name'] . '@example.com'; @@ -54,11 +55,12 @@ class UserRegistrationTest extends WebTestBase { } function testRegistrationWithoutEmailVerification() { + $config = config('user.settings'); // Don't require e-mail verification. - variable_set('user_email_verification', FALSE); + $config->set('mail.verification', FALSE)->save(); // Allow registration by site visitors without administrator approval. - variable_set('user_register', USER_REGISTER_VISITORS); + $config->set('register', USER_REGISTER_VISITORS)->save(); $edit = array(); $edit['name'] = $name = $this->randomName(); $edit['mail'] = $mail = $edit['name'] . '@example.com'; @@ -79,7 +81,7 @@ class UserRegistrationTest extends WebTestBase { $this->drupalLogout(); // Allow registration by site visitors, but require administrator approval. - variable_set('user_register', USER_REGISTER_VISITORS_ADMINISTRATIVE_APPROVAL); + $config->set('register', USER_REGISTER_VISITORS_ADMINISTRATIVE_APPROVAL)->save(); $edit = array(); $edit['name'] = $name = $this->randomName(); $edit['mail'] = $mail = $edit['name'] . '@example.com'; @@ -113,11 +115,13 @@ class UserRegistrationTest extends WebTestBase { } function testRegistrationEmailDuplicates() { - // Don't require e-mail verification. - variable_set('user_email_verification', FALSE); - // Allow registration by site visitors without administrator approval. - variable_set('user_register', USER_REGISTER_VISITORS); + // Don't require e-mail verification. + // Then, allow registration by site visitors without administrator approval. + config('user.settings') + ->set('mail.verification', FALSE) + ->set('register', USER_REGISTER_VISITORS) + ->save(); // Set up a user to check for duplicates. $duplicate_user = $this->drupalCreateUser(); @@ -139,10 +143,12 @@ class UserRegistrationTest extends WebTestBase { function testRegistrationDefaultValues() { // Allow registration by site visitors without administrator approval. - variable_set('user_register', USER_REGISTER_VISITORS); - - // Don't require e-mail verification. - variable_set('user_email_verification', FALSE); + // Then, don't require e-mail verification. + $config = config('user.settings'); + $config + ->set('register', USER_REGISTER_VISITORS) + ->set('mail.verification', FALSE) + ->save(); // Set the default timezone to Brussels. variable_set('configurable_timezones', 1); @@ -168,7 +174,7 @@ class UserRegistrationTest extends WebTestBase { $this->assertEqual($new_user->theme, '', t('Correct theme field.')); $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->status, $config->get('register') == 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->langcode, language_default()->langcode, t('Correct language field.')); $this->assertEqual($new_user->preferred_langcode, language_default()->langcode, t('Correct preferred language field.')); diff --git a/core/modules/user/lib/Drupal/user/Tests/UserSignatureTest.php b/core/modules/user/lib/Drupal/user/Tests/UserSignatureTest.php index 19aa8c9..96cf0b6 100644 --- a/core/modules/user/lib/Drupal/user/Tests/UserSignatureTest.php +++ b/core/modules/user/lib/Drupal/user/Tests/UserSignatureTest.php @@ -25,7 +25,7 @@ class UserSignatureTest extends WebTestBase { parent::setUp('comment'); // Enable user signatures. - variable_set('user_signatures', 1); + config('user.settings')->set('signatures', 1)->save(); // Create Basic page node type. $this->drupalCreateContentType(array('type' => 'page', 'name' => 'Basic page')); diff --git a/core/modules/user/user.admin.inc b/core/modules/user/user.admin.inc index 58b0218..a9b1019 100644 --- a/core/modules/user/user.admin.inc +++ b/core/modules/user/user.admin.inc @@ -257,9 +257,10 @@ function user_admin_account_validate($form, &$form_state) { * Form builder; Configure user settings for this site. * * @ingroup forms - * @see system_settings_form() + * @see system_config_form() */ -function user_admin_settings() { +function user_admin_settings($form, &$form_state) { + $config = config('user.settings'); // Settings for anonymous users. $form['anonymous_settings'] = array( '#type' => 'fieldset', @@ -268,7 +269,7 @@ function user_admin_settings() { $form['anonymous_settings']['anonymous'] = array( '#type' => 'textfield', '#title' => t('Name'), - '#default_value' => variable_get('anonymous', t('Anonymous')), + '#default_value' => $config->get('anonymous'), '#description' => t('The name used to indicate anonymous users.'), '#required' => TRUE, ); @@ -289,7 +290,7 @@ function user_admin_settings() { $form['admin_role']['user_admin_role'] = array( '#type' => 'select', '#title' => t('Administrator role'), - '#default_value' => variable_get('user_admin_role', 0), + '#default_value' => $config->get('admin_role'), '#options' => $roles, '#description' => t('This role will be automatically assigned new permissions whenever a module is enabled. Changing this setting will not affect existing permissions.'), ); @@ -302,7 +303,7 @@ function user_admin_settings() { $form['registration_cancellation']['user_register'] = array( '#type' => 'radios', '#title' => t('Who can register accounts?'), - '#default_value' => variable_get('user_register', USER_REGISTER_VISITORS_ADMINISTRATIVE_APPROVAL), + '#default_value' => $config->get('register'), '#options' => array( USER_REGISTER_ADMINISTRATORS_ONLY => t('Administrators only'), USER_REGISTER_VISITORS => t('Visitors'), @@ -312,7 +313,7 @@ function user_admin_settings() { $form['registration_cancellation']['user_email_verification'] = array( '#type' => 'checkbox', '#title' => t('Require e-mail verification when a visitor creates an account.'), - '#default_value' => variable_get('user_email_verification', TRUE), + '#default_value' => $config->get('mail.verification'), '#description' => t('New users will be required to validate their e-mail address prior to logging into the site, and will be assigned a system-generated password. With this setting disabled, users will be logged in immediately upon registering, and may select their own passwords during registration.') ); module_load_include('inc', 'user', 'user.pages'); @@ -342,7 +343,7 @@ function user_admin_settings() { $form['personalization']['user_signatures'] = array( '#type' => 'checkbox', '#title' => t('Enable signatures.'), - '#default_value' => variable_get('user_signatures', 0), + '#default_value' => $config->get('signatures'), ); // If picture support is enabled, check whether the picture directory exists. if (variable_get('user_pictures', 0)) { @@ -432,7 +433,7 @@ function user_admin_settings() { '#type' => 'fieldset', '#title' => t('Welcome (new user created by administrator)'), '#collapsible' => TRUE, - '#collapsed' => (variable_get('user_register', USER_REGISTER_VISITORS_ADMINISTRATIVE_APPROVAL) != USER_REGISTER_ADMINISTRATORS_ONLY), + '#collapsed' => ($config->get('register') != USER_REGISTER_ADMINISTRATORS_ONLY), '#description' => t('Edit the welcome e-mail messages sent to new member accounts created by an administrator.') . ' ' . $email_token_help, '#group' => 'email', ); @@ -453,7 +454,7 @@ function user_admin_settings() { '#type' => 'fieldset', '#title' => t('Welcome (awaiting approval)'), '#collapsible' => TRUE, - '#collapsed' => (variable_get('user_register', USER_REGISTER_VISITORS_ADMINISTRATIVE_APPROVAL) != USER_REGISTER_VISITORS_ADMINISTRATIVE_APPROVAL), + '#collapsed' => ($config->get('register') != USER_REGISTER_VISITORS_ADMINISTRATIVE_APPROVAL), '#description' => t('Edit the welcome e-mail messages sent to new members upon registering, when administrative approval is required.') . ' ' . $email_token_help, '#group' => 'email', ); @@ -474,7 +475,7 @@ function user_admin_settings() { '#type' => 'fieldset', '#title' => t('Welcome (no approval required)'), '#collapsible' => TRUE, - '#collapsed' => (variable_get('user_register', USER_REGISTER_VISITORS_ADMINISTRATIVE_APPROVAL) != USER_REGISTER_VISITORS), + '#collapsed' => ($config->get('register') != USER_REGISTER_VISITORS), '#description' => t('Edit the welcome e-mail messages sent to new members upon registering, when no administrator approval is required.') . ' ' . $email_token_help, '#group' => 'email', ); @@ -524,7 +525,7 @@ function user_admin_settings() { $form['email_activated']['user_mail_status_activated_notify'] = array( '#type' => 'checkbox', '#title' => t('Notify user when account is activated.'), - '#default_value' => variable_get('user_mail_status_activated_notify', TRUE), + '#default_value' => $config->get('mail.status_activated_notify'), ); $form['email_activated']['settings'] = array( '#type' => 'container', @@ -559,7 +560,7 @@ function user_admin_settings() { $form['email_blocked']['user_mail_status_blocked_notify'] = array( '#type' => 'checkbox', '#title' => t('Notify user when account is blocked.'), - '#default_value' => variable_get('user_mail_status_blocked_notify', FALSE), + '#default_value' => $config->get('mail.status_blocked_notify'), ); $form['email_blocked']['settings'] = array( '#type' => 'container', @@ -615,7 +616,7 @@ function user_admin_settings() { $form['email_canceled']['user_mail_status_canceled_notify'] = array( '#type' => 'checkbox', '#title' => t('Notify user when account is canceled.'), - '#default_value' => variable_get('user_mail_status_canceled_notify', FALSE), + '#default_value' => $config->get('mail.status_canceled_notify'), ); $form['email_canceled']['settings'] = array( '#type' => 'container', @@ -639,7 +640,23 @@ function user_admin_settings() { '#rows' => 3, ); - return system_settings_form($form); + return system_config_form($form, $form_state); +} + +/** + * Save account settings settings. + */ +function user_admin_settings_submit($form, $form_state) { + config('user.settings') + ->set('anonymous', $form_state['values']['anonymous']) + ->set('admin_role', $form_state['values']['user_admin_role']) + ->set('register', $form_state['values']['user_register']) + ->set('mail.verification', $form_state['values']['user_email_verification']) + ->set('signatures', $form_state['values']['user_signatures']) + ->set('mail.status_activated_notify', $form_state['values']['user_mail_status_activated_notify']) + ->set('mail.status_blocked_notify', $form_state['values']['user_mail_status_blocked_notify']) + ->set('mail.status_canceled_notify', $form_state['values']['user_mail_status_canceled_notify']) + ->save(); } /** diff --git a/core/modules/user/user.install b/core/modules/user/user.install index 5ec57da..87a3be1 100644 --- a/core/modules/user/user.install +++ b/core/modules/user/user.install @@ -442,5 +442,23 @@ function user_update_8002() { } /** + * Moves account settings from variable to config. + * + * @ingroup config_upgrade + */ +function user_update_8003() { + update_variables_to_config('user.settings', array( + 'anonymous' => 'anonymous', + 'user_admin_role' => 'admin_role', + 'user_register' => 'register', + 'user_signatures' => 'signatures', + 'user_mail_status_activated_notify' => 'mail.status_activated_notify', + 'user_mail_status_blocked_notify' => 'mail.status_blocked_notify', + 'user_mail_status_cancelled_notify' => 'mail.status_cancelled_notify', + 'user_email_verification' => 'mail.verification', + )); +} + +/** * @} End of "addtogroup updates-7.x-to-8.x". */ diff --git a/core/modules/user/user.module b/core/modules/user/user.module index 2250110..220c6e2 100644 --- a/core/modules/user/user.module +++ b/core/modules/user/user.module @@ -578,7 +578,7 @@ function user_permission() { ), 'cancel account' => array( 'title' => t('Cancel own user account'), - 'description' => t('Note: content may be kept, unpublished, deleted or transferred to the %anonymous-name user depending on the configured user settings.', array('%anonymous-name' => variable_get('anonymous', t('Anonymous')), '@user-settings-url' => url('admin/config/people/accounts'))), + 'description' => t('Note: content may be kept, unpublished, deleted or transferred to the %anonymous-name user depending on the configured user settings.', array('%anonymous-name' => config('user.settings')->get('anonymous'), '@user-settings-url' => url('admin/config/people/accounts'))), ), 'select account cancellation method' => array( 'title' => t('Select method for cancelling own account'), @@ -711,6 +711,7 @@ function user_account_form(&$form, &$form_state) { global $user; $language_interface = drupal_container()->get(LANGUAGE_TYPE_INTERFACE); + $config = config('user.settings'); $account = $form['#user']; $register = ($form['#user']->uid > 0 ? FALSE : TRUE); @@ -787,7 +788,7 @@ function user_account_form(&$form, &$form_state) { $form['#validate'][] = 'user_validate_current_pass'; } } - elseif (!variable_get('user_email_verification', TRUE) || $admin) { + elseif (!$config->get('mail.verification') || $admin) { $form['account']['pass'] = array( '#type' => 'password_confirm', '#size' => 25, @@ -800,7 +801,7 @@ function user_account_form(&$form, &$form_state) { $status = isset($account->status) ? $account->status : 1; } else { - $status = $register ? variable_get('user_register', USER_REGISTER_VISITORS_ADMINISTRATIVE_APPROVAL) == USER_REGISTER_VISITORS : $account->status; + $status = $register ? $config->get('register') == USER_REGISTER_VISITORS : $account->status; } $form['account']['status'] = array( '#type' => 'radios', @@ -843,7 +844,7 @@ function user_account_form(&$form, &$form_state) { '#type' => 'fieldset', '#title' => t('Signature settings'), '#weight' => 1, - '#access' => (!$register && variable_get('user_signatures', 0)), + '#access' => (!$register && $config->get('signatures')), ); $form['signature_settings']['signature'] = array( @@ -1058,7 +1059,7 @@ function user_login_block($form) { '#value' => t('Log in'), ); $items = array(); - if (variable_get('user_register', USER_REGISTER_VISITORS_ADMINISTRATIVE_APPROVAL)) { + if (config('user.settings')->get('register')) { $items[] = l(t('Create new account'), 'user/register', array('attributes' => array('title' => t('Create a new user account.')))); } $items[] = l(t('Request new password'), 'user/password', array('attributes' => array('title' => t('Request new password via e-mail.')))); @@ -1221,7 +1222,7 @@ function user_preprocess_block(&$variables) { * printed to the page. */ function user_format_name($account) { - $name = !empty($account->name) ? $account->name : variable_get('anonymous', t('Anonymous')); + $name = !empty($account->name) ? $account->name : config('user.settings')->get('anonymous'); drupal_alter('user_format_name', $name, $account); return $name; } @@ -1419,7 +1420,7 @@ function user_is_logged_in() { } function user_register_access() { - return user_is_anonymous() && variable_get('user_register', USER_REGISTER_VISITORS_ADMINISTRATIVE_APPROVAL); + return user_is_anonymous() && config('user.settings')->get('register'); } /** @@ -3080,7 +3081,7 @@ function user_multiple_cancel_confirm($form, &$form_state) { '#type' => 'checkbox', '#title' => t('Notify user when account is canceled.'), '#default_value' => FALSE, - '#access' => variable_get('user_mail_status_canceled_notify', FALSE), + '#access' => config('user.settings')->get('mail.status_canceled_notify'), '#description' => t('When enabled, the user will receive an e-mail notification after the account has been cancelled.'), ); @@ -3209,7 +3210,7 @@ function user_build_filter_query(SelectInterface $query) { * Implements hook_comment_view(). */ function user_comment_view($comment) { - if (variable_get('user_signatures', 0) && !empty($comment->signature)) { + if (config('user.settings')->get('signatures') && !empty($comment->signature)) { // @todo This alters and replaces the original object value, so a // hypothetical process of loading, viewing, and saving will hijack the // stored data. Consider renaming to $comment->signature_safe or similar @@ -3299,9 +3300,8 @@ function user_preferred_language($account, $default = NULL) { */ function _user_mail_notify($op, $account, $language = NULL) { // By default, we always notify except for canceled and blocked. - $default_notify = ($op != 'status_canceled' && $op != 'status_blocked'); - $notify = variable_get('user_mail_' . $op . '_notify', $default_notify); - if ($notify) { + $notify = config('user.settings')->get('mail.' . $op . '_notify'); + if ($notify || ($op != 'status_canceled' && $op != 'status_blocked')) { $params['account'] = $account; $language = $language ? $language : user_preferred_language($account); $mail = drupal_mail('user', $op, $account->mail, $language, $params); @@ -3568,8 +3568,9 @@ function user_register_validate($form, &$form_state) { */ function user_register_submit($form, &$form_state) { $admin = $form_state['values']['administer_users']; + $mail_verification = config('user.settings')->get('mail.verification'); - if (!variable_get('user_email_verification', TRUE) || $admin) { + if (!$mail_verification || $admin) { $pass = $form_state['values']['pass']; } else { @@ -3608,7 +3609,7 @@ function user_register_submit($form, &$form_state) { drupal_set_message(t('Created a new user account for %name. No e-mail has been sent.', array('@url' => url($uri['path'], $uri['options']), '%name' => $account->name))); } // No e-mail verification required; log in user immediately. - elseif (!$admin && !variable_get('user_email_verification', TRUE) && $account->status) { + elseif (!$admin && !$mail_verification && $account->status) { _user_mail_notify('register_no_approval_required', $account); $form_state['uid'] = $account->uid; user_login_submit(array(), $form_state); @@ -3645,7 +3646,7 @@ function user_register_submit($form, &$form_state) { */ function user_modules_installed($modules) { // Assign all available permissions to the administrator role. - $rid = variable_get('user_admin_role', 0); + $rid = config('user.settings')->get('admin_role'); if ($rid) { $permissions = array(); foreach ($modules as $module) { diff --git a/core/modules/user/user.pages.inc b/core/modules/user/user.pages.inc index b568f66..db57ed5 100644 --- a/core/modules/user/user.pages.inc +++ b/core/modules/user/user.pages.inc @@ -330,7 +330,7 @@ function user_cancel_confirm_form($form, &$form_state, $account) { '#description' => t('When enabled, the user must confirm the account cancellation via e-mail.'), ); // Also allow to send account canceled notification mail, if enabled. - $default_notify = variable_get('user_mail_status_canceled_notify', FALSE); + $default_notify = config('user.settings')->get('mail.status_canceled_notify'); $form['user_cancel_notify'] = array( '#type' => 'checkbox', '#title' => t('Notify user when account is canceled.'), @@ -419,6 +419,7 @@ function user_cancel_confirm_form_submit($form, &$form_state) { * @see user_multiple_cancel_confirm() */ function user_cancel_methods() { + $anonymous_name = config('user.settings')->get('anonymous'); $methods = array( 'user_cancel_block' => array( 'title' => t('Disable the account and keep its content.'), @@ -429,8 +430,8 @@ function user_cancel_methods() { 'description' => t('Your account will be blocked and you will no longer be able to log in. All of your content will be hidden from everyone but administrators.'), ), 'user_cancel_reassign' => array( - 'title' => t('Delete the account and make its content belong to the %anonymous-name user.', array('%anonymous-name' => variable_get('anonymous', t('Anonymous')))), - 'description' => t('Your account will be removed and all account information deleted. All of your content will be assigned to the %anonymous-name user.', array('%anonymous-name' => variable_get('anonymous', t('Anonymous')))), + 'title' => t('Delete the account and make its content belong to the %anonymous-name user.', array('%anonymous-name' => $anonymous_name)), + 'description' => t('Your account will be removed and all account information deleted. All of your content will be assigned to the %anonymous-name user.', array('%anonymous-name' => $anonymous_name)), ), 'user_cancel_delete' => array( 'title' => t('Delete the account and its content.'), @@ -472,7 +473,7 @@ function user_cancel_confirm($account, $timestamp = 0, $hashed_pass = '') { // Validate expiration and hashed password/login. if ($timestamp <= $current && $current - $timestamp < $timeout && $account->uid && $timestamp >= $account->login && $hashed_pass == user_pass_rehash($account->pass, $timestamp, $account->login)) { $edit = array( - 'user_cancel_notify' => isset($account->data['user_cancel_notify']) ? $account->data['user_cancel_notify'] : variable_get('user_mail_status_canceled_notify', FALSE), + 'user_cancel_notify' => isset($account->data['user_cancel_notify']) ? $account->data['user_cancel_notify'] : config('user.settings')->get('mail.status_canceled_notify'), ); user_cancel($edit, $account->uid, $account->data['user_cancel_method']); // Since user_cancel() is not invoked via Form API, batch processing needs diff --git a/profiles/minimal/minimal.install b/profiles/minimal/minimal.install index 2c4cee1..224e54d 100644 --- a/profiles/minimal/minimal.install +++ b/profiles/minimal/minimal.install @@ -82,7 +82,7 @@ function minimal_install() { config('system.site')->set('page.front', 'node')->save(); // Allow visitor account creation, but with administrative approval. - variable_set('user_register', USER_REGISTER_VISITORS_ADMINISTRATIVE_APPROVAL); + config('user.settings')->set('register', USER_REGISTER_VISITORS_ADMINISTRATIVE_APPROVAL)->save(); // Enable default permissions for system roles. user_role_grant_permissions(DRUPAL_ANONYMOUS_RID, array('access content')); diff --git a/profiles/standard/standard.install b/profiles/standard/standard.install index 27faf10..32221b3 100644 --- a/profiles/standard/standard.install +++ b/profiles/standard/standard.install @@ -250,7 +250,8 @@ function standard_install() { variable_set('user_picture_style', 'thumbnail'); // Allow visitor account creation with administrative approval. - variable_set('user_register', USER_REGISTER_VISITORS_ADMINISTRATIVE_APPROVAL); + $user_settings = config('user.settings'); + $user_settings->set('register', USER_REGISTER_VISITORS_ADMINISTRATIVE_APPROVAL)->save(); // Create a default vocabulary named "Tags", enabled for the 'article' content type. $description = st('Use tags to group articles on similar topics into categories.'); @@ -385,7 +386,7 @@ function standard_install() { user_role_save($admin_role); user_role_grant_permissions($admin_role->rid, array_keys(module_invoke_all('permission'))); // Set this as the administrator role. - variable_set('user_admin_role', $admin_role->rid); + $user_settings->set('admin_role', $admin_role->rid)->save(); // Assign user 1 the "administrator" role. db_insert('users_roles') diff --git a/profiles/testing/testing.install b/profiles/testing/testing.install index bdd6154..7ab1118 100644 --- a/profiles/testing/testing.install +++ b/profiles/testing/testing.install @@ -13,7 +13,7 @@ */ function testing_install() { // Allow visitor account creation, but with administrative approval. - variable_set('user_register', USER_REGISTER_VISITORS_ADMINISTRATIVE_APPROVAL); + config('user.settings')->set('register', USER_REGISTER_VISITORS_ADMINISTRATIVE_APPROVAL)->save(); // Enable default permissions for system roles. // @todo Remove dependency on Node module.