コード例 #1
0
ファイル: ytmenubase.php プロジェクト: rodhoff/MNW
 /**
  * Get menu tree for joomla 1.5
  * @return YtMenu object is root of menu tree.
  */
 public function getMenu($params = null)
 {
     if (!isset($this->menu) || isset($params) && !empty($params)) {
         if (isset($params) && !empty($params)) {
             $this->params->bind($params);
         }
         // Initialize variables.
         $app = JFactory::getApplication();
         $sitemenu = $app->getMenu();
         // If no active menu, use default
         $active = $sitemenu->getActive() ? $sitemenu->getActive() : $sitemenu->getDefault();
         $path = $active->tree;
         $start = (int) $this->params->get('startlevel', 0);
         $end = (int) $this->params->get('endlevel', -1);
         $deep = $end - $start + 1;
         $items = $sitemenu->getItems('menutype', $this->params->get('menutype', 'mainmenu'));
         $root = new YtMenu(null, $this->params);
         $k = array();
         if (isset($items) && count($items) > 0) {
             $itemids = array();
             $itemobj = array();
             $smallest_level = 99999;
             foreach ($items as $i => $item) {
                 $iid = $item->id;
                 $itemids[$iid] = 1;
                 $itemobj[$iid] =& $items[$i];
                 if (!isset($item->sublevel)) {
                     if ($smallest_level > $item->level) {
                         $smallest_level = $item->level;
                     }
                 } else {
                     if ($smallest_level > $item->sublevel) {
                         $smallest_level = $item->sublevel;
                     }
                 }
             }
             foreach ($items as $i => $item) {
                 // level filter
                 $s_parent_item = false;
                 $spid = $item->tree[0];
                 $iid = $item->id;
                 $ideep = count($item->tree);
                 if (!isset($item->sublevel)) {
                     if ($start > $item->level) {
                         continue;
                     }
                 } else {
                     if ($start > $item->sublevel) {
                         continue;
                     }
                 }
                 // if $deep<=0 ignore endlevel check.
                 if (!isset($item->sublevel)) {
                     if ($deep > 0 && $end < $item->level) {
                         continue;
                     }
                 } else {
                     if ($deep > 0 && $end < $item->sublevel) {
                         continue;
                     }
                 }
                 // if is not child of start level items.
                 if (!isset($item->sublevel)) {
                     if ($deep > 1 && $itemobj[$spid]->level > $smallest_level) {
                         continue;
                     }
                 } else {
                     if ($deep > 1 && $itemobj[$spid]->sublevel > $smallest_level) {
                         continue;
                     }
                 }
                 $k[$iid] = new YtMenu($item, $this->params);
             }
             // set active items
             foreach ($path as $id) {
                 if (isset($k[$id])) {
                     $k[$id]->set('active', 1);
                 }
             }
             foreach ($k as $key => $item) {
                 // if type is alias
                 if ($item->type == 'alias') {
                     $aliasToId = $item->params->get('aliasoptions');
                     if (count($path) > 0 && $aliasToId == $path[count($path) - 1]) {
                         $item->set('active', 1);
                     }
                 }
                 // id of item's parent
                 $ipid = $item->get('parent');
                 $ideep = count($item->tree);
                 if (!isset($k[$ipid])) {
                     $root->addChild($item);
                     continue;
                 }
                 //echo "<br>parent is  $ipid";
                 $parentNode = $k[$ipid];
                 $parentNode->addChild($item);
             }
         }
         unset($itemids);
         unset($itemobj);
         $this->menu = $root;
     }
     return $this->menu;
 }
コード例 #2
0
ファイル: ytmenubase.php プロジェクト: educakanchay/educa
 /**
  * Get menu tree for joomla 1.5
  * @return YtMenu object is root of menu tree.
  */
 public function getMenu($params = null)
 {
     if (!isset($this->menu) || isset($params) && !empty($params)) {
         if (isset($params) && !empty($params)) {
             $this->params->bind($params);
         }
         // Initialize variables.
         $app = JFactory::getApplication();
         $sitemenu = $app->getMenu();
         // If no active menu, use default
         $active = $sitemenu->getActive() ? $sitemenu->getActive() : $sitemenu->getDefault();
         $path = $active->tree;
         $start = (int) $this->params->get('startlevel', 0);
         $end = (int) $this->params->get('endlevel', -1);
         $deep = $end - $start + 1;
         $items = $sitemenu->getItems('menutype', $this->params->get('menutype', 'mainmenu'));
         $root = new YtMenu(null, $this->params);
         $k = array();
         if (isset($items) && count($items) > 0) {
             $itemids = array();
             $itemobj = array();
             $smallest_level = 99999;
             foreach ($items as $i => $item) {
                 $iid = $item->id;
                 $itemids[$iid] = 1;
                 $itemobj[$iid] =& $items[$i];
                 if (!isset($item->sublevel)) {
                     if ($smallest_level > $item->level) {
                         $smallest_level = $item->level;
                     }
                 } else {
                     if ($smallest_level > $item->sublevel) {
                         $smallest_level = $item->sublevel;
                     }
                 }
                 //echo "<br>item $iid has tree: (" . implode(",", $item->tree) . ")";
             }
             //echo "<br><h1>$smallest_level</h1>";
             foreach ($items as $i => $item) {
                 // level filter
                 $s_parent_item = false;
                 $spid = $item->tree[0];
                 $iid = $item->id;
                 $ideep = count($item->tree);
                 if (!isset($item->sublevel)) {
                     if ($start > $item->level) {
                         continue;
                     }
                 } else {
                     if ($start > $item->sublevel) {
                         continue;
                     }
                 }
                 // if $deep<=0 ignore endlevel check.
                 if (!isset($item->sublevel)) {
                     if ($deep > 0 && $end < $item->level) {
                         continue;
                     }
                 } else {
                     if ($deep > 0 && $end < $item->sublevel) {
                         continue;
                     }
                 }
                 // if is not child of start level items.
                 if (!isset($item->sublevel)) {
                     if ($deep > 1 && $itemobj[$spid]->level > $smallest_level) {
                         continue;
                     }
                 } else {
                     if ($deep > 1 && $itemobj[$spid]->sublevel > $smallest_level) {
                         continue;
                     }
                 }
                 //echo "<br> New menu item: " . $iid;
                 $k[$iid] = new YtMenu($item, $this->params);
             }
             // set active items
             foreach ($path as $id) {
                 if (isset($k[$id])) {
                     $k[$id]->set('active', 1);
                 }
             }
             foreach ($k as $key => $item) {
                 // if type is alias (value is 'menulink' in Joomla 1.5)
                 //echo "<br>id is  $key";
                 if ($item->type == 'menulink') {
                     $refid = $item->query['Itemid'];
                     $aliasitem = $sitemenu->getItem($refid);
                     if ($aliasitem) {
                         $item->set('_aliasitem', new YtMenu($aliasitem, $this->params));
                     } else {
                         $item->set('_aliasitem', false);
                     }
                     //$item->debug();die();
                 }
                 // id of item's parent
                 $ipid = $item->get('parent');
                 $ideep = count($item->tree);
                 if (!isset($k[$ipid])) {
                     $root->addChild($item);
                     continue;
                 }
                 //echo "<br>parent is  $ipid";
                 $parentNode =& $k[$ipid];
                 $parentNode->addChild($item);
             }
         }
         //$this->dumproot($root);
         //die("<br>[DONE]");
         unset($itemids);
         unset($itemobj);
         $this->menu = $root;
     }
     return $this->menu;
 }