Blame view

modules/admin/model/menu.class.php 3.23 KB
8d65d0ce   andryeyev   init
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
  <?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;
   }
  
  }
  ?>