51 lines
1.5 KiB
PHP
51 lines
1.5 KiB
PHP
|
<?php
|
||
|
|
||
|
/*
|
||
|
* Smarty plugin
|
||
|
* -------------------------------------------------------------
|
||
|
* Type: function
|
||
|
* Name: html_menu_multi
|
||
|
* Purpose: Get creates a html menu for associated records (multi-select)
|
||
|
* -------------------------------------------------------------
|
||
|
*/
|
||
|
function smarty_function_html_menu_multi($params, &$smarty)
|
||
|
{
|
||
|
$conditions='';
|
||
|
extract($params);
|
||
|
if(empty($field)) $field = $name;
|
||
|
if(empty($id)) $id = $field;
|
||
|
if(empty($size)) $size = '4';
|
||
|
|
||
|
|
||
|
|
||
|
$db = &DB();
|
||
|
$rs = & $db->Execute( $sql = sqlSelect($db, $assoc_table, "id,".$assoc_field, $conditions, $assoc_field));
|
||
|
|
||
|
if(empty($default)) $default = Array('');
|
||
|
elseif (is_array($default)) $default = $default;
|
||
|
elseif (is_numeric($default)) $default[] = $default;
|
||
|
elseif (is_string($default)) $default = unserialize($default);
|
||
|
else $default = Array('');
|
||
|
|
||
|
|
||
|
if($default == "all") $return .= '<option value="" selected></option>';
|
||
|
$i=0;
|
||
|
if($rs && $rs->RecordCount() > 0) {
|
||
|
while(!$rs->EOF) {
|
||
|
$return .= '<option value="' . $rs->fields['id'] . '"';
|
||
|
foreach($default as $def) { if($def == $rs->fields["id"]) $return .= " selected"; break; }
|
||
|
$return .= '>' . $rs->fields["$assoc_field"] . '</option>';
|
||
|
$i++;
|
||
|
$rs->MoveNext();
|
||
|
}
|
||
|
} else {
|
||
|
if( $default != "all") $return .= '<option value=""></option>';
|
||
|
}
|
||
|
|
||
|
$return .= '</select>';
|
||
|
|
||
|
if($i < $size) $size = $i++;
|
||
|
echo '<select id="'.$id.'" name="'. $field .'[]" size="'.$size.'" value="" multiple>' . $return;
|
||
|
|
||
|
}
|
||
|
?>
|