Apply PSR-12 code style (#3886)
[GitHub/WoltLab/WCF.git] / wcfsetup / install / files / lib / system / cache / builder / MenuCacheBuilder.class.php
1 <?php
2
3 namespace wcf\system\cache\builder;
4
5 use wcf\data\menu\item\MenuItemList;
6 use wcf\data\menu\MenuList;
7
8 /**
9 * Caches menus and menu item node trees.
10 *
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
15 * @since 3.0
16 */
17 class MenuCacheBuilder extends AbstractCacheBuilder
18 {
19 /**
20 * @inheritDoc
21 */
22 protected function rebuild(array $parameters)
23 {
24 $data = [
25 'mainMenuID' => null,
26 'menus' => [],
27 'menuItems' => [],
28 ];
29
30 $menuList = new MenuList();
31 $menuList->readObjects();
32
33 $menuItemList = new MenuItemList();
34 $menuItemList->sqlOrderBy = "menu_item.showOrder";
35 $menuItemList->readObjects();
36 $menuItems = [];
37 foreach ($menuItemList as $menuItem) {
38 if (!isset($menuItems[$menuItem->menuID])) {
39 $menuItems[$menuItem->menuID] = [];
40 }
41
42 $menuItems[$menuItem->menuID][$menuItem->itemID] = $menuItem;
43 }
44
45 foreach ($menuList as $menu) {
46 $menuItemList = new MenuItemList();
47 if (!empty($menuItems[$menu->menuID])) {
48 $menuItemList->setMenuItems($menuItems[$menu->menuID]);
49 }
50
51 $data['menus'][$menu->menuID] = $menu;
52 $data['menuItems'][$menu->menuID] = $menuItemList;
53
54 if ($menu->identifier === 'com.woltlab.wcf.MainMenu') {
55 $data['mainMenuID'] = $menu->menuID;
56 }
57 }
58
59 return $data;
60 }
61 }