MenuBuilderListener.php 1.74 KB
<?php

// src/EventListener/MenuBuilderListener.php

namespace App\EventListener;

use App\Entity\GlobalParameter;
use App\Entity\SolidoumeParameter;
use Doctrine\ORM\EntityManagerInterface;
use Knp\Menu\Util\MenuManipulator;
use Sonata\AdminBundle\Event\ConfigureMenuEvent;

final class MenuBuilderListener
{
    private $em;

    public function __construct(EntityManagerInterface $em)
    {
        $this->em = $em;
    }

    public function addMenuItems(ConfigureMenuEvent $event): void
    {
        $menu = $event->getMenu();

        $useHelloasso = $this->em->getRepository(GlobalParameter::class)->val(GlobalParameter::USE_HELLOASSO);
        if ('true' == $useHelloasso) {
            $child = $menu->addChild('helloasso', [
                'label' => 'HelloAsso',
                'route' => 'helloasso_list',
            ])->setExtras([
                'icon' => '<i class="fa fa-bookmark-o"></i>',
            ]);
            $manipulator = new MenuManipulator();
            $manipulator->moveToPosition($child, 7);
        }

        $useSolidoume = $this->em->getRepository(GlobalParameter::class)->val(GlobalParameter::USE_SOLIDOUME);
        $soliParam = $this->em->getRepository(SolidoumeParameter::class)->findTheOne();
        $name = 'Sécurité sociale alimentaire';
        if (!empty($soliParam)) {
            $name = $soliParam->getName();
        }
        if ('true' == $useSolidoume) {
            $childS = $menu->addChild('solidoume', [
                'label' => $name,
                'route' => 'solidoume_list',
            ])->setExtras([
                'icon' => '<i class="fa fa-handshake-o"></i>',
            ]);
            $manipulator = new MenuManipulator();
            $manipulator->moveToPosition($childS, 8);
        }
    }
}