3 namespace wcf\system\cache\builder
;
5 use wcf\data\menu\item\MenuItemList
;
6 use wcf\data\menu\MenuList
;
9 * Caches menus and menu item node trees.
11 * @author Alexander Ebert
12 * @copyright 2001-2019 WoltLab GmbH
13 * @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
14 * @package WoltLabSuite\Core\System\Cache\Builder
17 class MenuCacheBuilder
extends AbstractCacheBuilder
22 protected function rebuild(array $parameters)
30 $menuList = new MenuList();
31 $menuList->readObjects();
33 $menuItemList = new MenuItemList();
34 $menuItemList->sqlOrderBy
= "menu_item.showOrder";
35 $menuItemList->readObjects();
37 foreach ($menuItemList as $menuItem) {
38 if (!isset($menuItems[$menuItem->menuID
])) {
39 $menuItems[$menuItem->menuID
] = [];
42 $menuItems[$menuItem->menuID
][$menuItem->itemID
] = $menuItem;
45 foreach ($menuList as $menu) {
46 $menuItemList = new MenuItemList();
47 if (!empty($menuItems[$menu->menuID
])) {
48 $menuItemList->setMenuItems($menuItems[$menu->menuID
]);
51 $data['menus'][$menu->menuID
] = $menu;
52 $data['menuItems'][$menu->menuID
] = $menuItemList;
54 if ($menu->identifier
=== 'com.woltlab.wcf.MainMenu') {
55 $data['mainMenuID'] = $menu->menuID
;