/** * @param IconEvent $event */ public function onFetchIcons(IconEvent $event) { $session = $this->request->getSession(); $icons = $session->get('mautic.menu.icons', []); if (empty($icons)) { $bundles = $this->bundleHelper->getMauticBundles(true); foreach ($bundles as $bundle) { if (!empty($bundle['config']['menu']['main'])) { $items = !isset($bundle['config']['menu']['main']['items']) ? $bundle['config']['menu']['main'] : $bundle['config']['menu']['main']['items']; } if (!empty($items)) { $this->menuHelper->createMenuStructure($items); foreach ($items as $item) { if (isset($item['iconClass']) && isset($item['id'])) { $id = explode('_', $item['id']); if (isset($id[1])) { // some bundle names are in plural, create also singular item if (substr($id[1], -1) == 's') { $event->addIcon(rtrim($id[1], 's'), $item['iconClass']); } $event->addIcon($id[1], $item['iconClass']); } } } } } unset($bundles, $menuHelper); $icons = $event->getIcons(); $session->set('mautic.menu.icons', $icons); } else { $event->setIcons($icons); } }
/** * Add items to the menu * * @param array $menuItems * * @return void */ public function addMenuItems(array $menuItems) { $defaultPriority = isset($menuItems['priority']) ? $menuItems['priority'] : 9999; $items = isset($menuItems['items']) ? $menuItems['items'] : $menuItems; $isRoot = isset($items['name']) && ($items['name'] == 'root' || $items['name'] == 'admin'); if (!$isRoot) { $this->helper->createMenuStructure($items, 0, $defaultPriority); $this->menuItems['children'] = array_merge_recursive($this->menuItems['children'], $items); } else { //make sure the root does not override the children if (isset($this->menuItems['children'])) { if (isset($items['children'])) { $items['children'] = array_merge_recursive($this->menuItems['children'], $items['children']); } else { $items['children'] = $this->menuItems['children']; } } $this->menuItems = $items; } }