Index: includes/form.inc =================================================================== RCS file: /cvs/drupal/drupal/includes/form.inc,v retrieving revision 1.378 diff -u -p -r1.378 form.inc --- includes/form.inc 3 Oct 2009 20:17:46 -0000 1.378 +++ includes/form.inc 4 Oct 2009 07:33:00 -0000 @@ -1299,6 +1299,27 @@ function _form_builder_ie_cleanup($form, } /** + * Helper function to remove common Form API elements from submitted form values. + * + * This function may be used when all submitted values of a form need to be + * processed for storage, so internal Form API values and button elements should + * not be contained. + * + * @param &$form_state + * A keyed array containing the current state of the form, including + * submitted form values. + * + * @return + * None. $form_state['values'] is altered by reference. + */ +function form_state_values_clean(&$form_state) { + // Remove internal Form API values. + unset($form_state['values']['form_id'], $form_state['values']['form_token'], $form_state['values']['form_build_id']); + // Remove common submit handler values. + unset($form_state['values']['op'], $form_state['values']['submit'], $form_state['values']['preview'], $form_state['values']['reset'], $form_state['values']['cancel']); +} + +/** * Helper function to determine the value for an image button form element. * * @param $form Index: modules/system/system.module =================================================================== RCS file: /cvs/drupal/drupal/modules/system/system.module,v retrieving revision 1.800 diff -u -p -r1.800 system.module --- modules/system/system.module 30 Sep 2009 18:36:02 -0000 1.800 +++ modules/system/system.module 4 Oct 2009 07:33:08 -0000 @@ -2225,7 +2225,7 @@ function system_settings_form($form, $au */ function system_settings_form_submit($form, &$form_state) { // Exclude unnecessary elements. - unset($form_state['values']['submit'], $form_state['values']['reset'], $form_state['values']['form_id'], $form_state['values']['op'], $form_state['values']['form_token'], $form_state['values']['form_build_id']); + form_state_values_clean($form_state); foreach ($form_state['values'] as $key => $value) { if (is_array($value) && isset($form_state['values']['array_filter'])) { Index: modules/user/user.module =================================================================== RCS file: /cvs/drupal/drupal/modules/user/user.module,v retrieving revision 1.1055 diff -u -p -r1.1055 user.module --- modules/user/user.module 2 Oct 2009 14:49:10 -0000 1.1055 +++ modules/user/user.module 4 Oct 2009 07:33:11 -0000 @@ -3066,7 +3066,8 @@ function user_register_submit($form, &$f } // The unset below is needed to prevent these form values from being saved as // user data. - unset($form_state['values']['form_token'], $form_state['values']['submit'], $form_state['values']['op'], $form_state['values']['notify'], $form_state['values']['form_id'], $form_state['values']['affiliates'], $form_state['values']['destination'], $form_state['values']['form_build_id']); + form_state_values_clean($form_state); + unset($form_state['values']['notify']); $merge_data = array('pass' => $pass, 'init' => $mail, 'roles' => $roles); if (!$admin) { Index: modules/user/user.pages.inc =================================================================== RCS file: /cvs/drupal/drupal/modules/user/user.pages.inc,v retrieving revision 1.57 diff -u -p -r1.57 user.pages.inc --- modules/user/user.pages.inc 29 Sep 2009 15:31:17 -0000 1.57 +++ modules/user/user.pages.inc 4 Oct 2009 07:33:14 -0000 @@ -274,7 +274,8 @@ function user_profile_form_validate($for function user_profile_form_submit($form, &$form_state) { $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']); + // Remove unneeded values. + form_state_values_clean($form_state); $edit = (object)$form_state['values']; field_attach_submit('user', $edit, $form, $form_state);