summaryrefslogtreecommitdiff
path: root/includes
diff options
context:
space:
mode:
authorGerhard Killesreiter <killes_www_drop_org@227.no-reply.drupal.org>2006-03-27 18:07:32 +0000
committerGerhard Killesreiter <killes_www_drop_org@227.no-reply.drupal.org>2006-03-27 18:07:32 +0000
commitd0818780e3002d692365483ba5fa2265181c9b80 (patch)
tree8cd009fe8604b1c92f8e82bfabde6ee6d8ec2a27 /includes
parentca1dbd8099a7c8b2efad356ce41294717c5d8c3b (diff)
downloadbrdo-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.inc7
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)) {