This repository has been archived on 2024-04-08. You can view files and clone it, but cannot push or open issues or pull requests.
khosb/includes/smarty/plugins/function.html_menu_multi.php

51 lines
1.5 KiB
PHP
Raw Normal View History

<?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;
}
?>