1 [mytable] => forms [group_id] => 1 [order_id] => 1 [param] => ldap_host [desc] => LDAP server [def] => 192.168.1.3 [cur] => [new] => [mandatory] => 1 [attr] => maxlen=60 [xattr] => [type] => inputbox [link] => ) */ class Forms { private $name=''; private $db=''; private $html=''; function __construct($jname,$helper='',$db_path=false) { $this->name=$jname; if($jname=='') { $database=$helper; }else if($jname=='cbsd-settings'){ $this->db=new Db('cbsd-settings'); }else{ $database=array('jname'=>$jname,'helper'=>$helper); } if($helper!='') { if($db_path!==false) { $this->db=new Db('file',$db_path); }else{ $this->db=new Db('helper',$database); } } } function generate() { if($this->db->error) return; //$query="select * from forms order by group_id asc, order_id asc"; $query="select * from forms order by groupname asc, group_id asc, order_id asc"; $fields=$this->db->select($query); //print_r($fields);exit; //echo '
';print_r($fields);
//$defaults=array();
//$currents=array();
// Строим карту формы с группами элементов
$groups=array();
foreach($fields as $key=>$field)
{
$group=$field['groupname'];
if(!empty($group))
{
if($field['type']=='group_add')
{ // Expand
$groups[$group]['_title']=$field['desc'];
}else if($field['type']=='delimer'){
// Delimer
$groups[$group][$field['group_id']]=$key;
}else{
// Other elements
$groups[$group][$field['group_id']]['_group_id']=$field['group_id'];
$groups[$group][$field['group_id']][$field['order_id']]=$key;
}
}else{
$groups[]=$key;
}
}
//print_r($fields);print_r($groups);exit;
$arr=array();
$last_type='';
foreach($fields as $key=>$field)
{
/*
if($last_type=='delimer' && $field['type']!='delimer')
$this->html.='';
*/
$last_type=$field['type'];
if(isset($field['cur']) && isset($field['def']))
{
if(empty($field['cur'])) $field['cur']=$field['def'];
}
$tpl=$this->getElement($field['type'],$field);
$params=array('param','desc','attr','cur');
foreach($params as $param)
{
if(isset($field[$param]))
$tpl=str_replace('${'.$param.'}',$field[$param],$tpl);
}
//$value=$field['def'];
//if(isset($field['cur']) && !empty($field['cur'])) $value=$field['cur'];
$value=$field['cur'];
$tpl=str_replace('${value}',$value,$tpl);
$value=$field['def'];
$tpl=str_replace('${def}',$value,$tpl);
$required=($field['mandatory']==1)?' required':'';
$tpl=str_replace('${required}',$required,$tpl);
$arr[$key]=$tpl;
//if($field['param']!='-') $currents[$field['param']]=$field['cur'];
//if($field['param']!='-') $defaults[$field['param']]=$field['def'];
}
// Выстраиваем форму по карте
$this->html='';
return array('html'=>$this->html); // ,'currents'=>$currents //,'defaults'=>$defaults
}
function getElement($el,$arr=array())
{
$tpl='';
switch(trim($el))
{
case 'inputbox':
$res=$this->getInputAutofill($arr);
if($res===false)
{
$list='';
$datalist='';
}else{
$list=' list="'.$res['list'].'"';
$datalist=$res['datalist'];
}
$tpl='