extjs php json tree menu
Tuesday, 25 October 2011 15:39
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);
    }

}

 

Add comment


Security code
Refresh

Joomla templates by a4joomla