summaryrefslogtreecommitdiffstats
path: root/system/helpers/form_helper.php
diff options
context:
space:
mode:
Diffstat (limited to 'system/helpers/form_helper.php')
-rw-r--r--system/helpers/form_helper.php42
1 files changed, 31 insertions, 11 deletions
diff --git a/system/helpers/form_helper.php b/system/helpers/form_helper.php
index 4700da7d7..40852faf8 100644
--- a/system/helpers/form_helper.php
+++ b/system/helpers/form_helper.php
@@ -18,7 +18,7 @@
*
* @package CodeIgniter
* @author EllisLab Dev Team
- * @copyright Copyright (c) 2008 - 2013, EllisLab, Inc. (http://ellislab.com/)
+ * @copyright Copyright (c) 2008 - 2014, EllisLab, Inc. (http://ellislab.com/)
* @license http://opensource.org/licenses/OSL-3.0 Open Software License (OSL 3.0)
* @link http://codeigniter.com
* @since Version 1.0
@@ -316,8 +316,9 @@ if ( ! function_exists('form_dropdown'))
{
isset($name['options']) OR $name['options'] = array();
isset($name['selected']) OR $name['selected'] = array();
+ isset($name['extra']) OR $name['extra'] = '';
- return form_dropdown($name['name'], $name['options'], $name['selected'], $extra);
+ return form_dropdown($name['name'], $name['options'], $name['selected'], $name['extra']);
}
is_array($selected) OR $selected = array($selected);
@@ -328,10 +329,7 @@ if ( ! function_exists('form_dropdown'))
$selected = array($_POST[$name]);
}
- if ($extra != '')
- {
- $extra = ' '.$extra;
- }
+ $extra = _attributes_to_string($extra);
$multiple = (count($selected) > 1 && strpos($extra, 'multiple') === FALSE) ? ' multiple="multiple"' : '';
@@ -684,9 +682,20 @@ if ( ! function_exists('set_select'))
{
return ($default === TRUE) ? ' selected="selected"' : '';
}
- elseif (is_array($input) && in_array($value, $input, TRUE))
+
+ $value = (string) $value;
+ if (is_array($input))
{
- return ' selected="selected"';
+ // Note: in_array('', array(0)) returns TRUE, do not use it
+ foreach ($input as &$v)
+ {
+ if ($value === $v)
+ {
+ return ' selected="selected"';
+ }
+ }
+
+ return '';
}
return ($input === $value) ? ' selected="selected"' : '';
@@ -720,9 +729,20 @@ if ( ! function_exists('set_checkbox'))
{
return ($default === TRUE) ? ' checked="checked"' : '';
}
- elseif (is_array($input) && in_array($value, $input, TRUE))
+
+ $value = (string) $value;
+ if (is_array($input))
{
- return ' checked="checked"';
+ // Note: in_array('', array(0)) returns TRUE, do not use it
+ foreach ($input as &$v)
+ {
+ if ($value === $v)
+ {
+ return ' checked="checked"';
+ }
+ }
+
+ return '';
}
return ($input === $value) ? ' checked="checked"' : '';
@@ -757,7 +777,7 @@ if ( ! function_exists('set_radio'))
return ($default === TRUE) ? ' checked="checked"' : '';
}
- return ($input === $value) ? ' checked="checked"' : '';
+ return ($input === (string) $value) ? ' checked="checked"' : '';
}
}