Advertisement
joris

ActiveMenu Class

Jul 27th, 2014
532
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 5.08 KB | None | 0 0
  1. <?php
  2. class ActiveMenu extends CMenu
  3. {
  4.     public function init(){
  5.           if(!Yii::app()->user->isGuest){
  6.               echo $this->generateMenu(Yii::app()->user->idgroup(), 0, 0);
  7.           }
  8.     }
  9.    
  10.     private function allowViewMenu($intUserGroupId, $intMenuId){
  11.             $strSQL = "SELECT allow_view FROM t_menu_privileges WHERE user_group_id = ".$intUserGroupId." AND menu_id = ".$intMenuId;
  12.             $dependency = new CDbCacheDependency('SELECT MAX(id) FROM t_menu_privileges');
  13.             $objDataSet = Yii::app()->db->cache(1000, $dependency)->createCommand($strSQL)->queryRow();
  14.            
  15.             if(isset($objDataSet)){
  16.                 if(intval($objDataSet['allow_view']) == 1){
  17.                         return true;
  18.                 }else{
  19.                         return false;
  20.                 }
  21.             }else{
  22.                 return false;
  23.             }
  24.     }
  25.    
  26.     private function generateMenu($intUserGroupId, $intParentId, $intMenuLevel){
  27.             $strSQL = "SELECT id,menu_controller,menu_name,menu_icon FROM t_menu WHERE parent_id = ".$intParentId." AND published = 1 AND activate = 1 ORDER BY sort_order ASC";
  28.            
  29.             $dependency = new CDbCacheDependency('SELECT MAX(id) FROM t_menu');
  30.             $objDataSet = Yii::app()->db->cache(1000, $dependency)->createCommand($strSQL)->queryAll();
  31.            
  32.             $strHtmlMenu = "";
  33.             $intCurrentLevel = $intMenuLevel;
  34.            
  35.             if(count($objDataSet) > 0){
  36.                   if($intMenuLevel == 0){
  37.                       $strHtmlMenu .= "<ul id=\"yw1\" class=\"nav\">";
  38.                       foreach($objDataSet as $row){
  39.                           if($this->allowViewMenu($intUserGroupId, $row['id'])){
  40.                               $strHtmlMenu .= "<li class=\"dropdown\">";
  41.                               $strHtmlMenu .= "<a href=\"".$row['menu_controller']."\" data-toggle=\"dropdown\" class=\"dropdown-toggle\"><span class=\"".$row['menu_icon']."\"></span> ".$row['menu_name']."<b class=\"caret\"></b></a>";
  42.                              
  43.                               $strSQL = "SELECT id,menu_controller,menu_name,menu_icon FROM t_menu WHERE parent_id = ".$row['id']." AND published = 1 AND activate = 1 ORDER BY sort_order ASC";
  44.                              
  45.                               $dependency = new CDbCacheDependency('SELECT MAX(id) FROM t_menu');
  46.                               $objDataSetChild = Yii::app()->db->cache(1000, $dependency)->createCommand($strSQL)->queryAll();
  47.  
  48.                               if(count($objDataSetChild) > 0){
  49.                                       $intCurrentLevel += 1;
  50.                                       $strHtmlMenu .= $this->generateMenu($intUserGroupId, $row['id'], $intCurrentLevel);
  51.                                       $intCurrentLevel -= 1;
  52.                               }
  53.                              
  54.                               $strHtmlMenu .= "</li>";
  55.                           }
  56.                       }
  57.                      
  58.                       $strHtmlMenu .= "</ul>";
  59.                   }elseif($intMenuLevel == 1){
  60.                       $strHtmlMenu .= "<ul class=\"dropdown-menu sub-dropdown\">";
  61.                      
  62.                       foreach($objDataSet as $row){
  63.                           if($this->allowViewMenu($intUserGroupId, $row['id'])){
  64.                               $strSQL = "SELECT id,menu_controller,menu_name,menu_icon FROM t_menu WHERE parent_id = ".$row['id']." AND published = 1 AND activate = 1 ORDER BY sort_order ASC";
  65.                              
  66.                               $dependency = new CDbCacheDependency('SELECT MAX(id) FROM t_menu');
  67.                               $objDataSetChild = Yii::app()->db->cache(1000, $dependency)->createCommand($strSQL)->queryAll();
  68.                              
  69.                               if(count($objDataSetChild) > 0){
  70.                                       $strHtmlMenu .= "<li class=\"dropdown sub-dropdown\"><a href=".Yii::app()->createUrl($row["menu_controller"])."><span class=\"".$row['menu_icon']."\"></span> ".$row['menu_name']." <b class=\"caret-right\"></b></a>";
  71.                                      
  72.                                       $intCurrentLevel += 1;
  73.                                       $strHtmlMenu .= $this->generateMenu($intUserGroupId, $row['id'], $intCurrentLevel);
  74.                                       $intCurrentLevel -= 1;
  75.                                      
  76.                                       $strHtmlMenu .= "</li>";
  77.                               }else{
  78.                                       $strHtmlMenu .= "<li><a href=".Yii::app()->createUrl($row["menu_controller"])."><span class=\"".$row['menu_icon']."\"></span> ".$row['menu_name']."</a></li>";
  79.                               }
  80.                           }
  81.                       }
  82.                      
  83.                       $strHtmlMenu .= "</ul>";
  84.                   }elseif($intMenuLevel >= 2){
  85.                       $strHtmlMenu .= "<ul class=\"dropdown-menu sub-menu\">";
  86.                      
  87.                       foreach($objDataSet as $row){
  88.                           if($this->allowViewMenu($intUserGroupId, $row['id'])){
  89.                               $strSQL = "SELECT id,menu_controller,menu_name,menu_icon FROM t_menu WHERE parent_id = ".$row['id']." AND published = 1 AND activate = 1 ORDER BY sort_order ASC";
  90.                              
  91.                               $dependency = new CDbCacheDependency('SELECT MAX(id) FROM t_menu');
  92.                               $objDataSetChild = Yii::app()->db->cache(1000, $dependency)->createCommand($strSQL)->queryAll();
  93.                              
  94.                               if(count($objDataSetChild) > 0){
  95.                                       $strHtmlMenu .= "<li class=\"dropdown sub-dropdown\"><a href=".Yii::app()->createUrl($row["menu_controller"])."><span class=\"".$row['menu_icon']."\"></span> ".$row['menu_name']." <b class=\"caret-right\"></b></a>";
  96.                                      
  97.                                       $intCurrentLevel += 1;
  98.                                       $strHtmlMenu .= $this->generateMenu($intUserGroupId, $row['id'], $intCurrentLevel);
  99.                                       $intCurrentLevel -= 1;
  100.                                      
  101.                                       $strHtmlMenu .= "</li>";
  102.                               }else{
  103.                                       $strHtmlMenu .= "<li><a href=".Yii::app()->createUrl($row["menu_controller"])."><span class=\"".$row['menu_icon']."\"></span> ".$row['menu_name']."</a></li>";
  104.                               }
  105.                           }
  106.                       }
  107.                      
  108.                       $strHtmlMenu .= "</ul>";
  109.                   }
  110.             }
  111.            
  112.             return $strHtmlMenu;
  113.     }
  114. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement