Code: Select all
/**
* Make a form select
*
* @param array $select_ary Array of options
* @param string $default Default option
* @param mixed $lang_prefix Language prefix, if this is false, no lang is used
* @param string $not_assoc If this is true, no associative array is used
* @return string Select html
*/
function form_select($select_ary, $default = '', $lang_prefix = '', $not_assoc = false, $prefix_is_key = false, $lang_strtoupper = true)
{
// only accept arrays, no empty ones
if (!is_array($select_ary) || !sizeof($select_ary))
{
return '';
}
// If selected isn't in the array, use first entry
if ($not_assoc && !in_array($default, $select_ary, true))
{
$default = $select_ary[0];
}
else if (!$not_assoc && !isset($select_ary[$default]))
{
// neat trick from php.net
$default = array_shift(array_values($select_ary));
}
if ($lang_prefix !== false)
{
global $user;
if ($prefix_is_key)
{
$lang = &$user->lang[$lang_prefix];
$lang_prefix = '';
}
else
{
$lang = &$user->lang;
}
}
$select_options = '';
foreach ($select_ary as $key => $value)
{
if ($not_assoc)
{
$key = $value;
}
if ($lang_prefix !== false)
{
$value_key = $lang_strtoupper ? strtoupper($lang_prefix . $value) : $lang_prefix . $value;
$value = !empty($lang[$value_key]) ? $lang[$value_key] : $value;
}
$select_options .= '<option value="' . $key . '"' . (($key == $default) ? ' selected="selected"' : '') . '>' . $value . '</option>';
}
return $select_options;
}