protected function display_menus(Template $template) { $menus = MenusCache::load()->get_menus(); $columns_disabled = ThemesManager::get_theme(AppContext::get_current_user()->get_theme())->get_columns_disabled(); foreach ($menus as $cached_menu) { $menu = $cached_menu->get_menu(); if ($menu->check_auth() && !$columns_disabled->menus_column_is_disabled($menu->get_block())) { $display = false; $filters = $menu->get_filters(); $nbr_filters = count($filters); foreach ($filters as $filter) { if ($nbr_filters > 1 && $filter->get_pattern() != '/' || $filter->match() && !$display) { $display = true; } } if ($display) { $menu_content = $cached_menu->has_cached_string() ? $cached_menu->get_cached_string() : $menu->display(); $block = $menu->get_block(); switch ($block) { case Menu::BLOCK_POSITION__HEADER: $template->put('C_MENUS_HEADER_CONTENT', true); $template->assign_block_vars('menus_header', array('MENU' => $menu_content)); break; case Menu::BLOCK_POSITION__SUB_HEADER: $template->put('C_MENUS_SUB_HEADER_CONTENT', true); $template->assign_block_vars('menus_sub_header', array('MENU' => $menu_content)); break; case Menu::BLOCK_POSITION__LEFT: $template->put('C_MENUS_LEFT_CONTENT', true); $template->assign_block_vars('menus_left', array('MENU' => $menu_content)); break; case Menu::BLOCK_POSITION__RIGHT: $template->put('C_MENUS_RIGHT_CONTENT', true); $template->assign_block_vars('menus_right', array('MENU' => $menu_content)); break; case Menu::BLOCK_POSITION__TOP_CENTRAL: $template->put('C_MENUS_TOPCENTRAL_CONTENT', true); $template->assign_block_vars('menus_top_central', array('MENU' => $menu_content)); break; case Menu::BLOCK_POSITION__BOTTOM_CENTRAL: $template->put('C_MENUS_BOTTOM_CENTRAL_CONTENT', true); $template->assign_block_vars('menus_bottom_central', array('MENU' => $menu_content)); break; case Menu::BLOCK_POSITION__TOP_FOOTER: $template->put('C_MENUS_TOP_FOOTER_CONTENT', true); $template->assign_block_vars('menus_top_footer', array('MENU' => $menu_content)); break; case Menu::BLOCK_POSITION__FOOTER: $template->put('C_MENUS_FOOTER_CONTENT', true); $template->assign_block_vars('menus_footer', array('MENU' => $menu_content)); } } } } }
/** * @desc Generate the cache */ public static function generate_cache() { MenusCache::invalidate(); }