Advertisement
abushyk

Realia_getTemplateMenu_EXT

Apr 15th, 2015
509
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 2.91 KB | None | 0 0
  1. private function getTemplateMenu($menues=array()){
  2.     //remove comment from next string for testing
  3.     //unset($_SESSION['_site_cache']['nave_menu']);
  4.             $DBC=DBC::getInstance();
  5.    
  6.         require_once(SITEBILL_DOCUMENT_ROOT.'/template/frontend/realia/main/realia_menu_decorator.php');
  7.         require_once(SITEBILL_DOCUMENT_ROOT.'/apps/system/lib/admin/structure/structure_implements.php');
  8.         require_once(SITEBILL_DOCUMENT_ROOT.'/apps/system/lib/admin/structure/structure_manager.php');
  9.         $SM=new Structure_Manager();
  10.         $structure=$SM->loadCategoryStructure();
  11.        
  12.         $DBC=DBC::getInstance();
  13.        
  14.         $add_points=array();
  15.         $additional_menues=array();
  16.         $ids=array();
  17.                
  18.         if(!empty($menues)){
  19.             foreach($menues as $m){
  20.                 if($m['id']==0){
  21.                     $m['href']=$this->getServerFullUrl().'/';
  22.                 }else{
  23.                     if(isset($_SESSION['_site_cache']['nave_menu'][$m['id']])){
  24.                         $add_points[$m['id']]=$_SESSION['_site_cache']['nave_menu'][$m['id']];
  25.                     }else{
  26.                         $ids[]=$m['id'];
  27.                     }
  28.                 }
  29.                
  30.                
  31.                 $additional_menues[$m['id']]=$m;
  32.             }
  33.            
  34.             if(!empty($ids)){
  35.                 $query='SELECT * FROM '.DB_PREFIX.'_menu_structure WHERE menu_id IN ('.implode(',', $ids).') ORDER BY sort_order';
  36.                 $stmt=$DBC->query($query);
  37.                 if($stmt){
  38.                     while($ar=$DBC->fetch($stmt)){
  39.                         $ar['url']=trim($ar['url']);
  40.                         if($ar['url']!='' && 0!==strpos($ar['url'], 'http:')){
  41.                             $ar['url'] = trim($ar['url'], '/');
  42.                         }
  43.                         $add_points[$ar['menu_id']][]=$ar;
  44.                         $_SESSION['_site_cache']['nave_menu'][$ar['menu_id']]=$add_points[$ar['menu_id']];
  45.                     }
  46.                 }
  47.             }
  48.            
  49.         }
  50.        
  51.         if(!empty($additional_menues)){
  52.             $behind=array();
  53.             $after=array();
  54.             foreach ($additional_menues as $k=>$ad_menu){
  55.                 if($ad_menu['position']=='behind'){
  56.                     $behind[]=$ad_menu;
  57.                 }else{
  58.                     $after[]=$ad_menu;
  59.                 }
  60.                
  61.                
  62.             }
  63.             if(!empty($behind)){
  64.                 $behind=array_reverse($behind);
  65.             }
  66.             $additional_menues=array_merge($behind, $after);
  67.             foreach ($additional_menues as $ad_menu){
  68.                 $k=$ad_menu['id'];
  69.                 $indexes=array_keys($structure['catalog']);
  70.                 sort($indexes);
  71.                 $last_index=end($indexes)+1;
  72.                 if($ad_menu['position']=='behind'){
  73.                     array_unshift($structure['childs'][0], $last_index);
  74.                 }else{
  75.                     $structure['childs'][0][]=$last_index;
  76.                 }
  77.                 if(isset($ad_menu['href']) && $ad_menu['href']!=''){
  78.                     $href=trim($ad_menu['href'], '/');
  79.                 }else{
  80.                     $href='#';
  81.                 }
  82.                 $structure['catalog'][$last_index]=array('url'=>$href, 'name'=>$ad_menu['title']);
  83.                
  84.                 if(isset($add_points[$k]) && !empty($add_points[$k])){
  85.                     $current_index=$last_index+1;
  86.                     foreach ($add_points[$k] as $ad_point){
  87.                         $structure['catalog'][$current_index]=array('url'=>$ad_point['url'], 'name'=>$ad_point['name']);
  88.                         $structure['childs'][$last_index][]=$current_index;
  89.                         $current_index++;
  90.                     }
  91.                 }
  92.             }
  93.            
  94.         }
  95.        
  96.         return Realia_Menu_Decorator::getMenu($structure);
  97.            
  98.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement