/**
  * Returns Silvercart specific menus.
  * 
  * @return ArrayList
  *
  * @author Sascha Koehler <*****@*****.**>,
  *         Sebastian Diel <*****@*****.**>
  * @since 28.02.2013
  */
 public function SilvercartMenus()
 {
     $silvercartMenus = new ArrayList();
     $menuItems = CMSMenu::get_viewable_menu_items();
     $hiddenMenus = SilvercartConfig::getHiddenRegisteredMenus();
     foreach (SilvercartConfig::getRegisteredMenus() as $menu) {
         if (in_array($menu['code'], $hiddenMenus)) {
             continue;
         }
         $modelAdmins = new ArrayList();
         foreach ($menuItems as $code => $menuItem) {
             if (isset($menuItem->controller) && $this->owner->hasMethod('alternateMenuDisplayCheck') && !$this->owner->alternateMenuDisplayCheck($menuItem->controller)) {
                 continue;
             }
             if (empty($menuItem->controller)) {
                 continue;
             }
             if (in_array($menuItem->controller, self::$model_admins_to_ignore)) {
                 continue;
             }
             $menuCode = Config::inst()->get($menuItem->controller, 'menuCode');
             $menuSection = Config::inst()->get($menuItem->controller, 'menuSection');
             $menuSortIndex = Config::inst()->get($menuItem->controller, 'menuSortIndex');
             $url_segment = Config::inst()->get($menuItem->controller, 'url_segment');
             if ($menuCode == $menu['code'] || is_null($menuCode) && $menu['code'] == 'default') {
                 $defaultTitle = LeftAndMain::menu_title_for_class($menuItem->controller);
                 $title = _t("{$menuItem->controller}.MENUTITLE", $defaultTitle);
                 $linkingmode = "";
                 if (strpos($this->owner->Link(), $menuItem->url) !== false) {
                     if ($this->owner->Link() == $menuItem->url) {
                         $linkingmode = "current";
                         // default menu is the one with a blank {@link url_segment}
                     } elseif ($url_segment == '') {
                         if ($this->owner->Link() == $this->owner->stat('url_base') . '/') {
                             $linkingmode = "current";
                         }
                     } else {
                         $linkingmode = "current";
                     }
                 }
                 if (empty($menuSection)) {
                     $menuSection = 'base';
                 }
                 if (empty($menuSortIndex)) {
                     $menuSortIndex = 1000;
                 }
                 $modelAdmins->push(new ArrayData(array("MenuItem" => $menuItem, "Title" => Convert::raw2xml($title), "Code" => $code, 'MenuCode' => $menu['code'], "IsSection" => false, "Section" => $menuSection, "SortIndex" => $menuSortIndex, "Link" => $menuItem->url, "LinkingMode" => $linkingmode)));
                 unset($menuItems[$code]);
             }
         }
         $modelAdmins = $modelAdmins->sort('SortIndex', 'ASC');
         if ($modelAdmins->exists()) {
             $menu['name'] = _t('SilvercartStoreAdminMenu.' . strtoupper($menu['code']), $menu['name']);
             $silvercartMenus->push(new DataObject(array('name' => $menu['name'], 'code' => $menu['code'], 'Code' => $menu['code'], 'ModelAdmins' => $modelAdmins)));
         }
     }
     return $silvercartMenus;
 }