diff options
author | Dries Buytaert <dries@buytaert.net> | 2006-01-13 07:44:59 +0000 |
---|---|---|
committer | Dries Buytaert <dries@buytaert.net> | 2006-01-13 07:44:59 +0000 |
commit | a3ae36505747def7251998b177433ab55e3115f3 (patch) | |
tree | 1746c93e66446b67dcb9549b59347c0afc6e6c59 | |
parent | 07c2ef3248ccbe99ead2e4e5ef29dae7cf6a988b (diff) | |
download | brdo-a3ae36505747def7251998b177433ab55e3115f3.tar.gz brdo-a3ae36505747def7251998b177433ab55e3115f3.tar.bz2 |
- Patch by Zen/drumm: fixed glitch in form_select.
-rw-r--r-- | includes/form.inc | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/includes/form.inc b/includes/form.inc index d0db80c9f..16a465266 100644 --- a/includes/form.inc +++ b/includes/form.inc @@ -470,11 +470,15 @@ function form_options_flatten($array, $reset = TRUE) { function theme_select($element) { $select = ''; $size = $element['#size'] ? ' size="' . $element['#size'] . '"' : ''; + // array_key_exists accomodates the rare event where $element['#value'] is NULL. + // isset() fails in this situation. + $value_valid = isset($element['#value']) || array_key_exists('#value', $element); + $value_is_array = is_array($element['#value']); foreach ($element['#options'] as $key => $choice) { if (is_array($choice)) { $select .= '<optgroup label="'. $key .'">'; foreach ($choice as $key => $choice) { - if (isset($element['#value']) && ($element['#value'] == $key || (is_array($element['#value']) && in_array($key, $element['#value'])))) { + if ($value_valid && ($element['#value'] == $key || ($value_is_array && in_array($key, $element['#value'])))) { $selected = ' selected="selected"'; } else { @@ -485,7 +489,7 @@ function theme_select($element) { $select .= '</optgroup>'; } else { - if (isset($element['#value']) && ($element['#value'] == $key || (is_array($element['#value']) && in_array($key, $element['#value'])))) { + if ($value_valid && ($element['#value'] == $key || ($value_is_array && in_array($key, $element['#value'])))) { $selected = ' selected="selected"'; } else { |