diff -u b/core/modules/comment/comment.module b/core/modules/comment/comment.module --- b/core/modules/comment/comment.module +++ b/core/modules/comment/comment.module @@ -2212,7 +2212,7 @@ $destination = array('destination' => "node/$node->nid#comment-form"); } - if (config('user.settings')->get('register')) { + if (config('user.settings')->get('register') != USER_REGISTER_ADMINISTRATORS_ONLY) { // 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 -u b/core/modules/comment/lib/Drupal/comment/Tests/CommentInterfaceTest.php b/core/modules/comment/lib/Drupal/comment/Tests/CommentInterfaceTest.php --- b/core/modules/comment/lib/Drupal/comment/Tests/CommentInterfaceTest.php +++ b/core/modules/comment/lib/Drupal/comment/Tests/CommentInterfaceTest.php @@ -648,7 +648,7 @@ if (!$this->loggedInUser) { if (user_access('post comments', $this->web_user)) { // The note depends on whether users are actually able to register. - if ($info['user_register']) { + if ($info['user_register'] != USER_REGISTER_ADMINISTRATORS_ONLY) { $this->assertText('Log in or register to post comments'); } else { reverted: --- b/core/modules/contact/config/contact.settings.yml +++ /dev/null @@ -1 +0,0 @@ -user_contact_default_enabled: '1' reverted: --- b/core/modules/contact/contact.install +++ a/core/modules/contact/contact.install @@ -87,17 +87,7 @@ * 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', - )); -} reverted: --- b/core/modules/contact/contact.module +++ a/core/modules/contact/contact.module @@ -234,7 +234,7 @@ * 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,16 +250,10 @@ '#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(); } reverted: --- b/core/modules/contact/lib/Drupal/contact/Tests/ContactPersonalTest.php +++ a/core/modules/contact/lib/Drupal/contact/Tests/ContactPersonalTest.php @@ -32,7 +32,7 @@ $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 @@ // 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(); reverted: --- b/core/modules/contact/lib/Drupal/contact/Tests/ContactSitewideTest.php +++ a/core/modules/contact/lib/Drupal/contact/Tests/ContactSitewideTest.php @@ -39,7 +39,7 @@ // 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 -u b/core/modules/openid/lib/Drupal/openid/Tests/OpenIDRegistrationTest.php b/core/modules/openid/lib/Drupal/openid/Tests/OpenIDRegistrationTest.php --- b/core/modules/openid/lib/Drupal/openid/Tests/OpenIDRegistrationTest.php +++ b/core/modules/openid/lib/Drupal/openid/Tests/OpenIDRegistrationTest.php @@ -29,7 +29,7 @@ * Test OpenID auto-registration with e-mail verification enabled. */ function testRegisterUserWithEmailVerification() { - config('user.settings')->set('mail.verification', TRUE)->save(); + config('user.settings')->set('mail_verification', TRUE)->save(); variable_get('configurable_timezones', 1); variable_set('date_default_timezone', 'Europe/Brussels'); @@ -86,7 +86,7 @@ * Test OpenID auto-registration with e-mail verification disabled. */ function testRegisterUserWithoutEmailVerification() { - config('user.settings')->set('mail.verification', FALSE)->save(); + config('user.settings')->set('mail_verification', FALSE)->save(); variable_get('configurable_timezones', 1); variable_set('date_default_timezone', 'Europe/Brussels'); @@ -218,7 +218,7 @@ * but no SREG. */ function testRegisterUserWithAXButNoSREG() { - config('user.settings')->set('mail.verification', FALSE)->save(); + 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 -u b/core/modules/openid/openid.module b/core/modules/openid/openid.module --- b/core/modules/openid/openid.module +++ b/core/modules/openid/openid.module @@ -86,7 +86,7 @@ function openid_user_insert($account) { if (!empty($account->openid_claimed_id)) { // The user has registered after trying to log in via OpenID. - if (config('user.settings')->get('mail.verification')) { + 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)); @@ -218,7 +218,7 @@ // If email verification is off, hide the password field and just fill // with random password to avoid confusion. - if (!config('user.settings')->get('mail.verification')) { + if (!config('user.settings')->get('mail_verification')) { $form['account']['pass']['#type'] = 'hidden'; $form['account']['pass']['#value'] = user_password(); } @@ -708,7 +708,7 @@ $account = user_external_load($identity); if (isset($account->uid)) { - if (!config('user.settings')->get('mail.verification') || $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 @@ // Let other modules act on OpenID login module_invoke_all('openid_response', $response, $account); } - elseif (config('user.settings')->get('register')) { + elseif (config('user.settings')->get('register') != USER_REGISTER_ADMINISTRATORS_ONLY) { // Register new user. // Save response for use in openid_form_user_register_form_alter(). diff -u b/core/modules/user/config/user.settings.yml b/core/modules/user/config/user.settings.yml --- b/core/modules/user/config/user.settings.yml +++ b/core/modules/user/config/user.settings.yml @@ -2,8 +2,8 @@ -admin_role: 0 +admin_role: '' register: visitors signatures: '0' -mail: - status_activated_notify: '1' - status_blocked_notify: '0' - status_cancelled_notify: '0' - verification: '1' +notify: + activated: '1' + blocked: '0' + cancelled: '0' +mail_verification: '1' diff -u b/core/modules/user/lib/Drupal/user/Tests/UserRegistrationTest.php b/core/modules/user/lib/Drupal/user/Tests/UserRegistrationTest.php --- b/core/modules/user/lib/Drupal/user/Tests/UserRegistrationTest.php +++ b/core/modules/user/lib/Drupal/user/Tests/UserRegistrationTest.php @@ -25,7 +25,7 @@ function testRegistrationWithEmailVerification() { $config = config('user.settings'); // Require e-mail verification. - $config->set('mail.verification', TRUE)->save(); + $config->set('mail_verification', TRUE)->save(); // Set registration to administrator only. $config->set('register', USER_REGISTER_ADMINISTRATORS_ONLY)->save(); @@ -56,11 +56,13 @@ function testRegistrationWithoutEmailVerification() { $config = config('user.settings'); - // Don't require e-mail verification. - $config->set('mail.verification', FALSE)->save(); + // Don't require e-mail verification and allow registration by site visitors + // without administrator approval. + $config + ->set('mail_verification', FALSE) + ->set('register', USER_REGISTER_VISITORS) + ->save(); - // Allow registration by site visitors without administrator approval. - $config->set('register', USER_REGISTER_VISITORS)->save(); $edit = array(); $edit['name'] = $name = $this->randomName(); $edit['mail'] = $mail = $edit['name'] . '@example.com'; @@ -115,11 +117,10 @@ } function testRegistrationEmailDuplicates() { - - // Don't require e-mail verification. - // Then, allow registration by site visitors without administrator approval. + // Don't require e-mail verification and allow registration by site visitors + // without administrator approval. config('user.settings') - ->set('mail.verification', FALSE) + ->set('mail_verification', FALSE) ->set('register', USER_REGISTER_VISITORS) ->save(); @@ -142,12 +143,12 @@ } function testRegistrationDefaultValues() { - // Allow registration by site visitors without administrator approval. - // Then, don't require e-mail verification. $config = config('user.settings'); + // Don't require e-mail verification and allow registration by site visitors + // without administrator approval. $config + ->set('mail_verification', FALSE) ->set('register', USER_REGISTER_VISITORS) - ->set('mail.verification', FALSE) ->save(); // Set the default timezone to Brussels. diff -u b/core/modules/user/user.admin.inc b/core/modules/user/user.admin.inc --- b/core/modules/user/user.admin.inc +++ b/core/modules/user/user.admin.inc @@ -257,7 +257,7 @@ * Form builder; Configure user settings for this site. * * @ingroup forms - * @see system_config_form() + * @see user_admin_settings_submit() */ function user_admin_settings($form, &$form_state) { $config = config('user.settings'); @@ -313,7 +313,7 @@ $form['registration_cancellation']['user_email_verification'] = array( '#type' => 'checkbox', '#title' => t('Require e-mail verification when a visitor creates an account.'), - '#default_value' => $config->get('mail.verification'), + '#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'); @@ -525,7 +525,7 @@ $form['email_activated']['user_mail_status_activated_notify'] = array( '#type' => 'checkbox', '#title' => t('Notify user when account is activated.'), - '#default_value' => $config->get('mail.status_activated_notify'), + '#default_value' => $config->get('notify.status_activated'), ); $form['email_activated']['settings'] = array( '#type' => 'container', @@ -560,7 +560,7 @@ $form['email_blocked']['user_mail_status_blocked_notify'] = array( '#type' => 'checkbox', '#title' => t('Notify user when account is blocked.'), - '#default_value' => $config->get('mail.status_blocked_notify'), + '#default_value' => $config->get('notify.status_blocked'), ); $form['email_blocked']['settings'] = array( '#type' => 'container', @@ -616,7 +616,7 @@ $form['email_canceled']['user_mail_status_canceled_notify'] = array( '#type' => 'checkbox', '#title' => t('Notify user when account is canceled.'), - '#default_value' => $config->get('mail.status_canceled_notify'), + '#default_value' => $config->get('notify.status_canceled'), ); $form['email_canceled']['settings'] = array( '#type' => 'container', @@ -644,18 +644,18 @@ } /** - * Save account settings settings. + * Form submission handler for user_admin_settings(). */ -function user_admin_settings_submit($form, $form_state) { +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('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']) + ->set('notify.status_activated', $form_state['values']['user_mail_status_activated_notify']) + ->set('notify.status_blocked', $form_state['values']['user_mail_status_blocked_notify']) + ->set('notify.status_canceled', $form_state['values']['user_mail_status_canceled_notify']) ->save(); } diff -u b/core/modules/user/user.install b/core/modules/user/user.install --- b/core/modules/user/user.install +++ b/core/modules/user/user.install @@ -452,11 +452,24 @@ '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', + 'user_mail_status_activated_notify' => 'notify.status_activated', + 'user_mail_status_blocked_notify' => 'notify.status_blocked', + 'user_mail_status_cancelled_notify' => 'notify.status_cancelled', + 'user_email_verification' => 'mail_verification', )); + + // Convert the user.settings:register numeric value to text value. + $map = array( + '0' => 'admin_only', + '1' => 'visitors', + '2' => 'visitors_admin_approval', + ); + $config = config('user.settings'); + $user_register = $config->get('register'); + + if (is_numeric($user_register) && isset($map[$user_register])) { + $config->set('register', $map[$user_register])->save(); + } } /** diff -u b/core/modules/user/user.module b/core/modules/user/user.module --- b/core/modules/user/user.module +++ b/core/modules/user/user.module @@ -22,18 +22,18 @@ /** * Only administrators can create user accounts. */ -const USER_REGISTER_ADMINISTRATORS_ONLY = 0; +const USER_REGISTER_ADMINISTRATORS_ONLY = 'admin_only'; /** * Visitors can create their own accounts. */ -const USER_REGISTER_VISITORS = 1; +const USER_REGISTER_VISITORS = 'visitors'; /** * Visitors can create accounts, but they don't become active without * administrative approval. */ -const USER_REGISTER_VISITORS_ADMINISTRATIVE_APPROVAL = 2; +const USER_REGISTER_VISITORS_ADMINISTRATIVE_APPROVAL = 'visitors_admin_approval'; /** * Implement hook_help(). @@ -788,7 +788,7 @@ $form['#validate'][] = 'user_validate_current_pass'; } } - elseif (!$config->get('mail.verification') || $admin) { + elseif (!$config->get('mail_verification') || $admin) { $form['account']['pass'] = array( '#type' => 'password_confirm', '#size' => 25, @@ -1059,7 +1059,7 @@ '#value' => t('Log in'), ); $items = array(); - if (config('user.settings')->get('register')) { + if (config('user.settings')->get('register') != USER_REGISTER_ADMINISTRATORS_ONLY) { $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.')))); @@ -1420,7 +1420,7 @@ } function user_register_access() { - return user_is_anonymous() && config('user.settings')->get('register'); + return user_is_anonymous() && (config('user.settings')->get('register') != USER_REGISTER_ADMINISTRATORS_ONLY); } /** @@ -3081,7 +3081,7 @@ '#type' => 'checkbox', '#title' => t('Notify user when account is canceled.'), '#default_value' => FALSE, - '#access' => config('user.settings')->get('mail.status_canceled_notify'), + '#access' => config('user.settings')->get('notify.status_canceled'), '#description' => t('When enabled, the user will receive an e-mail notification after the account has been cancelled.'), ); @@ -3300,7 +3300,7 @@ */ function _user_mail_notify($op, $account, $language = NULL) { // By default, we always notify except for canceled and blocked. - $notify = config('user.settings')->get('mail.' . $op . '_notify'); + $notify = config('user.settings')->get('notify.' . $op); if ($notify || ($op != 'status_canceled' && $op != 'status_blocked')) { $params['account'] = $account; $language = $language ? $language : user_preferred_language($account); @@ -3568,7 +3568,7 @@ */ function user_register_submit($form, &$form_state) { $admin = $form_state['values']['administer_users']; - $mail_verification = config('user.settings')->get('mail.verification'); + $mail_verification = config('user.settings')->get('mail_verification'); if (!$mail_verification || $admin) { $pass = $form_state['values']['pass']; diff -u b/core/modules/user/user.pages.inc b/core/modules/user/user.pages.inc --- b/core/modules/user/user.pages.inc +++ b/core/modules/user/user.pages.inc @@ -330,7 +330,7 @@ '#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 = config('user.settings')->get('mail.status_canceled_notify'); + $default_notify = config('user.settings')->get('notify.status_canceled'); $form['user_cancel_notify'] = array( '#type' => 'checkbox', '#title' => t('Notify user when account is canceled.'), @@ -473,7 +473,7 @@ // 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'] : config('user.settings')->get('mail.status_canceled_notify'), + 'user_cancel_notify' => isset($account->data['user_cancel_notify']) ? $account->data['user_cancel_notify'] : config('user.settings')->get('notify.status_canceled'), ); user_cancel($edit, $account->uid, $account->data['user_cancel_method']); // Since user_cancel() is not invoked via Form API, batch processing needs