vendor/ibexa/activity-log/src/bundle/Event/Menu/MainMenuSubscriber.php line 37

Open in your IDE?
  1. <?php
  2. /**
  3.  * @copyright Copyright (C) Ibexa AS. All rights reserved.
  4.  * @license For full copyright and license information view LICENSE file distributed with this source code.
  5.  */
  6. declare(strict_types=1);
  7. namespace Ibexa\Bundle\ActivityLog\Event\Menu;
  8. use Ibexa\ActivityLog\Permission\PolicyProvider;
  9. use Ibexa\AdminUi\Menu\Event\ConfigureMenuEvent;
  10. use Ibexa\AdminUi\Menu\MainMenuBuilder;
  11. use Ibexa\Contracts\Core\Repository\PermissionResolver;
  12. use JMS\TranslationBundle\Model\Message;
  13. use JMS\TranslationBundle\Translation\TranslationContainerInterface;
  14. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  15. final class MainMenuSubscriber implements EventSubscriberInterfaceTranslationContainerInterface
  16. {
  17.     public const ITEM_ACTIVITY_LOG_LIST 'main__activity_log_list';
  18.     private PermissionResolver $permissionResolver;
  19.     public function __construct(PermissionResolver $permissionResolver)
  20.     {
  21.         $this->permissionResolver $permissionResolver;
  22.     }
  23.     public static function getSubscribedEvents(): array
  24.     {
  25.         return [
  26.             ConfigureMenuEvent::MAIN_MENU => ['onConfigureMainMenu'],
  27.         ];
  28.     }
  29.     public function onConfigureMainMenu(ConfigureMenuEvent $event): void
  30.     {
  31.         $menu $event->getMenu();
  32.         $adminMenu $menu->getChild(MainMenuBuilder::ITEM_ADMIN);
  33.         if ($adminMenu === null) {
  34.             return;
  35.         }
  36.         if ($this->permissionResolver->hasAccess(PolicyProvider::MODULE_ACTIVITY_LOG'read') === false) {
  37.             return;
  38.         }
  39.         $adminMenu->addChild(self::ITEM_ACTIVITY_LOG_LIST, [
  40.             'route' => 'ibexa.activity_log.list',
  41.             'extras' => [
  42.                 'orderNumber' => 70,
  43.             ],
  44.         ]);
  45.     }
  46.     public static function getTranslationMessages(): array
  47.     {
  48.         return [
  49.             (new Message(self::ITEM_ACTIVITY_LOG_LIST'ibexa_menu'))->setDesc('Recent activity'),
  50.         ];
  51.     }
  52. }