Spaces:
No application file
No application file
| namespace Mautic\CoreBundle\Event; | |
| use Mautic\CoreBundle\Menu\MenuHelper; | |
| use Symfony\Contracts\EventDispatcher\Event; | |
| class MenuEvent extends Event | |
| { | |
| /** | |
| * @var array | |
| */ | |
| protected $menuItems = ['children' => []]; | |
| /** | |
| * @param string $type | |
| */ | |
| public function __construct( | |
| protected MenuHelper $helper, | |
| protected $type = 'main' | |
| ) { | |
| } | |
| public function setMenuItems(array $menuItems): void | |
| { | |
| $this->menuItems = $menuItems; | |
| } | |
| /** | |
| * Add items to the menu. | |
| */ | |
| public function addMenuItems(array $menuItems): void | |
| { | |
| $defaultPriority = $menuItems['priority'] ?? 9999; | |
| $items = $menuItems['items'] ?? $menuItems; | |
| $isRoot = isset($items['name']) && ('root' == $items['name'] || $items['name'] == $items['name']); | |
| if (!$isRoot) { | |
| $this->helper->createMenuStructure($items, 0, $defaultPriority, $this->type); | |
| $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; | |
| } | |
| } | |
| /** | |
| * Return the menu items. | |
| * | |
| * @return array | |
| */ | |
| public function getMenuItems() | |
| { | |
| $this->helper->placeOrphans($this->menuItems['children'], true, 1, $this->type); | |
| $this->helper->sortByPriority($this->menuItems['children']); | |
| $this->helper->resetOrphans($this->type); | |
| return $this->menuItems; | |
| } | |
| /** | |
| * @return string | |
| */ | |
| public function getType() | |
| { | |
| return $this->type; | |
| } | |
| } | |