diff options
author | Gerhard Killesreiter <killes_www_drop_org@227.no-reply.drupal.org> | 2006-03-27 18:07:32 +0000 |
---|---|---|
committer | Gerhard Killesreiter <killes_www_drop_org@227.no-reply.drupal.org> | 2006-03-27 18:07:32 +0000 |
commit | d0818780e3002d692365483ba5fa2265181c9b80 (patch) | |
tree | 8cd009fe8604b1c92f8e82bfabde6ee6d8ec2a27 /includes | |
parent | ca1dbd8099a7c8b2efad356ce41294717c5d8c3b (diff) | |
download | brdo-d0818780e3002d692365483ba5fa2265181c9b80.tar.gz brdo-d0818780e3002d692365483ba5fa2265181c9b80.tar.bz2 |
#55766, Custom submit handlers get insufficient arguments, patch by Adrian
Diffstat (limited to 'includes')
-rw-r--r-- | includes/form.inc | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/includes/form.inc b/includes/form.inc index 218d37c6c..3e030ae1b 100644 --- a/includes/form.inc +++ b/includes/form.inc @@ -99,10 +99,10 @@ function drupal_get_form($form_id, &$form, $callback = NULL) { if (function_exists($form_id .'_submit')) { // we set submit here so that it can be altered but use reference for // $form_values because it will change later - $form['#submit'] = array($form_id .'_submit' => array($form_id, &$form_values)); + $form['#submit'] = array($form_id .'_submit' => array()); } elseif (function_exists($callback .'_submit')) { - $form['#submit'] = array($callback .'_submit' => array($form_id, &$form_values)); + $form['#submit'] = array($callback .'_submit' => array()); } } @@ -165,12 +165,15 @@ function drupal_validate_form($form_id, &$form, $callback = NULL) { } function drupal_submit_form($form_id, $form, $callback = NULL) { + global $form_values; + $default_args = array($form_id, &$form_values); // Prevent system module forms (system/theme settings) from saving certain form fields to the variables table. unset($GLOBALS['form_values']['submit'], $GLOBALS['form_values']['reset'], $GLOBALS['form_values']['form_id']); if (isset($form['#submit'])) { foreach ($form['#submit'] as $function => $args) { if (function_exists($function)) { + $args = array_merge($default_args, (array) $args); // Since we can only redirect to one page, only the last redirect will work $redirect = call_user_func_array($function, $args); if (isset($redirect)) { |