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='