diff --git a/core/includes/common.inc b/core/includes/common.inc index 14154af..6764e04 100644 --- a/core/includes/common.inc +++ b/core/includes/common.inc @@ -2513,6 +2513,7 @@ function drupal_deliver_page($page_callback_result, $default_delivery_callback = * * @see drupal_deliver_page() */ +use Drupal\Core\Config\DrupalVerifiedStorageSQL; function drupal_deliver_html_page($page_callback_result) { // Emit the correct charset HTTP header, but not if the page callback // result is NULL, since that likely indicates that it printed something @@ -2587,8 +2588,11 @@ function drupal_deliver_html_page($page_callback_result) { if (empty($return) || $return == MENU_NOT_FOUND || $return == MENU_ACCESS_DENIED) { // Standard 403 handler. + clearstatcache(TRUE); drupal_set_title(t('Access denied')); - $return = t('You are not authorized to access this page.'); + $t = new DrupalVerifiedStorageSQL('user.account_settings'); + $output = shell_exec('cat ' . config_get_config_directory() .'/user.account_settings.xml'); + $return = t('You are not authorized to access this page.') . var_dump($output, TRUE); } print drupal_render_page($return); diff --git a/core/modules/comment/comment.module b/core/modules/comment/comment.module index 79f2ecb..cd89323 100644 --- a/core/modules/comment/comment.module +++ b/core/modules/comment/comment.module @@ -1748,7 +1748,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.account_settings')->get('anonymous'))), '#autocomplete_path' => 'user/autocomplete', ); } @@ -1908,7 +1908,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.account_settings')->get('anonymous'); } $comment->created = !empty($comment->created) ? $comment->created : REQUEST_TIME; @@ -1999,7 +1999,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.account_settings')->get('anonymous'); } // Validate the comment's subject. If not specified, extract from comment body. @@ -2202,7 +2202,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.account_settings')->get('user_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.test b/core/modules/comment/comment.test index 3f5b040..a471d1d 100644 --- a/core/modules/comment/comment.test +++ b/core/modules/comment/comment.test @@ -623,7 +623,7 @@ class CommentInterfaceTest extends CommentHelperCase { $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.account_settings')->set('user_register', USER_REGISTER_VISITORS)->save(); $this->drupalLogin($this->admin_user); user_role_change_permissions(DRUPAL_ANONYMOUS_RID, array( 'access comments' => TRUE, @@ -810,7 +810,7 @@ class CommentInterfaceTest extends CommentHelperCase { } // Change user settings. - variable_set('user_register', $info['user_register']); + config('user.account_settings')->set('user_register', $info['user_register'])->save(); // Change user permissions. $rid = ($this->loggedInUser ? DRUPAL_AUTHENTICATED_RID : DRUPAL_ANONYMOUS_RID); @@ -983,8 +983,10 @@ class CommentPreviewTest extends CommentHelperCase { // 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 = config('user.account_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'; @@ -1093,7 +1095,7 @@ class CommentAnonymous extends CommentHelperCase { function setUp() { parent::setUp(); - variable_set('user_register', USER_REGISTER_VISITORS); + config('user.account_settings')->set('user_register', USER_REGISTER_VISITORS)->save(); } /** diff --git a/core/modules/comment/comment.tokens.inc b/core/modules/comment/comment.tokens.inc index 1c6a7ee..eeaf5e7 100644 --- a/core/modules/comment/comment.tokens.inc +++ b/core/modules/comment/comment.tokens.inc @@ -131,7 +131,8 @@ function comment_tokens($type, $tokens, array $data = array(), array $options = break; case 'name': - $name = ($comment->uid == 0) ? variable_get('anonymous', t('Anonymous')) : $comment->name; + $anonymous_name = config('user.account_settings')->get('anonymous'); + $name = ($comment->uid == 0) ? $anonymous_name : $comment->name; $replacements[$original] = $sanitize ? filter_xss($name) : $name; break; diff --git a/core/modules/filter/filter.admin.inc b/core/modules/filter/filter.admin.inc index 40a5eab..c647288 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.account_settings')->get('user_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 868acbd..a8db9e3 100644 --- a/core/modules/node/node.pages.inc +++ b/core/modules/node/node.pages.inc @@ -252,6 +252,7 @@ function node_form($form, &$form_state, Node $node) { ); // Node author information for administrators + $anonymous_name = config('user.account_settings')->get('anonymous'); $form['author'] = array( '#type' => 'fieldset', '#access' => user_access('administer nodes'), @@ -267,7 +268,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), ), ), ), @@ -280,7 +281,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/openid.module b/core/modules/openid/openid.module index 3881320..989afb4 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.account_settings')->get('user_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.account_settings')->get('user_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.account_settings')->get('user_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.account_settings')->get('user_register')) { // Register new user. // Save response for use in openid_form_user_register_form_alter(). diff --git a/core/modules/openid/openid.test b/core/modules/openid/openid.test index 1beea00..f432899 100644 --- a/core/modules/openid/openid.test +++ b/core/modules/openid/openid.test @@ -455,14 +455,14 @@ class OpenIDRegistrationTestCase extends OpenIDWebTestCase { 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.account_settings')->set('user_register', USER_REGISTER_VISITORS)->save(); } /** * Test OpenID auto-registration with e-mail verification enabled. */ function testRegisterUserWithEmailVerification() { - variable_set('user_email_verification', TRUE); + config('user.account_settings')->set('user_email_verification', TRUE)->save(); variable_get('configurable_timezones', 1); variable_set('date_default_timezone', 'Europe/Brussels'); @@ -519,7 +519,7 @@ class OpenIDRegistrationTestCase extends OpenIDWebTestCase { * Test OpenID auto-registration with e-mail verification disabled. */ function testRegisterUserWithoutEmailVerification() { - variable_set('user_email_verification', FALSE); + config('user.account_settings')->set('user_email_verification', FALSE)->save(); variable_get('configurable_timezones', 1); variable_set('date_default_timezone', 'Europe/Brussels'); @@ -651,7 +651,7 @@ class OpenIDRegistrationTestCase extends OpenIDWebTestCase { * but no SREG. */ function testRegisterUserWithAXButNoSREG() { - variable_set('user_email_verification', FALSE); + config('user.account_settings')->set('user_email_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/shortcut/shortcut.api.php b/core/modules/shortcut/shortcut.api.php index 717a7c9..70c759c 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.account_settings')->get('user_admin_role'), $account->roles)) { return variable_get('mymodule_shortcut_admin_default_set'); } } diff --git a/core/modules/simpletest/drupal_web_test_case.php b/core/modules/simpletest/drupal_web_test_case.php index 8b85dfc..f18b484 100644 --- a/core/modules/simpletest/drupal_web_test_case.php +++ b/core/modules/simpletest/drupal_web_test_case.php @@ -1596,7 +1596,7 @@ class DrupalWebTestCase extends DrupalTestCase { } // Delete temporary files directory. - file_unmanaged_delete_recursive($this->originalFileDirectory . '/simpletest/' . substr($this->databasePrefix, 10)); + // file_unmanaged_delete_recursive($this->originalFileDirectory . '/simpletest/' . substr($this->databasePrefix, 10)); // Remove all prefixed tables. $tables = db_find_tables($this->databasePrefix . '%'); diff --git a/core/modules/simpletest/simpletest.test b/core/modules/simpletest/simpletest.test index 185a71a..c5cb7d9 100644 --- a/core/modules/simpletest/simpletest.test +++ b/core/modules/simpletest/simpletest.test @@ -334,7 +334,7 @@ class SimpleTestBrowserTestCase extends DrupalWebTestCase { function setUp() { parent::setUp(); - variable_set('user_register', USER_REGISTER_VISITORS); + config('user.account_settings')->set('user_register', USER_REGISTER_VISITORS)->save(); } /** diff --git a/core/modules/system/system.admin.inc b/core/modules/system/system.admin.inc index dcc289a..9978f6c 100644 --- a/core/modules/system/system.admin.inc +++ b/core/modules/system/system.admin.inc @@ -394,7 +394,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.account_settings')->get('user_pictures')) { $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 7424015..7656677 100644 --- a/core/modules/system/system.api.php +++ b/core/modules/system/system.api.php @@ -2522,7 +2522,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.account_settings')->get('user_picture_path') . '/picture-') === 0) { if (!user_access('access user profiles')) { // Access to the file is denied. return -1; @@ -3903,7 +3903,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.account_settings')->get('anonymous') : $node->name; $replacements[$original] = $sanitize ? filter_xss($name) : $name; break; diff --git a/core/modules/system/tests/form.test b/core/modules/system/tests/form.test index dbb2ff5..2f44056 100644 --- a/core/modules/system/tests/form.test +++ b/core/modules/system/tests/form.test @@ -1774,7 +1774,7 @@ class FormsArbitraryRebuildTestCase extends DrupalWebTestCase { ), ); field_create_instance($instance); - variable_set('user_register', USER_REGISTER_VISITORS); + config('user.account_settings')->set('user_register', USER_REGISTER_VISITORS)->save(); } /** diff --git a/core/modules/user/config/user.account_settings.xml b/core/modules/user/config/user.account_settings.xml new file mode 100644 index 0000000..a17627b --- /dev/null +++ b/core/modules/user/config/user.account_settings.xml @@ -0,0 +1,18 @@ + + + Anonymous + + 2 + TRUE + 0 + 0 + pictures + + + 85x85 + 30 + + TRUE + FALSE + FALSE + diff --git a/core/modules/user/lib/Drupal/user/UserStorageController.php b/core/modules/user/lib/Drupal/user/UserStorageController.php index bd0d9b9..5e180f0 100644 --- a/core/modules/user/lib/Drupal/user/UserStorageController.php +++ b/core/modules/user/lib/Drupal/user/UserStorageController.php @@ -48,7 +48,7 @@ class UserStorageController extends EntityDatabaseStorageController { } // 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.account_settings')->get('user_pictures') == 1) { $pictures = file_load_multiple($picture_fids); foreach ($queried_users as $entity) { if (!empty($entity->picture) && isset($pictures[$entity->picture])) { @@ -119,7 +119,7 @@ class UserStorageController extends EntityDatabaseStorageController { // 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.account_settings')->get('user_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 c65883a..22b1bb6 100644 --- a/core/modules/user/user.admin.inc +++ b/core/modules/user/user.admin.inc @@ -258,6 +258,7 @@ function user_admin_account_validate($form, &$form_state) { * @see system_settings_form() */ function user_admin_settings() { + $config = config('user.account_settings'); // Settings for anonymous users. $form['anonymous_settings'] = array( '#type' => 'fieldset', @@ -266,7 +267,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, ); @@ -287,7 +288,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('user_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.'), ); @@ -300,7 +301,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('user_register'), '#options' => array( USER_REGISTER_ADMINISTRATORS_ONLY => t('Administrators only'), USER_REGISTER_VISITORS => t('Visitors'), @@ -310,7 +311,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('user_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'); @@ -340,17 +341,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('user_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'); + if ($config->get('user_pictures')) { + $picture_path = file_default_scheme() . '://' . $config->get('user_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); + $picture_support = $config->get('user_pictures'); $form['personalization']['user_pictures'] = array( '#type' => 'checkbox', '#title' => t('Enable user pictures.'), @@ -369,7 +370,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('user_picture_path'), '#size' => 30, '#maxlength' => 255, '#description' => t('Subdirectory in the file upload directory where pictures will be stored.'), @@ -377,7 +378,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('user_picture_default'), '#size' => 30, '#maxlength' => 255, '#description' => t('URL of picture to display for users with no custom picture selected. Leave blank for none.'), @@ -387,14 +388,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('user_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('user_picture_dimensions'), '#size' => 10, '#maxlength' => 10, '#field_suffix' => ' ' . t('pixels'), @@ -403,7 +404,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('user_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.'), @@ -411,7 +412,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('user_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."), ); @@ -430,7 +431,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('user_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', ); @@ -451,7 +452,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('user_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', ); @@ -472,7 +473,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('user_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', ); @@ -522,7 +523,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('user_mail_status_activated_notify'), ); $form['email_activated']['settings'] = array( '#type' => 'container', @@ -557,7 +558,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('user_mail_status_blocked_notify'), ); $form['email_blocked']['settings'] = array( '#type' => 'container', @@ -613,7 +614,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('user_mail_status_canceled_notify'), ); $form['email_canceled']['settings'] = array( '#type' => 'container', @@ -637,10 +638,41 @@ function user_admin_settings() { '#rows' => 3, ); + $form['#submit'][] = 'user_admin_settings_submit'; + + //@todo: remove dependence on system_settigns_from as this will fire the system_settings_form_submit action. return system_settings_form($form); } /** + * Save account settings settings. + */ +function user_admin_settings_submit($form, $form_state) { + $config = config('user.account_settings'); + $config + ->set('anonymous', $form_state['values']['anonymous']) + ->set('user_admin_role', $form_state['values']['user_admin_role']) + ->set('user_register', $form_state['values']['user_register']) + ->set('user_email_verification', $form_state['values']['user_email_verification']) + ->set('user_signatures', $form_state['values']['user_signatures']) + ->set('user_pictures', $form_state['values']['user_pictures']) + ->set('user_picture_path', $form_state['values']['user_picture_path']) + ->set('user_picture_default', $form_state['values']['user_picture_default']) + ->set('user_picture_dimensions', $form_state['values']['user_picture_dimensions']) + ->set('user_picture_file_size', $form_state['values']['user_picture_file_size']) + ->set('user_picture_guidelines', $form_state['values']['user_picture_guidelines']) + ->set('user_mail_status_activated_notify', $form_state['values']['user_mail_status_activated_notify']) + ->set('user_mail_status_blocked_notify', $form_state['values']['user_mail_status_blocked_notify']) + ->set('user_mail_status_canceled_notify', $form_state['values']['user_mail_status_canceled_notify']); + + if (isset($form_state['values']['user_picture_style'])) { + $config->set('user_picture_style', $form_state['values']['user_picture_style']); + } + + $config->save(); +} + +/** * Menu callback: administer permissions. * * @ingroup forms diff --git a/core/modules/user/user.install b/core/modules/user/user.install index ce11aaf..a857c84 100644 --- a/core/modules/user/user.install +++ b/core/modules/user/user.install @@ -399,5 +399,15 @@ function user_update_8001() { } /** + * Converts account settings variables to configuration system + * + * @see http://drupal.org/node/1496534 + */ +function user_update_8002() { + config_install_default_config('user'); + update_variables_to_config('user.account_settings'); +} + +/** * @} End of "addtogroup updates-7.x-to-8.x" */ diff --git a/core/modules/user/user.module b/core/modules/user/user.module index 836f101..e97c5e5 100644 --- a/core/modules/user/user.module +++ b/core/modules/user/user.module @@ -396,17 +396,18 @@ function user_validate_name($name) { * @see user_account_form() */ function user_validate_picture(&$form, &$form_state) { + $config = config('user.account_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('user_picture_dimensions')), + 'file_validate_size' => array($config->get('user_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('user_picture_path')))); } elseif ($file !== NULL) { $form_state['values']['picture_upload'] = $file; @@ -568,7 +569,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.account_settings')->get('anonymous'), '@user-settings-url' => url('admin/config/people/accounts'))), ), 'select account cancellation method' => array( 'title' => t('Select method for cancelling own account'), @@ -583,7 +584,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.account_settings')->get('user_picture_path') . '/picture-') === 0) { $info = image_get_info($uri); return array('Content-Type' => $info['mime_type']); } @@ -699,6 +700,7 @@ function user_user_view($account) { function user_account_form(&$form, &$form_state) { global $user, $language_interface; + $config = config('user.account_settings'); $account = $form['#user']; $register = ($form['#user']->uid > 0 ? FALSE : TRUE); @@ -775,7 +777,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('user_email_verification') || $admin) { $form['account']['pass'] = array( '#type' => 'password_confirm', '#size' => 25, @@ -788,7 +790,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('user_register') == USER_REGISTER_VISITORS : $account->status; } $form['account']['status'] = array( '#type' => 'radios', @@ -831,7 +833,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( @@ -847,7 +849,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('user_pictures')), ); $form['picture']['picture'] = array( '#type' => 'value', @@ -866,7 +868,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('user_picture_dimensions'))) . ' ' . filter_xss_admin($config->get('user_picture_guidelines')), ); $form['#validate'][] = 'user_validate_picture'; @@ -1046,7 +1048,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.account_settings')->get('user_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.')))); @@ -1209,7 +1211,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.account_settings')->get('anonymous'); drupal_alter('user_format_name', $name, $account); return $name; } @@ -1225,7 +1227,8 @@ function user_format_name($account) { */ function template_preprocess_user_picture(&$variables) { $variables['user_picture'] = ''; - if (variable_get('user_pictures', 0)) { + $config = config('user.account_settings'); + if ($config->get('user_pictures')) { $account = $variables['account']; if (!empty($account->picture)) { // @TODO: Ideally this function would only be passed file objects, but @@ -1242,14 +1245,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('user_picture_default')) { + $filepath = $config->get('user_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('user_picture_style')) { $variables['user_picture'] = theme('image_style', array('style_name' => $style, 'uri' => $filepath, 'alt' => $alt, 'title' => $alt)); } else { @@ -1406,8 +1409,11 @@ function user_is_logged_in() { return (bool) $GLOBALS['user']->uid; } +use Drupal\Core\Config\DrupalVerifiedStorageSQL; function user_register_access() { - return user_is_anonymous() && variable_get('user_register', USER_REGISTER_VISITORS_ADMINISTRATIVE_APPROVAL); + $t = new DrupalVerifiedStorageSQL('user.account_settings'); + $t->readFromFile(); + return user_is_anonymous() && config('user.account_settings')->get('user_register'); } /** @@ -3106,7 +3112,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.account_settings')->get('user_mail_status_canceled_notify'), '#description' => t('When enabled, the user will receive an e-mail notification after the account has been cancelled.'), ); @@ -3235,7 +3241,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.account_settings')->get('user_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 @@ -3418,9 +3424,10 @@ function user_image_style_delete($style) { * Implements hook_image_style_save(). */ function user_image_style_save($style) { + $config = config('user.account_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('user_picture_style')) { + $config->set('user_picture_style', $style['name'])->save(); } } @@ -3590,8 +3597,9 @@ function user_register_validate($form, &$form_state) { */ function user_register_submit($form, &$form_state) { $admin = $form_state['values']['administer_users']; - - if (!variable_get('user_email_verification', TRUE) || $admin) { + $config = config('user.account_settings'); + + if (!$config->get('user_email_verification') || $admin) { $pass = $form_state['values']['pass']; } else { @@ -3630,7 +3638,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); @@ -3667,7 +3675,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.account_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 438fedb..39bd7df 100644 --- a/core/modules/user/user.pages.inc +++ b/core/modules/user/user.pages.inc @@ -325,7 +325,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.account_settings')->get('user_mail_status_canceled_notify'); $form['user_cancel_notify'] = array( '#type' => 'checkbox', '#title' => t('Notify user when account is canceled.'), @@ -414,6 +414,7 @@ function user_cancel_confirm_form_submit($form, &$form_state) { * @see user_multiple_cancel_confirm() */ function user_cancel_methods() { + $anonymous_name = config('user.account_settings')->get('anonymous'); $methods = array( 'user_cancel_block' => array( 'title' => t('Disable the account and keep its content.'), @@ -424,8 +425,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.'), @@ -467,7 +468,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.account_settings')->get('user_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/core/modules/user/user.test b/core/modules/user/user.test index 0ce6870..fde96df 100644 --- a/core/modules/user/user.test +++ b/core/modules/user/user.test @@ -20,15 +20,17 @@ class UserRegistrationTestCase extends DrupalWebTestCase { function testRegistrationWithEmailVerification() { // Require e-mail verification. - variable_set('user_email_verification', TRUE); + $config = config('user.account_settings'); + $config->set('user_email_verification', TRUE)->save(); // Set registration to administrator only. - variable_set('user_register', USER_REGISTER_ADMINISTRATORS_ONLY); + $config->set('user_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('user_register', USER_REGISTER_VISITORS)->save(); + clearstatcache(); $edit = array(); $edit['name'] = $name = $this->randomName(); $edit['mail'] = $mail = $edit['name'] . '@example.com'; @@ -39,7 +41,7 @@ class UserRegistrationTestCase extends DrupalWebTestCase { $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('user.account_settings')->set('user_register', USER_REGISTER_VISITORS_ADMINISTRATIVE_APPROVAL)->save(); $edit = array(); $edit['name'] = $name = $this->randomName(); $edit['mail'] = $mail = $edit['name'] . '@example.com'; @@ -49,213 +51,6 @@ class UserRegistrationTestCase extends DrupalWebTestCase { $this->assertFalse($new_user->status, t('New account is blocked until approved by an administrator.')); } - function testRegistrationWithoutEmailVerification() { - // 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); - $edit = array(); - $edit['name'] = $name = $this->randomName(); - $edit['mail'] = $mail = $edit['name'] . '@example.com'; - - // Try entering a mismatching password. - $edit['pass[pass1]'] = '99999.0'; - $edit['pass[pass2]'] = '99999'; - $this->drupalPost('user/register', $edit, t('Create new account')); - $this->assertText(t('The specified passwords do not match.'), t('Typing mismatched passwords displays an error message.')); - - // Enter a correct password. - $edit['pass[pass1]'] = $new_pass = $this->randomName(); - $edit['pass[pass2]'] = $new_pass; - $this->drupalPost('user/register', $edit, t('Create new account')); - $accounts = user_load_multiple(array(), array('name' => $name, 'mail' => $mail)); - $new_user = reset($accounts); - $this->assertText(t('Registration successful. You are now logged in.'), t('Users are logged in after registering.')); - $this->drupalLogout(); - - // Allow registration by site visitors, but require administrator approval. - variable_set('user_register', USER_REGISTER_VISITORS_ADMINISTRATIVE_APPROVAL); - $edit = array(); - $edit['name'] = $name = $this->randomName(); - $edit['mail'] = $mail = $edit['name'] . '@example.com'; - $edit['pass[pass1]'] = $pass = $this->randomName(); - $edit['pass[pass2]'] = $pass; - $this->drupalPost('user/register', $edit, t('Create new account')); - $this->assertText(t('Thank you for applying for an account. Your account is currently pending approval by the site administrator.'), t('Users are notified of pending approval')); - - // Try to login before administrator approval. - $auth = array( - 'name' => $name, - 'pass' => $pass, - ); - $this->drupalPost('user/login', $auth, t('Log in')); - $this->assertText(t('The username @name has not been activated or is blocked.', array('@name' => $name)), t('User cannot login yet.')); - - // Activate the new account. - $accounts = user_load_multiple(array(), array('name' => $name, 'mail' => $mail)); - $new_user = reset($accounts); - $admin_user = $this->drupalCreateUser(array('administer users')); - $this->drupalLogin($admin_user); - $edit = array( - 'status' => 1, - ); - $this->drupalPost('user/' . $new_user->uid . '/edit', $edit, t('Save')); - $this->drupalLogout(); - - // Login after administrator approval. - $this->drupalPost('user/login', $auth, t('Log in')); - $this->assertText(t('Member for'), t('User can log in after administrator approval.')); - } - - 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); - - // Set up a user to check for duplicates. - $duplicate_user = $this->drupalCreateUser(); - - $edit = array(); - $edit['name'] = $this->randomName(); - $edit['mail'] = $duplicate_user->mail; - - // Attempt to create a new account using an existing e-mail address. - $this->drupalPost('user/register', $edit, t('Create new account')); - $this->assertText(t('The e-mail address @email is already registered.', array('@email' => $duplicate_user->mail)), t('Supplying an exact duplicate email address displays an error message')); - - // Attempt to bypass duplicate email registration validation by adding spaces. - $edit['mail'] = ' ' . $duplicate_user->mail . ' '; - - $this->drupalPost('user/register', $edit, t('Create new account')); - $this->assertText(t('The e-mail address @email is already registered.', array('@email' => $duplicate_user->mail)), t('Supplying a duplicate email address with added whitespace displays an error message')); - } - - 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); - - // Set the default timezone to Brussels. - variable_set('configurable_timezones', 1); - variable_set('date_default_timezone', 'Europe/Brussels'); - - // Check that the account information fieldset's options are not displayed - // is a fieldset if there is not more than one fieldset in the form. - $this->drupalGet('user/register'); - $this->assertNoRaw('
Account information', t('Account settings fieldset was hidden.')); - - $edit = array(); - $edit['name'] = $name = $this->randomName(); - $edit['mail'] = $mail = $edit['name'] . '@example.com'; - $edit['pass[pass1]'] = $new_pass = $this->randomName(); - $edit['pass[pass2]'] = $new_pass; - $this->drupalPost(NULL, $edit, t('Create new account')); - - // Check user fields. - $accounts = user_load_multiple(array(), array('name' => $name, 'mail' => $mail)); - $new_user = reset($accounts); - $this->assertEqual($new_user->name, $name, t('Username matches.')); - $this->assertEqual($new_user->mail, $mail, t('E-mail address matches.')); - $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->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.')); - $this->assertEqual($new_user->picture, 0, t('Correct picture field.')); - $this->assertEqual($new_user->init, $mail, t('Correct init field.')); - } - - /** - * Tests Field API fields on user registration forms. - */ - function testRegistrationWithUserFields() { - // Create a field, and an instance on 'user' entity type. - $field = array( - 'type' => 'test_field', - 'field_name' => 'test_user_field', - 'cardinality' => 1, - ); - field_create_field($field); - $instance = array( - 'field_name' => 'test_user_field', - 'entity_type' => 'user', - 'label' => 'Some user field', - 'bundle' => 'user', - 'required' => TRUE, - 'settings' => array('user_register_form' => FALSE), - ); - field_create_instance($instance); - - // Check that the field does not appear on the registration form. - $this->drupalGet('user/register'); - $this->assertNoText($instance['label'], t('The field does not appear on user registration form')); - - // Have the field appear on the registration form. - $instance['settings']['user_register_form'] = TRUE; - field_update_instance($instance); - $this->drupalGet('user/register'); - $this->assertText($instance['label'], t('The field appears on user registration form')); - - // Check that validation errors are correctly reported. - $edit = array(); - $edit['name'] = $name = $this->randomName(); - $edit['mail'] = $mail = $edit['name'] . '@example.com'; - // Missing input in required field. - $edit['test_user_field[und][0][value]'] = ''; - $this->drupalPost(NULL, $edit, t('Create new account')); - $this->assertRaw(t('@name field is required.', array('@name' => $instance['label'])), t('Field validation error was correctly reported.')); - // Invalid input. - $edit['test_user_field[und][0][value]'] = '-1'; - $this->drupalPost(NULL, $edit, t('Create new account')); - $this->assertRaw(t('%name does not accept the value -1.', array('%name' => $instance['label'])), t('Field validation error was correctly reported.')); - - // Submit with valid data. - $value = rand(1, 255); - $edit['test_user_field[und][0][value]'] = $value; - $this->drupalPost(NULL, $edit, t('Create new account')); - // Check user fields. - $accounts = user_load_multiple(array(), array('name' => $name, 'mail' => $mail)); - $new_user = reset($accounts); - $this->assertEqual($new_user->test_user_field[LANGUAGE_NOT_SPECIFIED][0]['value'], $value, t('The field value was correclty saved.')); - - // Check that the 'add more' button works. - $field['cardinality'] = FIELD_CARDINALITY_UNLIMITED; - field_update_field($field); - foreach (array('js', 'nojs') as $js) { - $this->drupalGet('user/register'); - // Add two inputs. - $value = rand(1, 255); - $edit = array(); - $edit['test_user_field[und][0][value]'] = $value; - if ($js == 'js') { - $this->drupalPostAJAX(NULL, $edit, 'test_user_field_add_more'); - $this->drupalPostAJAX(NULL, $edit, 'test_user_field_add_more'); - } - else { - $this->drupalPost(NULL, $edit, t('Add another item')); - $this->drupalPost(NULL, $edit, t('Add another item')); - } - // Submit with three values. - $edit['test_user_field[und][1][value]'] = $value + 1; - $edit['test_user_field[und][2][value]'] = $value + 2; - $edit['name'] = $name = $this->randomName(); - $edit['mail'] = $mail = $edit['name'] . '@example.com'; - $this->drupalPost(NULL, $edit, t('Create new account')); - // Check user fields. - $accounts = user_load_multiple(array(), array('name' => $name, 'mail' => $mail)); - $new_user = reset($accounts); - $this->assertEqual($new_user->test_user_field[LANGUAGE_NOT_SPECIFIED][0]['value'], $value, t('@js : The field value was correclty saved.', array('@js' => $js))); - $this->assertEqual($new_user->test_user_field[LANGUAGE_NOT_SPECIFIED][1]['value'], $value + 1, t('@js : The field value was correclty saved.', array('@js' => $js))); - $this->assertEqual($new_user->test_user_field[LANGUAGE_NOT_SPECIFIED][2]['value'], $value + 2, t('@js : The field value was correclty saved.', array('@js' => $js))); - } - } } class UserValidationTestCase extends DrupalWebTestCase { @@ -727,7 +522,8 @@ class UserCancelTestCase extends DrupalWebTestCase { $this->drupalGet('user/' . $account->uid . '/edit'); $this->drupalPost(NULL, NULL, t('Cancel account')); $this->assertText(t('Are you sure you want to cancel your account?'), t('Confirmation form to cancel account displayed.')); - $this->assertRaw(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')))), t('Informs that all content will be attributed to anonymous account.')); + $anonymous_name = config('user.account_settings')->get('anonymous'); + $this->assertRaw(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)), t('Informs that all content will be attributed to anonymous account.')); // Confirm account cancellation. $timestamp = time(); @@ -871,7 +667,7 @@ class UserCancelTestCase extends DrupalWebTestCase { function testMassUserCancelByAdmin() { variable_set('user_cancel_method', 'user_cancel_reassign'); // Enable account cancellation notification. - variable_set('user_mail_status_canceled_notify', TRUE); + config('user.account_settings')->set('user_mail_status_canceled_notify', TRUE)->save(); // Create administrative user. $admin_user = $this->drupalCreateUser(array('administer users')); @@ -934,12 +730,14 @@ class UserPictureTestCase extends DrupalWebTestCase { function setUp() { parent::setUp(array('image')); // Enable user pictures. - variable_set('user_pictures', 1); + $config = config('user.account_settings'); + $config->set('user_pictures', 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('user_picture_dimensions', '1024x1024'); + $config->set('user_picture_file_size', '800'); + $config->set('user_picture_style', 'thumbnail'); + $config->save(); $this->user = $this->drupalCreateUser(); @@ -948,7 +746,7 @@ class UserPictureTestCase extends DrupalWebTestCase { $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('user_picture_path'); $picture_path = $file_dir . $picture_dir; $pic_check = file_prepare_directory($picture_path, FILE_CREATE_DIRECTORY); @@ -979,10 +777,12 @@ class UserPictureTestCase extends DrupalWebTestCase { $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.account_settings'); + $config->set('user_picture_dimensions', $test_dim); + $config->set('user_picture_file_size', 0); + $config->save(); $pic_path = $this->saveUserPicture($image); // Check that the image was resized and is being displayed on the @@ -990,7 +790,7 @@ class UserPictureTestCase extends DrupalWebTestCase { $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. @@ -1015,11 +815,13 @@ class UserPictureTestCase extends DrupalWebTestCase { $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.account_settings'); + $config->set('user_picture_dimensions', $test_dim); + $config->set('user_picture_file_size', $test_size); + $config->save(); $pic_path = $this->saveUserPicture($image); @@ -1048,10 +850,12 @@ class UserPictureTestCase extends DrupalWebTestCase { $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.account_settings'); + $config->set('user_picture_dimensions', $test_dim); + $config->set('user_picture_file_size', 0); + $config->save(); $pic_path = $this->saveUserPicture($image); @@ -1080,11 +884,13 @@ class UserPictureTestCase extends DrupalWebTestCase { $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.account_settings'); + $config->set('user_picture_dimensions', $test_dim); + $config->set('user_picture_file_size', $test_size); + $config->save(); $pic_path = $this->saveUserPicture($image); @@ -1112,10 +918,12 @@ class UserPictureTestCase extends DrupalWebTestCase { $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.account_settings'); + $config->set('user_picture_dimensions', $test_dim); + $config->set('user_picture_file_size', 0); + $config->save(); $pic_path = $this->saveUserPicture($image); @@ -1128,7 +936,7 @@ class UserPictureTestCase extends DrupalWebTestCase { // 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.')); @@ -1144,7 +952,7 @@ class UserPictureTestCase extends DrupalWebTestCase { $images = $this->drupalGetTestFiles('image'); $image = $images[0]; $pic_path = file_create_url($image->uri); - variable_set('user_picture_default', $pic_path); + $config = config('user.account_settings')->set('user_picture_default', $pic_path)->save(); // Check if image is displayed in user's profile page. $this->drupalGet('user'); @@ -1164,10 +972,12 @@ class UserPictureTestCase extends DrupalWebTestCase { $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.account_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)); @@ -1783,7 +1593,9 @@ class UserEditTestCase extends DrupalWebTestCase { */ function testUserEdit() { // Test user edit functionality with user pictures disabled. - variable_set('user_pictures', 0); + $config = config('user.account_settings'); + $config->set('user_pictures', 0)->save(); + $user1 = $this->drupalCreateUser(array('change own username')); $user2 = $this->drupalCreateUser(array()); $this->drupalLogin($user1); @@ -1794,7 +1606,7 @@ class UserEditTestCase extends DrupalWebTestCase { $this->assertRaw(t('The name %name is already taken.', array('%name' => $edit['name']))); // Repeat the test with user pictures enabled, which modifies the form. - variable_set('user_pictures', 1); + $config->set('user_pictures', 1)->save(); $this->drupalPost("user/$user1->uid/edit", $edit, t('Save')); $this->assertRaw(t('The name %name is already taken.', array('%name' => $edit['name']))); @@ -1873,7 +1685,7 @@ class UserSignatureTestCase extends DrupalWebTestCase { parent::setUp('comment'); // Enable user signatures. - variable_set('user_signatures', 1); + config('user.account_settings')->set('user_signatures', 1)->save(); // Create Basic page node type. $this->drupalCreateContentType(array('type' => 'page', 'name' => 'Basic page')); @@ -1977,7 +1789,7 @@ class UserEditedOwnAccountTestCase extends DrupalWebTestCase { function testUserEditedOwnAccount() { // Change account setting 'Who can register accounts?' to Administrators // only. - variable_set('user_register', USER_REGISTER_ADMINISTRATORS_ONLY); + config('user.account_settings')->set('user_register', USER_REGISTER_ADMINISTRATORS_ONLY)->save(); // Create a new user account and log in. $account = $this->drupalCreateUser(array('change own username')); @@ -2404,8 +2216,8 @@ class UserEntityCallbacksTestCase extends DrupalWebTestCase { // Setup a random anonymous name to be sure the name is used. $name = $this->randomName(); - variable_set('anonymous', $name); - $this->assertEqual(entity_label('user', $this->anonymous), $name, t('The variable anonymous should be used for name of uid 0')); + config('user.account_settings')->set('anonymous', $name)->save(); + $this->assertEqual(entity_label('user', $this->anonymous), $name, t('The anonymous config should be used for name of uid 0')); } /** @@ -2497,7 +2309,7 @@ class UserLanguageCreationTest extends DrupalWebTestCase { function setUp() { parent::setUp(array('user', 'language')); - variable_set('user_register', USER_REGISTER_VISITORS); + config('user.account_settings')->set('user_register', USER_REGISTER_VISITORS)->save(); } /** diff --git a/profiles/minimal/minimal.install b/profiles/minimal/minimal.install index e02ffcc..69a91d5 100644 --- a/profiles/minimal/minimal.install +++ b/profiles/minimal/minimal.install @@ -82,7 +82,7 @@ function minimal_install() { variable_set('site_frontpage', 'node'); // Allow visitor account creation, but with administrative approval. - variable_set('user_register', USER_REGISTER_VISITORS_ADMINISTRATIVE_APPROVAL); + config('user.account_settings')->set('user_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 eef8d0c..f75dde0 100644 --- a/profiles/standard/standard.install +++ b/profiles/standard/standard.install @@ -280,7 +280,7 @@ 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); + config('user.account_settings')->set('user_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..0f1a710 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.account_settings')->set('user_register', USER_REGISTER_VISITORS_ADMINISTRATIVE_APPROVAL)->save(); // Enable default permissions for system roles. // @todo Remove dependency on Node module.