comparison includes/form.inc @ 9:acef7ccb09b5 6.4

Drupal 6.4
author Franck Deroche <webmaster@defr.org>
date Tue, 23 Dec 2008 14:32:08 +0100
parents fff6d4c8c043
children 589fb7c02327
comparison
equal deleted inserted replaced
8:85cbd6048071 9:acef7ccb09b5
1 <?php 1 <?php
2 // $Id: form.inc,v 1.265.2.7 2008/06/25 09:58:09 dries Exp $ 2 // $Id: form.inc,v 1.265.2.10 2008/08/13 23:59:12 drumm Exp $
3 3
4 /** 4 /**
5 * @defgroup forms Form builder functions 5 * @defgroup forms Form builder functions
6 * @{ 6 * @{
7 * Functions that build an abstract representation of a HTML form. 7 * Functions that build an abstract representation of a HTML form.
98 $args_temp = $args; 98 $args_temp = $args;
99 $args_temp[0] = &$form_state; 99 $args_temp[0] = &$form_state;
100 array_unshift($args_temp, $form_id); 100 array_unshift($args_temp, $form_id);
101 101
102 $form = call_user_func_array('drupal_retrieve_form', $args_temp); 102 $form = call_user_func_array('drupal_retrieve_form', $args_temp);
103 $form_build_id = 'form-'. md5(mt_rand()); 103 $form_build_id = 'form-'. md5(uniqid(mt_rand(), true));
104 $form['#build_id'] = $form_build_id; 104 $form['#build_id'] = $form_build_id;
105 drupal_prepare_form($form_id, $form, $form_state); 105 drupal_prepare_form($form_id, $form, $form_state);
106 // Store a copy of the unprocessed form for caching and indicate that it 106 // Store a copy of the unprocessed form for caching and indicate that it
107 // is cacheable if #cache will be set. 107 // is cacheable if #cache will be set.
108 $original_form = $form; 108 $original_form = $form;
214 drupal_process_form($form_id, $form, $form_state); 214 drupal_process_form($form_id, $form, $form_state);
215 return $form; 215 return $form;
216 } 216 }
217 217
218 /** 218 /**
219 * Fetch a form from cache. 219 * Store a form in the cache.
220 */
221 function form_get_cache($form_build_id, &$form_state) {
222 if ($cached = cache_get('form_'. $form_build_id, 'cache_form')) {
223 $form = $cached->data;
224 if ($cached = cache_get('storage_'. $form_build_id, 'cache_form')) {
225 $form_state['storage'] = $cached->data;
226 }
227 return $form;
228 }
229 }
230
231 /**
232 * Store a form in the cache
233 */ 220 */
234 function form_set_cache($form_build_id, $form, $form_state) { 221 function form_set_cache($form_build_id, $form, $form_state) {
222 global $user;
235 // 6 hours cache life time for forms should be plenty. 223 // 6 hours cache life time for forms should be plenty.
236 $expire = 21600; 224 $expire = 21600;
237 225
226 if ($user->uid) {
227 $form['#cache_token'] = drupal_get_token();
228 }
238 cache_set('form_'. $form_build_id, $form, 'cache_form', time() + $expire); 229 cache_set('form_'. $form_build_id, $form, 'cache_form', time() + $expire);
239 if (!empty($form_state['storage'])) { 230 if (!empty($form_state['storage'])) {
240 cache_set('storage_'. $form_build_id, $form_state['storage'], 'cache_form', time() + $expire); 231 cache_set('storage_'. $form_build_id, $form_state['storage'], 'cache_form', time() + $expire);
232 }
233 }
234
235 /**
236 * Fetch a form from cache.
237 */
238 function form_get_cache($form_build_id, &$form_state) {
239 global $user;
240 if ($cached = cache_get('form_'. $form_build_id, 'cache_form')) {
241 $form = $cached->data;
242 if ((isset($form['#cache_token']) && drupal_valid_token($form['#cache_token'])) || (!isset($form['#cache_token']) && !$user->uid)) {
243 if ($cached = cache_get('storage_'. $form_build_id, 'cache_form')) {
244 $form_state['storage'] = $cached->data;
245 }
246 return $form;
247 }
241 } 248 }
242 } 249 }
243 250
244 /** 251 /**
245 * Retrieves a form using a form_id, populates it with $form_state['values'], 252 * Retrieves a form using a form_id, populates it with $form_state['values'],
1515 * @ingroup themeable 1522 * @ingroup themeable
1516 */ 1523 */
1517 function theme_radio($element) { 1524 function theme_radio($element) {
1518 _form_set_class($element, array('form-radio')); 1525 _form_set_class($element, array('form-radio'));
1519 $output = '<input type="radio" '; 1526 $output = '<input type="radio" ';
1527 $output .= 'id="'. $element['#id'] .'" ';
1520 $output .= 'name="'. $element['#name'] .'" '; 1528 $output .= 'name="'. $element['#name'] .'" ';
1521 $output .= 'value="'. $element['#return_value'] .'" '; 1529 $output .= 'value="'. $element['#return_value'] .'" ';
1522 $output .= (check_plain($element['#value']) == $element['#return_value']) ? ' checked="checked" ' : ' '; 1530 $output .= (check_plain($element['#value']) == $element['#return_value']) ? ' checked="checked" ' : ' ';
1523 $output .= drupal_attributes($element['#attributes']) .' />'; 1531 $output .= drupal_attributes($element['#attributes']) .' />';
1524 if (!is_null($element['#title'])) { 1532 if (!is_null($element['#title'])) {
1731 '#return_value' => check_plain($key), 1739 '#return_value' => check_plain($key),
1732 '#default_value' => isset($element['#default_value']) ? $element['#default_value'] : NULL, 1740 '#default_value' => isset($element['#default_value']) ? $element['#default_value'] : NULL,
1733 '#attributes' => $element['#attributes'], 1741 '#attributes' => $element['#attributes'],
1734 '#parents' => $element['#parents'], 1742 '#parents' => $element['#parents'],
1735 '#id' => form_clean_id('edit-'. implode('-', $parents_for_id)), 1743 '#id' => form_clean_id('edit-'. implode('-', $parents_for_id)),
1744 '#ahah' => isset($element['#ahah']) ? $element['#ahah'] : NULL,
1736 ); 1745 );
1737 } 1746 }
1738 } 1747 }
1739 } 1748 }
1740 return $element; 1749 return $element;