From b1ba29f623390671c6fe55b15b317c7085d2cb03 Mon Sep 17 00:00:00 2001 From: Bram Goffings Date: Sat, 28 Jul 2012 15:25:13 +0200 Subject: [PATCH] account settings --- core/modules/comment/comment.module | 8 +-- core/modules/comment/comment.tokens.inc | 2 +- .../Drupal/comment/Tests/CommentPreviewTest.php | 6 +- core/modules/filter/filter.admin.inc | 2 +- core/modules/node/node.pages.inc | 5 +- .../Drupal/openid/Tests/OpenIDRegistrationTest.php | 8 +-- core/modules/openid/openid.module | 8 +-- core/modules/shortcut/shortcut.api.php | 2 +- core/modules/system/system.admin.inc | 2 +- core/modules/system/system.api.php | 4 +- core/modules/user/config/user.settings.yml | 18 ++++++ .../Drupal/user/Tests/UserEntityCallbacksTest.php | 2 +- .../Drupal/user/Tests/UserLanguageCreationTest.php | 2 +- .../user/lib/Drupal/user/Tests/UserPictureTest.php | 66 +++++++++++-------- .../lib/Drupal/user/Tests/UserRegistrationTest.php | 29 +++++---- .../lib/Drupal/user/Tests/UserSignatureTest.php | 2 +- .../user/lib/Drupal/user/UserStorageController.php | 4 +- core/modules/user/user.admin.inc | 75 +++++++++++++++------- core/modules/user/user.install | 25 ++++++++ core/modules/user/user.module | 62 +++++++++--------- core/modules/user/user.pages.inc | 9 +-- profiles/minimal/minimal.install | 2 +- profiles/standard/standard.install | 12 ++-- profiles/testing/testing.install | 2 +- 24 files changed, 229 insertions(+), 128 deletions(-) create mode 100644 core/modules/user/config/user.settings.yml 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/CommentPreviewTest.php b/core/modules/comment/lib/Drupal/comment/Tests/CommentPreviewTest.php index e6eef56..82ebded 100644 --- a/core/modules/comment/lib/Drupal/comment/Tests/CommentPreviewTest.php +++ b/core/modules/comment/lib/Drupal/comment/Tests/CommentPreviewTest.php @@ -35,8 +35,10 @@ 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); - variable_set('user_pictures', 1); + $config = congi('user.settings'); + $config->set('user_signatures', 1); + $config->set('user_pictures', 1); + $config->save(); $test_signature = $this->randomName(); $edit['signature[value]'] = '' . $test_signature. ''; $edit['signature[format]'] = 'filtered_html'; 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..b1b9aba 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('email_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 @@ function openid_form_user_register_form_alter(&$form, &$form_state) { // If user_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('email_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('email_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/system/system.admin.inc b/core/modules/system/system.admin.inc index d956f05..e3958dd 100644 --- a/core/modules/system/system.admin.inc +++ b/core/modules/system/system.admin.inc @@ -398,7 +398,7 @@ function system_theme_settings($form, &$form_state, $key = '') { // Some features are not always available $disabled = array(); - if (!variable_get('user_pictures', 0)) { + if (!config('user.settings')->get('picture.enabled')) { $disabled['toggle_node_user_picture'] = TRUE; $disabled['toggle_comment_user_picture'] = TRUE; } diff --git a/core/modules/system/system.api.php b/core/modules/system/system.api.php index 3d2cae0..ab0ec8e 100644 --- a/core/modules/system/system.api.php +++ b/core/modules/system/system.api.php @@ -2442,7 +2442,7 @@ function hook_file_download($uri) { if (!file_prepare_directory($uri)) { $uri = FALSE; } - if (strpos(file_uri_target($uri), variable_get('user_picture_path', 'pictures') . '/picture-') === 0) { + if (strpos(file_uri_target($uri), config('user.settings')->get('picture.path') . '/picture-') === 0) { if (!user_access('access user profiles')) { // Access to the file is denied. return -1; @@ -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..0b3448b --- /dev/null +++ b/core/modules/user/config/user.settings.yml @@ -0,0 +1,18 @@ +anonymous: Anonymous +admin_role: authenticated +register: visitors +signatures: '0' +picture: + enabled: '0' + default: '' + dimensions: '85x85' + file_size: '30' + guidelines: '' + path: pictures + style: '' +mail: + status: + activated_notify: '1' + blocked_notify: '0' + cancelled_notify: '0' + verification: '1' 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/UserPictureTest.php b/core/modules/user/lib/Drupal/user/Tests/UserPictureTest.php index e57cc42..9ff7fa8 100644 --- a/core/modules/user/lib/Drupal/user/Tests/UserPictureTest.php +++ b/core/modules/user/lib/Drupal/user/Tests/UserPictureTest.php @@ -23,13 +23,15 @@ class UserPictureTest extends WebTestBase { function setUp() { parent::setUp(array('image')); + $config = config('user.settings'); // Enable user pictures. - variable_set('user_pictures', 1); + $config->set('picture.enabled', 1); // Configure default user picture settings. - variable_set('user_picture_dimensions', '1024x1024'); - variable_set('user_picture_file_size', '800'); - variable_set('user_picture_style', 'thumbnail'); + $config->set('picture.dimensions', '1024x1024'); + $config->set('picture.file_size', '800'); + $config->set('picture.style', 'thumbnail'); + $config->save(); $this->user = $this->drupalCreateUser(); @@ -38,7 +40,7 @@ class UserPictureTest extends WebTestBase { $file_check = file_prepare_directory($file_dir, FILE_CREATE_DIRECTORY); // TODO: Test public and private methods? - $picture_dir = variable_get('user_picture_path', 'pictures'); + $picture_dir = $config->get('picture.path'); $picture_path = $file_dir . $picture_dir; $pic_check = file_prepare_directory($picture_path, FILE_CREATE_DIRECTORY); @@ -69,10 +71,12 @@ class UserPictureTest extends WebTestBase { $image = current($this->drupalGetTestFiles('image')); $info = image_get_info($image->uri); - // Set new variables: invalid dimensions, valid filesize (0 = no limit). + // Set new config: invalid dimensions, valid filesize (0 = no limit). $test_dim = ($info['width'] - 10) . 'x' . ($info['height'] - 10); - variable_set('user_picture_dimensions', $test_dim); - variable_set('user_picture_file_size', 0); + $config = config('user.settings'); + $config->set('picture.dimensions', $test_dim); + $config->set('picture.file_size', 0); + $config->save(); $pic_path = $this->saveUserPicture($image); // Check that the image was resized and is being displayed on the @@ -80,7 +84,7 @@ class UserPictureTest extends WebTestBase { $text = t('The image was resized to fit within the maximum allowed dimensions of %dimensions pixels.', array('%dimensions' => $test_dim)); $this->assertRaw($text, t('Image was resized.')); $alt = t("@user's picture", array('@user' => user_format_name($this->user))); - $style = variable_get('user_picture_style', ''); + $style = $config->get('user_picture_style'); $this->assertRaw(image_style_url($style, $pic_path), t("Image is displayed in user's edit page")); // Check if file is located in proper directory. @@ -105,11 +109,13 @@ class UserPictureTest extends WebTestBase { $image = end($files); $info = image_get_info($image->uri); - // Set new variables: valid dimensions, invalid filesize. + // Set new config: valid dimensions, invalid filesize. $test_dim = ($info['width'] + 10) . 'x' . ($info['height'] + 10); $test_size = 1; - variable_set('user_picture_dimensions', $test_dim); - variable_set('user_picture_file_size', $test_size); + $config = config('user.settings'); + $config->set('user_picture_dimensions', $test_dim); + $config->set('user_picture_file_size', $test_size); + $config->save(); $pic_path = $this->saveUserPicture($image); @@ -138,10 +144,12 @@ class UserPictureTest extends WebTestBase { $image = current($this->drupalGetTestFiles('image')); $info = image_get_info($image->uri); - // Set new variables: invalid dimensions, valid filesize (0 = no limit). + // Set new config: invalid dimensions, valid filesize (0 = no limit). $test_dim = ($info['width'] - 10) . 'x' . ($info['height'] - 10); - variable_set('user_picture_dimensions', $test_dim); - variable_set('user_picture_file_size', 0); + $config = config('user.settings'); + $config->set('user_picture_dimensions', $test_dim); + $config->set('user_picture_file_size', 0); + $config->save(); $pic_path = $this->saveUserPicture($image); @@ -170,11 +178,13 @@ class UserPictureTest extends WebTestBase { $image = current($this->drupalGetTestFiles('image')); $info = image_get_info($image->uri); - // Set new variables: valid dimensions, invalid filesize. + // Set new config: valid dimensions, invalid filesize. $test_dim = ($info['width'] + 10) . 'x' . ($info['height'] + 10); $test_size = 1; - variable_set('user_picture_dimensions', $test_dim); - variable_set('user_picture_file_size', $test_size); + $config = config('user.settings'); + $config->set('user_picture_dimensions', $test_dim); + $config->set('user_picture_file_size', $test_size); + $config->save(); $pic_path = $this->saveUserPicture($image); @@ -202,10 +212,12 @@ class UserPictureTest extends WebTestBase { $image = current($this->drupalGetTestFiles('image')); $info = image_get_info($image->uri); - // Set new variables: valid dimensions, valid filesize (0 = no limit). + // Set new config: valid dimensions, valid filesize (0 = no limit). $test_dim = ($info['width'] + 10) . 'x' . ($info['height'] + 10); - variable_set('user_picture_dimensions', $test_dim); - variable_set('user_picture_file_size', 0); + $config = config('user.settings'); + $config->set('user_picture_dimensions', $test_dim); + $config->set('user_picture_file_size', 0); + $config->save(); $pic_path = $this->saveUserPicture($image); @@ -218,7 +230,7 @@ class UserPictureTest extends WebTestBase { // Set new picture dimensions. $test_dim = ($info['width'] + 5) . 'x' . ($info['height'] + 5); - variable_set('user_picture_dimensions', $test_dim); + $config->set('user_picture_dimensions', $test_dim)->save(); $pic_path2 = $this->saveUserPicture($image); $this->assertNotEqual($pic_path, $pic_path2, t('Filename of second picture is different.')); @@ -234,7 +246,7 @@ class UserPictureTest extends WebTestBase { $images = $this->drupalGetTestFiles('image'); $image = $images[0]; $pic_path = file_create_url($image->uri); - variable_set('user_picture_default', $pic_path); + config('user.settings')->set('user_picture_default', $pic_path)->save(); // Check if image is displayed in user's profile page. $this->drupalGet('user'); @@ -254,10 +266,12 @@ class UserPictureTest extends WebTestBase { $image = current($this->drupalGetTestFiles('image')); $info = image_get_info($image->uri); - // Set new variables: valid dimensions, valid filesize (0 = no limit). + // Set new config: valid dimensions, valid filesize (0 = no limit). $test_dim = ($info['width'] + 10) . 'x' . ($info['height'] + 10); - variable_set('user_picture_dimensions', $test_dim); - variable_set('user_picture_file_size', 0); + $config = config('user.settings'); + $config->set('user_picture_dimensions', $test_dim); + $config->set('user_picture_file_size', 0); + $config->save(); // Save a new picture. $edit = array('files[picture_upload]' => drupal_realpath($image->uri)); diff --git a/core/modules/user/lib/Drupal/user/Tests/UserRegistrationTest.php b/core/modules/user/lib/Drupal/user/Tests/UserRegistrationTest.php index 56ad9a0..d35d9b1 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,12 @@ class UserRegistrationTest extends WebTestBase { } function testRegistrationEmailDuplicates() { + $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(); // Set up a user to check for duplicates. $duplicate_user = $this->drupalCreateUser(); @@ -138,11 +141,13 @@ class UserRegistrationTest extends WebTestBase { } function testRegistrationDefaultValues() { + $config = config('user.settings'); // Allow registration by site visitors without administrator approval. - variable_set('user_register', USER_REGISTER_VISITORS); + $config->set('register', USER_REGISTER_VISITORS); // Don't require e-mail verification. - variable_set('user_email_verification', FALSE); + $config->set('mail.verification', FALSE); + $config->save(); // Set the default timezone to Brussels. variable_set('configurable_timezones', 1); @@ -168,7 +173,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..3d605eb 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); // Create Basic page node type. $this->drupalCreateContentType(array('type' => 'page', 'name' => 'Basic page')); diff --git a/core/modules/user/lib/Drupal/user/UserStorageController.php b/core/modules/user/lib/Drupal/user/UserStorageController.php index bde430c..0b571c8 100644 --- a/core/modules/user/lib/Drupal/user/UserStorageController.php +++ b/core/modules/user/lib/Drupal/user/UserStorageController.php @@ -46,7 +46,7 @@ class UserStorageController extends DatabaseStorageController { } // Add the full file objects for user pictures if enabled. - if (!empty($picture_fids) && variable_get('user_pictures', 1) == 1) { + if (!empty($picture_fids) && config('user.settings')->get('picture.enabled') == 1) { $pictures = file_load_multiple($picture_fids); foreach ($queried_users as $entity) { if (!empty($entity->picture) && isset($pictures[$entity->picture])) { @@ -117,7 +117,7 @@ class UserStorageController extends DatabaseStorageController { // and make it permanent. if (!$picture->status) { $info = image_get_info($picture->uri); - $picture_directory = file_default_scheme() . '://' . variable_get('user_picture_path', 'pictures'); + $picture_directory = file_default_scheme() . '://' . config('user.settings')->get('picture.path'); // Prepare the pictures directory. file_prepare_directory($picture_directory, FILE_CREATE_DIRECTORY); diff --git a/core/modules/user/user.admin.inc b/core/modules/user/user.admin.inc index 58b0218..da3ecd7 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('email_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,17 +343,17 @@ 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)) { - $picture_path = file_default_scheme() . '://' . variable_get('user_picture_path', 'pictures'); + $picture_support = $config->get('picture.enabled'); + if ($picture_support) { + $picture_path = file_default_scheme() . '://' . $config->get('picture.path'); if (!file_prepare_directory($picture_path, FILE_CREATE_DIRECTORY)) { form_set_error('user_picture_path', t('The directory %directory does not exist or is not writable.', array('%directory' => $picture_path))); watchdog('file system', 'The directory %directory does not exist or is not writable.', array('%directory' => $picture_path), WATCHDOG_ERROR); } } - $picture_support = variable_get('user_pictures', 0); $form['personalization']['user_pictures'] = array( '#type' => 'checkbox', '#title' => t('Enable user pictures.'), @@ -371,7 +372,7 @@ function user_admin_settings() { $form['personalization']['pictures']['user_picture_path'] = array( '#type' => 'textfield', '#title' => t('Picture directory'), - '#default_value' => variable_get('user_picture_path', 'pictures'), + '#default_value' => $config->get('picture.path'), '#size' => 30, '#maxlength' => 255, '#description' => t('Subdirectory in the file upload directory where pictures will be stored.'), @@ -379,7 +380,7 @@ function user_admin_settings() { $form['personalization']['pictures']['user_picture_default'] = array( '#type' => 'textfield', '#title' => t('Default picture'), - '#default_value' => variable_get('user_picture_default', ''), + '#default_value' => $config->get('picture.default'), '#size' => 30, '#maxlength' => 255, '#description' => t('URL of picture to display for users with no custom picture selected. Leave blank for none.'), @@ -389,14 +390,14 @@ function user_admin_settings() { '#type' => 'select', '#title' => t('Picture display style'), '#options' => image_style_options(TRUE), - '#default_value' => variable_get('user_picture_style', ''), + '#default_value' => $config->get('picture.style'), '#description' => t('The style selected will be used on display, while the original image is retained. Styles may be configured in the Image styles administration area.', array('!url' => url('admin/config/media/image-styles'))), ); } $form['personalization']['pictures']['user_picture_dimensions'] = array( '#type' => 'textfield', '#title' => t('Picture upload dimensions'), - '#default_value' => variable_get('user_picture_dimensions', '85x85'), + '#default_value' => $config->get('picture.dimensions'), '#size' => 10, '#maxlength' => 10, '#field_suffix' => ' ' . t('pixels'), @@ -405,7 +406,7 @@ function user_admin_settings() { $form['personalization']['pictures']['user_picture_file_size'] = array( '#type' => 'number', '#title' => t('Picture upload file size'), - '#default_value' => variable_get('user_picture_file_size', '30'), + '#default_value' => $config->get('picture.file_size'), '#min' => 0, '#field_suffix' => ' ' . t('KB'), '#description' => t('Maximum allowed file size for uploaded pictures. Upload size is normally limited only by the PHP maximum post and file upload settings, and images are automatically scaled down to the dimensions specified above.'), @@ -413,7 +414,7 @@ function user_admin_settings() { $form['personalization']['pictures']['user_picture_guidelines'] = array( '#type' => 'textarea', '#title' => t('Picture guidelines'), - '#default_value' => variable_get('user_picture_guidelines', ''), + '#default_value' => $config->get('picture.guidelines'), '#description' => t("This text is displayed at the picture upload form in addition to the default guidelines. It's useful for helping or instructing your users."), ); @@ -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,35 @@ 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 = config('user.settings'); + $config + ->set('anonymous', $form_state['values']['anonymous']) + ->set('admin_role', $form_state['values']['user_admin_role']) + ->set('register', $form_state['values']['user_register']) + ->set('email_verification', $form_state['values']['user_email_verification']) + ->set('signatures', $form_state['values']['user_signatures']) + ->set('picture.enabled', $form_state['values']['user_pictures']) + ->set('picture.path', $form_state['values']['user_picture_path']) + ->set('picture.default', $form_state['values']['user_picture_default']) + ->set('picture.dimensions', $form_state['values']['user_picture_dimensions']) + ->set('picture.file_size', $form_state['values']['user_picture_file_size']) + ->set('picture.guidelines', $form_state['values']['user_picture_guidelines']) + ->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']); + + if (isset($form_state['values']['user_picture_style'])) { + $config->set('picture.style', $form_state['values']['user_picture_style']); + } + + $config->save(); } /** diff --git a/core/modules/user/user.install b/core/modules/user/user.install index 5ec57da..2d6b8d9 100644 --- a/core/modules/user/user.install +++ b/core/modules/user/user.install @@ -442,5 +442,30 @@ function user_update_8002() { } /** + * Converts account settings variables to configuration system + * + * @see http://drupal.org/node/1496534 + */ +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_pictures' => 'picture.enabled', + 'user_picture_default' => 'picture. default', + 'user_picture_dimensions' => 'picture.dimensions', + 'user_picture_file_size' => 'picture.file_size', + 'user_picture_guidelines' => 'picture.guidelines', + 'user_picture_path' => 'picture.path', + 'user_picture_style' => 'picture.style', + '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..c6ced2b 100644 --- a/core/modules/user/user.module +++ b/core/modules/user/user.module @@ -22,18 +22,18 @@ const EMAIL_MAX_LENGTH = 254; /** * Only administrators can create user accounts. */ -const USER_REGISTER_ADMINISTRATORS_ONLY = 0; +const USER_REGISTER_ADMINISTRATORS_ONLY = 'administrators_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(). @@ -401,17 +401,18 @@ function user_validate_name($name) { * @see user_account_form() */ function user_validate_picture(&$form, &$form_state) { + $config = config('user.settings'); // If required, validate the uploaded picture. $validators = array( 'file_validate_is_image' => array(), - 'file_validate_image_resolution' => array(variable_get('user_picture_dimensions', '85x85')), - 'file_validate_size' => array(variable_get('user_picture_file_size', '30') * 1024), + 'file_validate_image_resolution' => array($config->get('picture.dimensions')), + 'file_validate_size' => array($config->get('picture.file_size') * 1024), ); // Save the file as a temporary file. $file = file_save_upload('picture_upload', $validators); if ($file === FALSE) { - form_set_error('picture_upload', t("Failed to upload the picture image; the %directory directory doesn't exist or is not writable.", array('%directory' => variable_get('user_picture_path', 'pictures')))); + form_set_error('picture_upload', t("Failed to upload the picture image; the %directory directory doesn't exist or is not writable.", array('%directory' => $config->get('picture.path')))); } elseif ($file !== NULL) { $form_state['values']['picture_upload'] = $file; @@ -578,7 +579,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'), @@ -593,7 +594,7 @@ function user_permission() { * Ensure that user pictures (avatars) are always downloadable. */ function user_file_download($uri) { - if (strpos(file_uri_target($uri), variable_get('user_picture_path', 'pictures') . '/picture-') === 0) { + if (strpos(file_uri_target($uri), config('user.settings')->get('picture.path') . '/picture-') === 0) { $info = image_get_info($uri); return array('Content-Type' => $info['mime_type']); } @@ -711,6 +712,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 +789,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('email_verification') || $admin) { $form['account']['pass'] = array( '#type' => 'password_confirm', '#size' => 25, @@ -800,7 +802,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 +845,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('user_signatures')), ); $form['signature_settings']['signature'] = array( @@ -859,7 +861,7 @@ function user_account_form(&$form, &$form_state) { '#type' => 'fieldset', '#title' => t('Picture'), '#weight' => 1, - '#access' => (!$register && variable_get('user_pictures', 0)), + '#access' => (!$register && $config->get('picture.enabled')), ); $form['picture']['picture'] = array( '#type' => 'value', @@ -878,7 +880,7 @@ function user_account_form(&$form, &$form_state) { '#type' => 'file', '#title' => t('Upload picture'), '#size' => 48, - '#description' => t('Your virtual face or picture. Pictures larger than @dimensions pixels will be scaled down.', array('@dimensions' => variable_get('user_picture_dimensions', '85x85'))) . ' ' . filter_xss_admin(variable_get('user_picture_guidelines', '')), + '#description' => t('Your virtual face or picture. Pictures larger than @dimensions pixels will be scaled down.', array('@dimensions' => $config->get('picture.dimensions'))) . ' ' . filter_xss_admin($config->get('picture.guidelines')), ); $form['#validate'][] = 'user_validate_picture'; @@ -1058,7 +1060,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 +1223,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; } @@ -1237,7 +1239,8 @@ function user_format_name($account) { */ function template_preprocess_user_picture(&$variables) { $variables['user_picture'] = ''; - if (variable_get('user_pictures', 0)) { + $config = config('user.settings'); + if ($config->get('picture.enabled')) { $account = $variables['account']; if (!empty($account->picture)) { // @TODO: Ideally this function would only be passed file entities, but @@ -1254,14 +1257,14 @@ function template_preprocess_user_picture(&$variables) { $filepath = $account->picture->uri; } } - elseif (variable_get('user_picture_default', '')) { - $filepath = variable_get('user_picture_default', ''); + elseif ($config->get('picture.default')) { + $filepath = $config->get('picture.default'); } if (isset($filepath)) { $alt = t("@user's picture", array('@user' => user_format_name($account))); // If the image does not have a valid Drupal scheme (for eg. HTTP), // don't load image styles. - if (module_exists('image') && file_valid_uri($filepath) && $style = variable_get('user_picture_style', '')) { + if (module_exists('image') && file_valid_uri($filepath) && $style = $config->get('picture.style')) { $variables['user_picture'] = theme('image_style', array('style_name' => $style, 'uri' => $filepath, 'alt' => $alt, 'title' => $alt)); } else { @@ -1419,7 +1422,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 +3083,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 +3212,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,8 +3302,7 @@ 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); + $notify = config('user.settings')->get('mail.' . $op . '_notify'); if ($notify) { $params['account'] = $account; $language = $language ? $language : user_preferred_language($account); @@ -3396,9 +3398,10 @@ function user_image_style_delete($style) { * Implements hook_image_style_save(). */ function user_image_style_save($style) { + $config = config('user.settings'); // If a style is renamed, update the variables that use it. - if (isset($style['old_name']) && $style['old_name'] == variable_get('user_picture_style', '')) { - variable_set('user_picture_style', $style['name']); + if (isset($style['old_name']) && $style['old_name'] == $config->get('picture.style')) { + $config->set('picture.style', $style['name'])->save(); } } @@ -3568,8 +3571,9 @@ function user_register_validate($form, &$form_state) { */ function user_register_submit($form, &$form_state) { $admin = $form_state['values']['administer_users']; + $config = config('user.settings'); - if (!variable_get('user_email_verification', TRUE) || $admin) { + if (!$config->get('email_verification') || $admin) { $pass = $form_state['values']['pass']; } else { @@ -3608,7 +3612,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 && !$config->get('user_email_verification') && $account->status) { _user_mail_notify('register_no_approval_required', $account); $form_state['uid'] = $account->uid; user_login_submit(array(), $form_state); @@ -3645,7 +3649,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('user_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..5682ca1 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..75efa08 100644 --- a/profiles/standard/standard.install +++ b/profiles/standard/standard.install @@ -244,13 +244,15 @@ function standard_install() { variable_set('node_submitted_page', FALSE); // Enable user picture support and set the default to a square thumbnail option. - variable_set('user_pictures', '1'); - variable_set('user_picture_dimensions', '1024x1024'); - variable_set('user_picture_file_size', '800'); - variable_set('user_picture_style', 'thumbnail'); + $user_settings = config('user.settings'); + $user_settings + ->set('picture.enabled', '1') + ->set('picture.dimensions', '1024x1024') + ->set('picture.file_size', '800') + ->set('picture.style', 'thumbnail'); // Allow visitor account creation with administrative approval. - variable_set('user_register', USER_REGISTER_VISITORS_ADMINISTRATIVE_APPROVAL); + $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.'); 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. -- 1.7.11.msysgit.1