class MenuAccess {
function getTreeJSON($rootid) {
global $db,$username;
$arr = array();
$query = 'select menu_id, menu_name, node_menu_id, top_id from user_access.t_menu where top_id ='.$rootid.' order by top_id,menu_id';
$db->setQuery($query);
$rows = $db->loadAssocList();
$query = 'select distinct c.top_id from user_access.t_user a
left join user_access.t_access_role b on a.groups_id = b.groups_id
left join user_access.t_menu c on b.menu_id = c.menu_id
where a.user_id =\'username\'' ;
$db->setQuery($query);
$temp = $db->loadResultArray();
$topid = '\''.implode("','",$temp).'\'';
foreach ($rows as $key => $value) {
$query = 'select count(menu_id) numrows from user_access.t_menu where top_id ='.$value["menu_id"];
$db->setQuery($query);
$row = $db->loadObject();
if($row->numrows>1){
if ($this->cekPermission($value["menu_id"],$username,$topid )){
echo '{text:\''.$value['menu_name'].'\'';
echo ',id:\''.$value['node_menu_id'].'\'';
echo ',expanded:true';
echo ',children:[';
$this->getTreeJSON($value["menu_id"]);
echo ']},';
}
}else {
if ($this->cekPermission($value["menu_id"],$username,$topid )){
echo '{text:\''.$value['menu_name'].'\'';
echo ',id:\''.$value['node_menu_id'].'\'';
echo ',leaf:true},';
}
}
}
//return $arr;
}
function getTreeArray($rootid) {
global $db;
$arr = array();
$query = 'select menu_id, menu_name, node_menu_id, top_id from user_access.t_menu where top_id ='.$rootid.' order by top_id,menu_id';
$db->setQuery($query);
$rows = $db->loadAssocList();
foreach ($rows as $key => $value) {
$query = 'select count(menu_id) numrows from user_access.t_menu where top_id ='.$value["menu_id"];
$db->setQuery($query);
$row = $db->loadObject();
if($row->numrows>1){
$arr[$value["menu_id"]]['text'] =$value['menu_name'];
$arr[$value["menu_id"]]['id'] =$value['node_menu_id'];
$arr[$value["menu_id"]]['expanded'] = true;
$arr[$value["menu_id"]]['children'] = $this->getTreeArray($value["menu_id"]);
}else {
$arr[$value["menu_id"]]['text'] =$value['menu_name'];
$arr[$value["menu_id"]]['id'] =$value['node_menu_id'];
$arr[$value["menu_id"]]['leaf'] = true;
}
}
return $arr;
}
function cekPermission($menuid,$username,$topid){
global $db;
$query = ' select count(menu_id) numrows'.
' from ( '.
' select c.menu_id from user_access.t_menu c '.
' left join user_access.t_access_role b on b.menu_id = c.menu_id '.
' where (c.menu_id in ('. $topid.' ) or b.menu_id = '.$menuid.') ) temp where menu_id = '.$menuid;
$db->setQuery($query);
$row = $db->loadObject();
return ($row->numrows>0);
}
}
|