/**
  * Construit les diff�rents menus de la page courante
  */
 private function _buildMenus()
 {
     $host = $this->request->host();
     // R�cup�ration du host actuel, ex : www.monsite.fr
     $reducer = function ($output, $value) {
         $output[0] = $value->locale;
         // On ajoute la locale du host
         if (!is_null($value->fallback)) {
             $output[1] = $value->fallback->locale;
             // On ajoute la locale du language de fallback du host
         }
         return $output;
     };
     $this->I18ns = TableRegistry::get('BoxManager.I18ns');
     $i18ns = $this->I18ns->find('all', ['conditions' => ['OR' => ['I18ns.domain' => $host, 'I18ns.alias' => $host]], 'contain' => ['Fallback']])->reduce($reducer, []);
     // @TODO : Revoir la récupération du code menu
     $reducer = function ($output, $value) {
         $output[MenuTrait::getRawMenu($value->menu_id)] = $value->menuitems;
         return $output;
     };
     $this->Menus = TableRegistry::get("BoxManager.Menus");
     $menus = $this->Menus->find('all', ['contain' => ['Menuitems' => function ($query) use($i18ns) {
         return $query->find('translations', ['locales' => $i18ns]);
     }]])->reduce($reducer, []);
     $this->set(compact('menus'));
 }
Example #2
0
 public function build($items, $code, $type = self::MENU_SIMPLE)
 {
     return $this->_menuSimple($items[MenuTrait::getRawMenu($code)]);
 }