summaryrefslogtreecommitdiff
path: root/includes
diff options
context:
space:
mode:
authorDries Buytaert <dries@buytaert.net>2006-03-12 09:28:12 +0000
committerDries Buytaert <dries@buytaert.net>2006-03-12 09:28:12 +0000
commit2a3e3b2fedf6eff17e083d27e4c5e371c18b628d (patch)
tree1f03df692f4aaa2574f267586097156a6318b210 /includes
parent7d9217fc20bf82d119a13e2c09406f4d0e30e935 (diff)
downloadbrdo-2a3e3b2fedf6eff17e083d27e4c5e371c18b628d.tar.gz
brdo-2a3e3b2fedf6eff17e083d27e4c5e371c18b628d.tar.bz2
- Patch #53480 by chx et al: clean and harden form_builder for various types of posted elements.
Diffstat (limited to 'includes')
-rw-r--r--includes/form.inc22
1 files changed, 17 insertions, 5 deletions
diff --git a/includes/form.inc b/includes/form.inc
index 9ad1e79dc..e028edbd7 100644
--- a/includes/form.inc
+++ b/includes/form.inc
@@ -323,12 +323,24 @@ function form_builder($form_id, $form) {
$form['#ref'] = &$ref;
if (!isset($form['#value'])) {
if ($posted) {
- if (isset($edit)) {
- $form['#value'] = $edit; // normal element
- $form['#needs_validation'] = TRUE;
+ switch ($form['#type']) {
+ case 'checkbox':
+ $form['#value'] = isset($edit) ? $form['#return_value'] : 0;
+ break;
+ case 'select':
+ $form['#value'] = isset($edit) ? $edit : array();
+ break;
+ case 'textfield':
+ if (isset($edit)) {
+ $form['#value'] = str_replace(array("\r", "\n"), '', $edit);
+ }
+ break;
+ default:
+ if (isset($edit)) {
+ $form['#value'] = $edit;
+ }
}
- elseif (isset($form['#return_value'])) {
- $form['#value'] = '0'; // checkbox unchecked
+ if (isset($form['#value'])) {
$form['#needs_validation'] = TRUE;
}
}