menu.class.php 3.23 KB
<?php
Class Menu{
 private $db;
 private $lang;

 function __construct($lang){
  $this->db = sdb::getInstance();
  $this->lang = $lang;
 }
 
 public function valid($data){
  $error = array();
  
  if(!preg_match("/.{1,50}/i",$data['name']))$error[] = "error name";

  return $error;
 }
 
 public function save($data){
   $fields_values = array(
   'sort'=>$data['sort'],
   'parent_id'=>$data['parent_id'],
   'params'=>$data['params'],
   'name_'.$this->lang=>$data['name'],
   'title_'.$this->lang=>$data['title'],
   'description_'.$this->lang=>$data['description'],
   'keywords_'.$this->lang=>$data['keywords'],
   'about_'.$this->lang=>$data['keywords'],
   );
   $fields_values['is_menu'] = (isset($data['is_menu'])) ? $data['is_menu'] : 0;
   $fields_values['is_menu_bottom'] = (isset($data['is_menu_bottom'])) ? $data['is_menu_bottom'] : 0;
   if(isset($data['update_id']) && $data['update_id']>0){$DB_AUTOQUERY = DB_AUTOQUERY_UPDATE;$where = "id='{$data['update_id']}'";}
   else $DB_AUTOQUERY = DB_AUTOQUERY_INSERT;
   
   $this->db->autoExecute("menu", $fields_values, $DB_AUTOQUERY,$where);
 }
 
 public function delete($id){
		$i = 0;
		while($id>0){
			$where = ($i == 0) ? "id" : "parent_id";
			$id = $this->db->getOne("select id from menu where " . $where . "=?",array($id));
			$this->db->query("delete from menu where id=?",array($id));
			$i++;
		}
 }
 
 public function view($id){
  return $this->db->getRow("select *,name_{$this->lang} as name,title_{$this->lang} as title,description_{$this->lang} as description,keywords_{$this->lang} as keywords,about_{$this->lang} as about from menu where id=?",array($id),DB_FETCHMODE_ASSOC);
 }
 
 public function view_params($param1,$value = null){
// print_r($_SERVER);
/*   $rt = explode("/" ,$rt);
   $rt = array_slice($rt, $offset,$length);
 print  $params = implode("/",$rt);
   if($params) $params .= "/";  */
   $params = ($value != null) ? $param1 . '/' . $value . '/' : (($param1 != null) ? $param1 . '/' : $param1);
 //$params = sprintf("%s/%s/",$param1,$value);
 return $this->db->getRow("select *,name_{$this->lang} as name from menu where params=?",array($params),DB_FETCHMODE_ASSOC);
 }
 
 public function getMenu($id = 0,$no_id = 0,$level = -1,&$menu = array()){
  $sql = "select *,name_{$this->lang} as name from menu where parent_id=?";
  if($no_id>0)$sql .= sprintf(" and id<>'%d'",$no_id);
  $sql .= " order by sort";
  $res = $this->db->query($sql,array($id));
  $level++;
  while($row = $res->fetchRow(DB_FETCHMODE_ASSOC)){
    $row['level'] = $level;
    $menu[] = $row;
    $this->getMenu($row['id'],$no_id,$level,$menu);
  }
 /* foreach($res as $row){
   $menu[] = $row;
   $this->getMenu($row['id'],$menu);
  } */
  

 return $menu;
 }
 
 public function getMenuUL($url,$id = 0,&$menu = ''){
   // global $menu;
    $q=$this->db->query("select *,name_{$this->lang} as name from menu where parent_id=? order by sort asc",array($id));
    if(!$q->numRows())
        return;
    $menu.= "<ul>\n";
    while($q->fetchInto($arr,DB_FETCHMODE_ASSOC))
    {
        $menu.= '<li>';
        $menu.= '<a href="'.$url.'/admin/'.$arr['params'].'">';
        $menu.= $arr['name'];
        $menu.= '</a>';
        $this->getMenuUL($url,$arr['id'],$menu);
        $menu.= "</li>\n";
    }
    $menu.= "</ul>\n";

  return $menu;
 }

}
?>