summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDries Buytaert <dries@buytaert.net>2006-01-13 07:44:59 +0000
committerDries Buytaert <dries@buytaert.net>2006-01-13 07:44:59 +0000
commita3ae36505747def7251998b177433ab55e3115f3 (patch)
tree1746c93e66446b67dcb9549b59347c0afc6e6c59
parent07c2ef3248ccbe99ead2e4e5ef29dae7cf6a988b (diff)
downloadbrdo-a3ae36505747def7251998b177433ab55e3115f3.tar.gz
brdo-a3ae36505747def7251998b177433ab55e3115f3.tar.bz2
- Patch by Zen/drumm: fixed glitch in form_select.
-rw-r--r--includes/form.inc8
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 {