/**
  * Register the service provider.
  *
  * @return  void
  */
 public function register()
 {
     $this->app['pathway'] = function ($app) {
         $trail = new Trail();
         if ($app->has('menu')) {
             $menu = $app['menu'];
             if ($item = $menu->getActive()) {
                 $menus = $menu->getMenu();
                 $home = $menu->getDefault();
                 if (is_object($home) && $item->id != $home->id) {
                     foreach ($item->tree as $menupath) {
                         $url = '';
                         $link = $menu->getItem($menupath);
                         switch ($link->type) {
                             case 'separator':
                                 $url = null;
                                 break;
                             case 'url':
                                 if (strpos($link->link, 'index.php?') === 0 && strpos($link->link, 'Itemid=') === false) {
                                     // If this is an internal link, ensure the Itemid is set.
                                     $url = $link->link . '&Itemid=' . $link->id;
                                 } else {
                                     $url = $link->link;
                                 }
                                 break;
                             case 'alias':
                                 // If this is an alias use the item id stored in the parameters to make the link.
                                 $url = 'index.php?Itemid=' . $link->params->get('aliasoptions');
                                 break;
                             default:
                                 /*$router = App::get('router');
                                 		if ($router->getMode() == $router::MODE_SEF)
                                 		{*/
                                 $url = 'index.php?Itemid=' . $link->id;
                                 /*}
                                 		else {
                                 			$url .= $link->link . '&Itemid=' . $link->id;
                                 		}*/
                                 break;
                         }
                         $trail->append($menus[$menupath]->title, $url);
                     }
                 }
             }
         }
         return $trail;
     };
 }
예제 #2
0
 /**
  * Tests:
  *  1. the names() method returns an array
  *  2. the number of items in the array matches the number of items added
  *  3. the array returned contains just the names of the items added
  *
  * @return  void
  **/
 public function testClear()
 {
     $pathway = new Trail();
     $pathway->append('Crumb 1', 'index.php?option=com_lorem');
     $pathway->append('Crumb 2', 'index.php?option=com_ipsum');
     $pathway->clear();
     $items = $pathway->items();
     $this->assertTrue(empty($items), 'items() should return an empty array after calling clear()');
 }