summaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
Diffstat (limited to 'modules')
-rw-r--r--modules/block/block.module11
-rw-r--r--modules/contact/contact.module10
-rw-r--r--modules/locale/locale.module41
-rw-r--r--modules/openid/openid.module4
-rw-r--r--modules/profile/profile.module38
-rw-r--r--modules/system/system.module26
-rw-r--r--modules/user/user.api.php63
-rw-r--r--modules/user/user.module80
-rw-r--r--modules/user/user.pages.inc25
9 files changed, 102 insertions, 196 deletions
diff --git a/modules/block/block.module b/modules/block/block.module
index 7da39f71e..887366387 100644
--- a/modules/block/block.module
+++ b/modules/block/block.module
@@ -374,10 +374,11 @@ function block_custom_block_save($edit, $delta) {
}
/**
- * Implement hook_user_form().
+ * Implement hook_form_FORM_ID_alter().
*/
-function block_user_form(&$edit, $account, $category) {
- if ($category == 'account') {
+function block_form_user_profile_form_alter(&$form, &$form_state) {
+ if ($form['#user_category'] == 'account') {
+ $account = $form['#user'];
$rids = array_keys($account->roles);
$result = db_query("SELECT DISTINCT b.* FROM {block} b LEFT JOIN {block_role} r ON b.module = r.module AND b.delta = r.delta WHERE b.status = 1 AND b.custom <> 0 AND (r.rid IN (:rids) OR r.rid IS NULL) ORDER BY b.weight, b.module", array(':rids' => $rids));
$form['block'] = array(
@@ -400,8 +401,8 @@ function block_user_form(&$edit, $account, $category) {
}
}
- if (!empty($return)) {
- return $form;
+ if (!isset($return)) {
+ $form['block']['#access'] = FALSE;
}
}
}
diff --git a/modules/contact/contact.module b/modules/contact/contact.module
index 80388d049..2cdb73077 100644
--- a/modules/contact/contact.module
+++ b/modules/contact/contact.module
@@ -145,10 +145,11 @@ function contact_load($cid) {
}
/**
- * Implement hook_user_form().
+ * Implement hook_form_FORM_ID_alter().
*/
-function contact_user_form(&$edit, $account, $category) {
- if ($category == 'account') {
+function contact_form_user_profile_form_alter(&$form, &$form_state) {
+ if ($form['#user_category'] == 'account') {
+ $account = $form['#user'];
$form['contact'] = array('#type' => 'fieldset',
'#title' => t('Contact settings'),
'#weight' => 5,
@@ -156,10 +157,9 @@ function contact_user_form(&$edit, $account, $category) {
);
$form['contact']['contact'] = array('#type' => 'checkbox',
'#title' => t('Personal contact form'),
- '#default_value' => !empty($edit['contact']) ? $edit['contact'] : FALSE,
+ '#default_value' => !empty($account->contact) ? $account->contact : FALSE,
'#description' => t('Allow other users to contact you via a <a href="@url">personal contact form</a> which keeps your e-mail address hidden. Note that some privileged users such as site administrators are still able to contact you even if you choose to disable this feature.', array('@url' => url("user/$account->uid/contact"))),
);
- return $form;
}
}
diff --git a/modules/locale/locale.module b/modules/locale/locale.module
index 524e117e0..c2a58917c 100644
--- a/modules/locale/locale.module
+++ b/modules/locale/locale.module
@@ -224,34 +224,18 @@ function locale_locale($op = 'groups') {
}
/**
- * Implement hook_user_register().
- */
-function locale_user_register(&$edit, $account, $category) {
- // If we have more then one language and either creating a user on the
- // admin interface or edit the user, show the language selector.
- if (variable_get('language_count', 1) > 1 && user_access('administer users')) {
- return locale_language_selector_form($account);
- }
-}
-
-/**
- * Implement hook_user_form().
+ * Form builder callback to display language selection widget.
+ *
+ * @ingroup forms
+ * @see locale_form_alter()
*/
-function locale_user_form(&$edit, $account, $category) {
- // If we have more then one language and either creating a user on the
- // admin interface or edit the user, show the language selector.
- if (variable_get('language_count', 1) > 1 && $category == 'account') {
- return locale_language_selector_form($account);
- }
-}
-
-function locale_language_selector_form($user) {
+function locale_language_selector_form(&$form, &$form_state, $user) {
global $language;
$languages = language_list('enabled');
$languages = $languages[1];
// If the user is being created, we set the user language to the page language.
- $user_preferred_language = $user ? user_preferred_language($user) : $language;
+ $user_preferred_language = $user->uid ? user_preferred_language($user) : $language;
$names = array();
foreach ($languages as $langcode => $item) {
@@ -273,7 +257,6 @@ function locale_language_selector_form($user) {
'#options' => $names,
'#description' => ($mode == LANGUAGE_NEGOTIATION_PATH) ? t("This account's default language for e-mails, and preferred language for site presentation.") : t("This account's default language for e-mails."),
);
- return $form;
}
/**
@@ -306,9 +289,19 @@ function locale_form_node_type_form_alter(&$form, &$form_state) {
}
/**
- * Implement hook_form_alter(). Adds language fields to forms.
+ * Implement hook_form_alter().
+ *
+ * Adds language fields to forms.
*/
function locale_form_alter(&$form, &$form_state, $form_id) {
+ // Only alter user forms if there is more than one language.
+ if (variable_get('language_count', 1) > 1) {
+ // Display language selector when either creating a user on the admin
+ // interface or editing a user account.
+ if (($form_id == 'user_register' && user_access('administer users')) || ($form_id == 'user_profile_form' && $form['#user_category'] == 'account')) {
+ locale_language_selector_form($form, $form_state, $form['#user']);
+ }
+ }
if (isset($form['#id']) && $form['#id'] == 'node-form') {
if (isset($form['#node']->type) && variable_get('language_content_type_' . $form['#node']->type, 0)) {
$form['language'] = array(
diff --git a/modules/openid/openid.module b/modules/openid/openid.module
index 61edf053a..40520edd4 100644
--- a/modules/openid/openid.module
+++ b/modules/openid/openid.module
@@ -125,7 +125,9 @@ function _openid_user_login_form_alter(&$form, &$form_state) {
}
/**
- * Implement hook_form_alter(). Adds OpenID login to the login forms.
+ * Implement hook_form_alter().
+ *
+ * Adds OpenID login to the login forms.
*/
function openid_form_user_register_alter(&$form, &$form_state) {
if (isset($_SESSION['openid']['values'])) {
diff --git a/modules/profile/profile.module b/modules/profile/profile.module
index 7b9bddaa2..da9b34f0b 100644
--- a/modules/profile/profile.module
+++ b/modules/profile/profile.module
@@ -210,13 +210,6 @@ function profile_block_view($delta = '') {
}
/**
- * Implement hook_user_register().
- */
-function profile_user_register(&$edit, $account, $category) {
- return profile_form_profile($edit, $account, $category, TRUE);
-}
-
-/**
* Implement hook_user_update().
*/
function profile_user_update(&$edit, $account, $category) {
@@ -231,13 +224,6 @@ function profile_user_insert(&$edit, $account, $category) {
}
/**
- * Implement hook_user_form().
- */
-function profile_user_form(&$edit, $account, $category) {
- return profile_form_profile($edit, $account, $category);
-}
-
-/**
* Implement hook_user_cancel().
*/
function profile_user_cancel(&$edit, $account, $method) {
@@ -378,7 +364,17 @@ function _profile_form_explanation($field) {
return $output;
}
-function profile_form_profile($edit, $account, $category, $register = FALSE) {
+/**
+ * Implement hook_form_alter().
+ */
+function profile_form_alter(&$form, &$form_state, $form_id) {
+ if ($form_id == 'user_register' || $form_id == 'user_profile_form') {
+ $register = ($form['#user']->uid > 0 ? FALSE : TRUE);
+ $form = array_merge($form, profile_form_profile($form['#user'], $form['#user_category'], $register));
+ }
+}
+
+function profile_form_profile($account, $category, $register = FALSE) {
$result = _profile_get_fields($category, $register);
$weight = 1;
$fields = array();
@@ -392,7 +388,7 @@ function profile_form_profile($edit, $account, $category, $register = FALSE) {
case 'url':
$fields[$category][$field->name] = array('#type' => 'textfield',
'#title' => check_plain($field->title),
- '#default_value' => isset($edit[$field->name]) ? $edit[$field->name] : '',
+ '#default_value' => isset($account->{$field->name}) ? $account->{$field->name} : '',
'#maxlength' => 255,
'#description' => _profile_form_explanation($field),
'#required' => $field->required,
@@ -404,7 +400,7 @@ function profile_form_profile($edit, $account, $category, $register = FALSE) {
case 'textarea':
$fields[$category][$field->name] = array('#type' => 'textarea',
'#title' => check_plain($field->title),
- '#default_value' => isset($edit[$field->name]) ? $edit[$field->name] : '',
+ '#default_value' => isset($account->{$field->name}) ? $account->{$field->name} : '',
'#description' => _profile_form_explanation($field),
'#required' => $field->required,
);
@@ -412,7 +408,7 @@ function profile_form_profile($edit, $account, $category, $register = FALSE) {
case 'list':
$fields[$category][$field->name] = array('#type' => 'textarea',
'#title' => check_plain($field->title),
- '#default_value' => isset($edit[$field->name]) ? $edit[$field->name] : '',
+ '#default_value' => isset($account->{$field->name}) ? $account->{$field->name} : '',
'#description' => _profile_form_explanation($field),
'#required' => $field->required,
);
@@ -420,7 +416,7 @@ function profile_form_profile($edit, $account, $category, $register = FALSE) {
case 'checkbox':
$fields[$category][$field->name] = array('#type' => 'checkbox',
'#title' => check_plain($field->title),
- '#default_value' => isset($edit[$field->name]) ? $edit[$field->name] : '',
+ '#default_value' => isset($account->{$field->name}) ? $account->{$field->name} : '',
'#description' => _profile_form_explanation($field),
'#required' => $field->required,
);
@@ -435,7 +431,7 @@ function profile_form_profile($edit, $account, $category, $register = FALSE) {
}
$fields[$category][$field->name] = array('#type' => 'select',
'#title' => check_plain($field->title),
- '#default_value' => isset($edit[$field->name]) ? $edit[$field->name] : '',
+ '#default_value' => isset($account->{$field->name}) ? $account->{$field->name} : '',
'#options' => $options,
'#description' => _profile_form_explanation($field),
'#required' => $field->required,
@@ -444,7 +440,7 @@ function profile_form_profile($edit, $account, $category, $register = FALSE) {
case 'date':
$fields[$category][$field->name] = array('#type' => 'date',
'#title' => check_plain($field->title),
- '#default_value' => isset($edit[$field->name]) ? $edit[$field->name] : '',
+ '#default_value' => isset($account->{$field->name}) ? $account->{$field->name} : '',
'#description' => _profile_form_explanation($field),
'#required' => $field->required,
);
diff --git a/modules/system/system.module b/modules/system/system.module
index 7ed7a6818..8a9fad8c5 100644
--- a/modules/system/system.module
+++ b/modules/system/system.module
@@ -1475,25 +1475,24 @@ function system_preprocess_page(&$variables) {
}
/**
- * Implement hook_user_form().
+ * Implement hook_form_FORM_ID_alter().
*/
-function system_user_form(&$edit, $account, $category) {
- if ($category == 'account') {
+function system_form_user_profile_form_alter(&$form, &$form_state) {
+ if ($form['#user_category'] == 'account') {
if (variable_get('configurable_timezones', 1)) {
- system_user_timezone($edit, $form);
+ system_user_timezone($form, $form_state);
}
return $form;
}
}
/**
- * Implement hook_user_register().
+ * Implement hook_form_FORM_ID_alter().
*/
-function system_user_register(&$edit, $account, $category) {
+function system_form_user_register_alter(&$form, &$form_state) {
if (variable_get('configurable_timezones', 1)) {
- $form = array();
if (variable_get('user_default_timezone', DRUPAL_USER_TIMEZONE_DEFAULT) == DRUPAL_USER_TIMEZONE_SELECT) {
- system_user_timezone($edit, $form);
+ system_user_timezone($form, $form_state);
}
else {
$form['account']['timezone'] = array(
@@ -1518,8 +1517,11 @@ function system_user_login(&$edit, $account) {
/**
* Add the time zone field to the user edit and register forms.
*/
-function system_user_timezone(&$edit, &$form) {
+function system_user_timezone(&$form, &$form_state) {
global $user;
+
+ $account = $form['#user'];
+
$form['timezone'] = array(
'#type' => 'fieldset',
'#title' => t('Locale settings'),
@@ -1529,11 +1531,11 @@ function system_user_timezone(&$edit, &$form) {
$form['timezone']['timezone'] = array(
'#type' => 'select',
'#title' => t('Time zone'),
- '#default_value' => $edit['timezone'] ? $edit['timezone'] : ($edit['uid'] == $user->uid ? variable_get('date_default_timezone', '') : ''),
- '#options' => system_time_zones(($edit['uid'] != $user->uid)),
+ '#default_value' => isset($account->timezone) ? $account->timezone : ($account->uid == $user->uid ? variable_get('date_default_timezone', '') : ''),
+ '#options' => system_time_zones($account->uid != $user->uid),
'#description' => t('Select the desired local time and time zone. Dates and times throughout this site will be displayed using this time zone.'),
);
- if (!$edit['timezone'] && $edit['uid'] == $user->uid) {
+ if (!isset($account->timezone) && $account->uid == $user->uid) {
$form['timezone']['#description'] = t('Your time zone setting will be automatically detected if possible. Please confirm the selection and click save.');
$form['timezone']['timezone']['#attributes'] = array('class' => array('timezone-detect'));
drupal_add_js('misc/timezone.js');
diff --git a/modules/user/user.api.php b/modules/user/user.api.php
index 88d4c0fa1..82895e182 100644
--- a/modules/user/user.api.php
+++ b/modules/user/user.api.php
@@ -218,38 +218,6 @@ function hook_user_categories() {
}
/**
- * The user account edit form is about to be displayed.
- *
- * The module should present the form elements it wishes to inject
- * into the form.
- *
- * @param &$edit
- * The array of form values submitted by the user.
- * @param $account
- * The user object on which the operation is being performed.
- * @param $category
- * The active category of user information being edited.
- * @return
- * A $form array containing the form elements to display.
- */
-function hook_user_form(&$edit, $account, $category = NULL) {
- if ($category == 'account') {
- $form['comment_settings'] = array(
- '#type' => 'fieldset',
- '#title' => t('Comment settings'),
- '#collapsible' => TRUE,
- '#weight' => 4);
- $form['comment_settings']['signature'] = array(
- '#type' => 'textarea',
- '#title' => t('Signature'),
- '#default_value' => $edit['signature'],
- '#description' => t('Your signature will be publicly displayed at the end of your comments.'));
- return $form;
- }
-}
-
-
-/**
* The user account is being added.
*
* The module should save its custom additions to the user object into the
@@ -303,37 +271,6 @@ function hook_user_logout($account) {
}
/**
- * The user account registration form is about to be displayed.
- *
- * The module should present the form elements it wishes to inject into the
- * form.
- *
- * @param &$edit
- * The array of form values submitted by the user.
- * @param $account
- * The user object on which the operation is being performed.
- * @param $category
- * The active category of user information being edited.
- * @return
- * A $form array containing the form elements to display.
- */
-function hook_user_register(&$edit, $account, $category) {
- if (variable_get('configurable_timezones', 1)) {
- $form = array();
- if (variable_get('user_default_timezone', DRUPAL_USER_TIMEZONE_DEFAULT) == DRUPAL_USER_TIMEZONE_SELECT) {
- system_user_timezone($edit, $form);
- }
- else {
- $form['timezone'] = array(
- '#type' => 'hidden',
- '#value' => variable_get('user_default_timezone', DRUPAL_USER_TIMEZONE_DEFAULT) ? '' : variable_get('date_default_timezone', ''),
- );
- }
- return $form;
- }
-}
-
-/**
* Modify the account before it gets saved.
*
* @param &$edit
diff --git a/modules/user/user.module b/modules/user/user.module
index a57965202..05605499a 100644
--- a/modules/user/user.module
+++ b/modules/user/user.module
@@ -860,17 +860,6 @@ function user_user_view($account) {
}
/**
- * Implement hook_user_form.
- */
-function user_user_form(&$edit, $account, $category) {
- if ($category == 'account') {
- $form = array();
- $form_state = array();
- return user_edit_form($form, $form_state, (isset($account->uid) ? $account->uid : FALSE), $edit);
- }
-}
-
-/**
* Implement hook_user_validate().
*/
function user_user_validate(&$edit, $account, $category) {
@@ -1810,7 +1799,12 @@ function user_pass_rehash($password, $timestamp, $login) {
return md5($timestamp . $password . $login);
}
-function user_edit_form($form, &$form_state, $uid, $edit, $register = FALSE) {
+function user_edit_form(&$form, &$form_state) {
+ global $user;
+
+ $account = $form['#user'];
+ $register = ($form['#user']->uid > 0 ? FALSE : TRUE);
+
_user_password_dynamic_validation();
$admin = user_access('administer users');
@@ -1819,25 +1813,30 @@ function user_edit_form($form, &$form_state, $uid, $edit, $register = FALSE) {
'#title' => t('Account information'),
'#weight' => -10,
);
- // Only show name field when: registration page; or user is editing own account and can change username; or an admin user.
- if ($register || ($GLOBALS['user']->uid == $uid && user_access('change own username')) || $admin) {
+ // Only show name field when: registration page; or user is editing own
+ // account and can change username; or an admin user.
+ if ($register || ($user->uid == $account->uid && user_access('change own username')) || $admin) {
$form['account']['name'] = array('#type' => 'textfield',
'#title' => t('Username'),
- '#default_value' => $edit['name'],
'#maxlength' => USERNAME_MAX_LENGTH,
'#description' => t('Spaces are allowed; punctuation is not allowed except for periods, hyphens, apostrophes, and underscores.'),
'#required' => TRUE,
'#attributes' => array('class' => array('username')),
);
+ if (!$register) {
+ $form['account']['name']['#default_value'] = $account->name;
+ }
}
$form['account']['mail'] = array('#type' => 'textfield',
'#title' => t('E-mail address'),
- '#default_value' => $edit['mail'],
'#maxlength' => EMAIL_MAX_LENGTH,
'#description' => t('A valid e-mail address. All e-mails from the system will be sent to this address. The e-mail address is not made public and will only be used if you wish to receive a new password or wish to receive certain news or notifications by e-mail.'),
'#required' => TRUE,
);
if (!$register) {
+ $form['account']['mail']['#default_value'] = $account->mail;
+ }
+ if (!$register) {
$form['account']['pass'] = array('#type' => 'password_confirm',
'#description' => t('To change the current user password, enter the new password in both fields.'),
'#size' => 25,
@@ -1855,7 +1854,7 @@ function user_edit_form($form, &$form_state, $uid, $edit, $register = FALSE) {
$form['account']['status'] = array(
'#type' => 'radios',
'#title' => t('Status'),
- '#default_value' => isset($edit['status']) ? $edit['status'] : 1,
+ '#default_value' => isset($account->status) ? $account->status : 1,
'#options' => array(t('Blocked'), t('Active'))
);
}
@@ -1876,11 +1875,10 @@ function user_edit_form($form, &$form_state, $uid, $edit, $register = FALSE) {
unset($roles[DRUPAL_AUTHENTICATED_RID]);
if ($roles) {
- $default = empty($edit['roles']) ? array() : array_keys($edit['roles']);
$form['account']['roles'] = array(
'#type' => 'checkboxes',
'#title' => t('Roles'),
- '#default_value' => $default,
+ '#default_value' => isset($account->roles) ? array_keys($account->roles) : array(),
'#options' => $roles,
DRUPAL_AUTHENTICATED_RID => $checkbox_authenticated,
);
@@ -1897,13 +1895,13 @@ function user_edit_form($form, &$form_state, $uid, $edit, $register = FALSE) {
$form['signature_settings']['signature'] = array(
'#type' => 'textarea',
'#title' => t('Signature'),
- '#default_value' => $edit['signature'],
+ '#default_value' => isset($account->signature) ? $account->signature : '',
'#description' => t('Your signature will be publicly displayed at the end of your comments.'),
);
}
// Picture/avatar:
- if (variable_get('user_pictures', 0) && !$register) {
+ if (variable_get('user_pictures', 0) && !$register && !$admin) {
$form['picture'] = array(
'#type' => 'fieldset',
'#title' => t('Picture'),
@@ -1911,15 +1909,15 @@ function user_edit_form($form, &$form_state, $uid, $edit, $register = FALSE) {
);
$form['picture']['picture'] = array(
'#type' => 'value',
- '#value' => $edit['picture'],
+ '#value' => isset($account->picture) ? $account->picture : NULL,
);
$form['picture']['picture_current'] = array(
- '#markup' => theme('user_picture', (object)$edit),
+ '#markup' => theme('user_picture', $account),
);
$form['picture']['picture_delete'] = array(
'#type' => 'checkbox',
'#title' => t('Delete picture'),
- '#access' => !empty($edit['picture']->fid),
+ '#access' => !empty($account->picture->fid),
'#description' => t('Check this box to delete your current picture.'),
);
$form['picture']['picture_upload'] = array(
@@ -1931,9 +1929,6 @@ function user_edit_form($form, &$form_state, $uid, $edit, $register = FALSE) {
$form['#validate'][] = 'user_profile_form_validate';
$form['#validate'][] = 'user_validate_picture';
}
- $form['#uid'] = $uid;
-
- return $form;
}
/**
@@ -3073,8 +3068,11 @@ function user_register($form, &$form_state) {
drupal_goto('user/' . $user->uid);
}
- // Start with the default user edit fields.
- $form = user_edit_form($form, $form_state, NULL, NULL, TRUE);
+ $form['#user'] = drupal_anonymous_user();
+ $form['#user_category'] = 'register';
+
+ // Start with the default user account fields.
+ user_edit_form($form, $form_state);
if ($admin) {
$form['account']['notify'] = array(
'#type' => 'checkbox',
@@ -3085,13 +3083,6 @@ function user_register($form, &$form_state) {
$form_state['redirect'] = $_GET['q'];
}
- // Create a dummy variable for pass-by-reference parameters.
- $null = NULL;
- $extra = _user_forms($null, NULL, NULL, 'register');
- if ($extra) {
- $form = array_merge_recursive($form, $extra);
- }
-
// If the "account" fieldset is the only element at the top level, its
// borders are hidden for aesthetic reasons. We do not remove the fieldset but
// preserve the form structure so that modules implementing
@@ -3111,23 +3102,6 @@ function user_register_validate($form, &$form_state) {
}
/**
- * Retrieve a list of all form elements for the specified category.
- */
-function _user_forms(&$edit, $account, $category, $hook = 'form') {
- $groups = array();
- foreach (module_implements('user_' . $hook) as $module) {
- $function = $module . '_user_' . $hook;
- if ($data = $function($edit, $account, $category)) {
- $groups = array_merge_recursive($data, $groups);
- }
- }
- uasort($groups, '_user_sort');
-
- return empty($groups) ? FALSE : $groups;
-}
-
-
-/**
* Implementation of hook_modules_installed().
*/
function user_modules_installed($modules) {
diff --git a/modules/user/user.pages.inc b/modules/user/user.pages.inc
index cfe701530..25f7401bd 100644
--- a/modules/user/user.pages.inc
+++ b/modules/user/user.pages.inc
@@ -225,19 +225,21 @@ function user_edit($account, $category = 'account') {
* @see user_profile_form_submit()
* @see user_cancel_confirm_form_submit()
*/
-function user_profile_form($form, $form_state, $account, $category = 'account') {
+function user_profile_form($form, &$form_state, $account, $category = 'account') {
global $user;
- $edit = (empty($form_state['values'])) ? (array)$account : $form_state['values'];
+ $form['#user'] = $account;
+ $form['#user_category'] = $category;
- $form = _user_forms($edit, $account, $category);
+ if ($category == 'account') {
+ user_edit_form($form, $form_state);
+ }
// Attach field widgets.
- field_attach_form('user', (object) $edit, $form, $form_state);
+ field_attach_form('user', $account, $form, $form_state);
- $form['_category'] = array('#type' => 'value', '#value' => $category);
- $form['_account'] = array('#type' => 'value', '#value' => $account);
$form['submit'] = array('#type' => 'submit', '#value' => t('Save'), '#weight' => 30);
+
if (($account->uid == $user->uid && user_access('cancel account')) || user_access('administer users')) {
$form['cancel'] = array(
'#type' => 'submit',
@@ -257,7 +259,7 @@ function user_profile_form_validate($form, &$form_state) {
$edit = (object)$form_state['values'];
field_attach_form_validate('user', $edit, $form, $form_state);
$edit = (array)$edit;
- user_module_invoke('validate', $edit, $form_state['values']['_account'], $form_state['values']['_category']);
+ user_module_invoke('validate', $edit, $form['#user'], $form['#user_category']);
// Validate input to ensure that non-privileged users can't alter protected data.
if ((!user_access('administer users') && array_intersect(array_keys($edit), array('uid', 'init', 'session'))) || (!user_access('administer permissions') && isset($form_state['values']['roles']))) {
watchdog('security', 'Detected malicious attempt to alter protected user fields.', array(), WATCHDOG_WARNING);
@@ -270,9 +272,9 @@ function user_profile_form_validate($form, &$form_state) {
* Submit function for the user account and profile editing form.
*/
function user_profile_form_submit($form, &$form_state) {
- $account = $form_state['values']['_account'];
- $category = $form_state['values']['_category'];
- unset($form_state['values']['_account'], $form_state['values']['op'], $form_state['values']['submit'], $form_state['values']['cancel'], $form_state['values']['form_token'], $form_state['values']['form_id'], $form_state['values']['_category'], $form_state['values']['form_build_id']);
+ $account = $form['#user'];
+ $category = $form['#user_category'];
+ unset($form_state['values']['op'], $form_state['values']['submit'], $form_state['values']['cancel'], $form_state['values']['form_token'], $form_state['values']['form_id'], $form_state['values']['form_build_id']);
$edit = (object)$form_state['values'];
field_attach_submit('user', $edit, $form, $form_state);
@@ -284,7 +286,6 @@ function user_profile_form_submit($form, &$form_state) {
cache_clear_all();
drupal_set_message(t('The changes have been saved.'));
- return;
}
/**
@@ -297,7 +298,7 @@ function user_edit_cancel_submit($form, &$form_state) {
unset($_GET['destination']);
}
// Note: We redirect from user/uid/edit to user/uid/cancel to make the tabs disappear.
- $form_state['redirect'] = array("user/" . $form_state['values']['_account']->uid . "/cancel", $destination);
+ $form_state['redirect'] = array("user/" . $form['#user']->uid . "/cancel", $destination);
}
/**