menu.class.php
3.23 KB
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;
}
}
?>