From 3db9fc144cbf8e5d5687c6c90b9526680de67364 Mon Sep 17 00:00:00 2001 From: Dries Buytaert <dries@buytaert.net> Date: Mon, 30 Nov 2009 19:57:20 +0000 Subject: [PATCH] - Patch #644150 by sun: () is stateless, even with enabled caching. --- includes/form.inc | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/includes/form.inc b/includes/form.inc index 113c0b00bc07..a6ca245158a6 100644 --- a/includes/form.inc +++ b/includes/form.inc @@ -165,8 +165,6 @@ function drupal_build_form($form_id, &$form_state) { $form_state['input'] = $form_state['method'] == 'get' ? $_GET : $_POST; } - $cacheable = FALSE; - if (isset($_SESSION['batch_form_state'])) { // We've been redirected here after a batch processing : the form has // already been processed, so we grab the post-process $form_state value @@ -181,7 +179,8 @@ function drupal_build_form($form_id, &$form_state) { // form_state data from a previous step, we'll retrieve it so it can // be passed on to the form processing code. if (isset($form_state['input']['form_id']) && $form_state['input']['form_id'] == $form_id && !empty($form_state['input']['form_build_id'])) { - $form = form_get_cache($form_state['input']['form_build_id'], $form_state); + $form_build_id = $form_state['input']['form_build_id']; + $form = form_get_cache($form_build_id, $form_state); } // If the previous bit of code didn't result in a populated $form @@ -210,10 +209,9 @@ function drupal_build_form($form_id, &$form_state) { } drupal_prepare_form($form_id, $form, $form_state); - // Store a copy of the unprocessed form for caching and indicate that it - // is cacheable in case $form_state['cache'] is set. + // Store a copy of the unprocessed form to cache in case + // $form_state['cache'] is set. $original_form = $form; - $cacheable = TRUE; } // Now that we know we have a form, we'll process it (validating, @@ -228,13 +226,13 @@ function drupal_build_form($form_id, &$form_state) { // $form_state shall be cached. But the form may only be cached if the // special 'no_cache' property is not set to TRUE. if (!empty($form_state['cache']) && empty($form_state['no_cache'])) { - // Cache the form upon initial build of the form. - if ($cacheable) { + // Cache the original, unprocessed form upon initial build of the form. + if (isset($original_form)) { form_set_cache($form_build_id, $original_form, $form_state); } // After processing a cached form, only update the cached form state. else { - form_set_cache($form_state['input']['form_build_id'], NULL, $form_state); + form_set_cache($form_build_id, NULL, $form_state); } } } -- GitLab