<?php
/**
* Manage Menu
*
* @author Vincent van Waasbergen <v.vanwaasbergen@visualmedia.nl>
*/
namespace VisualMedia\LisaBundle\Menu;
use VisualMedia\LisaBundle\Component\Menu;
use VisualMedia\LisaBundle\Menu\MenuItem\ContentMenuItem;
use VisualMedia\LisaBundle\Menu\MenuItem\CustomMenuItem;
use VisualMedia\LisaBundle\Menu\MenuItem\SettingsMenuItem;
use VisualMedia\LisaBundle\Menu\MenuItem\TestMenuItem;
use VisualMedia\LisaBundle\Menu\MenuItem\WebshopMenuItem;
/**
* Manage Menu
*
* Menu used throughout Lisa.
*/
class ManageMenu extends Menu
{
/**
* {@inheritdoc}
*/
public function transform(): void
{
uasort($this->items, function($a, $b) {
return ($a::$ordering < $b::$ordering) ? -1 : 1;
});
$transformed = array();
foreach ($this->items as $menu) {
$menuItemOrdering = array();
$transformed[$menu->getKey()] = $this->extractMenuItem($menu->getKey());
if ($menu->getChildren() != null) {
foreach ($menu->getChildren() as $menuItems) {
if ($menuItems::$isActive) {
$menuItemOrdering[$menuItems::KEY] = $menuItems;
}
}
uasort($menuItemOrdering, function($a, $b) {
return ($a::$ordering < $b::$ordering) ? -1 : 1;
});
$transformed[$menu->getKey()] = $this->extractMenuItem($menu->getKey())->setChildren($menuItemOrdering);
}
}
$this->cleanItems($transformed);
if (null !== $webshop = $transformed[WebshopMenuItem::KEY] ?? null) {
if (empty($webshop->getChildren())) {
unset($transformed[WebshopMenuItem::getKey()]);
}
}
$this->setItems($transformed);
parent::transform();
}
}