src/Component/AdminMenu/EventSubscriber/ContentMenuSubscriber.php line 53

Open in your IDE?
  1. <?php
  2. namespace App\Component\AdminMenu\EventSubscriber;
  3. use App\Component\AdminMenu\Event\AbstractBuildMenuEvent;
  4. use App\Component\AdminMenu\MenuBuilder;
  5. use App\Component\UserRole\Permission\UserRolePermission;
  6. use App\Dto\MenuItem;
  7. use App\Entity\Background;
  8. use App\Entity\Blog;
  9. use App\Entity\Calendar;
  10. use App\Entity\CustomTranslation;
  11. use App\Entity\DynamicForm;
  12. use App\Entity\Event;
  13. use App\Entity\EventAttribute;
  14. use App\Entity\Faq;
  15. use App\Entity\Gallery;
  16. use App\Entity\GdprStatement;
  17. use App\Entity\Grid;
  18. use App\Entity\HarverExperience;
  19. use App\Entity\Hero;
  20. use App\Entity\Invoice;
  21. use App\Entity\Location;
  22. use App\Entity\LogoSlider;
  23. use App\Entity\MegaMenuItem;
  24. use App\Entity\MultiMedia;
  25. use App\Entity\MultiPoster;
  26. use App\Entity\Order;
  27. use App\Entity\OrderFields;
  28. use App\Entity\Page;
  29. use App\Entity\Person;
  30. use App\Entity\Portfolio;
  31. use App\Entity\Product;
  32. use App\Entity\QR;
  33. use App\Entity\Review;
  34. use App\Entity\Sample;
  35. use App\Entity\SiteBlock;
  36. use App\Entity\SocialWall;
  37. use App\Entity\Testimonial;
  38. use App\Entity\USP;
  39. use App\Entity\VacancyUsp;
  40. use App\Entity\WebServiceApiKey;
  41. use App\EventListener\FeatureFlagListener;
  42. use Knp\Menu\ItemInterface;
  43. class ContentMenuSubscriber extends AbstractMenuBuildEventSubscriber
  44. {
  45.     protected static int $priority = -10;
  46.     /**
  47.      * @throws \Exception
  48.      */
  49.     public function buildMenu(AbstractBuildMenuEvent $event)
  50.     {
  51.         $menuBuilder $this->getMenuBuilder($event->getMenu());
  52.         $menuBuilder->addMainItem('Content''fal fa-copy');
  53.         /** @var ItemInterface $contentItem */
  54.         $contentItem $menuBuilder->getCurrentContext();
  55.         $menuBuilder->addOverlay()
  56.             ->addSection('Manage content');
  57.         $contentItemContainer $menuBuilder->getCurrentContext();
  58.         $contentDto = new MenuItem($contentItem$contentItemContainer);
  59.         $this->addPagesMenu($menuBuilder);
  60.         $this->addBlogMenu($menuBuilder);
  61.         $this->addTestimonialsMenu($menuBuilder);
  62.         $this->addUspMenu($menuBuilder);
  63.         $this->addMediaMenu($menuBuilder);
  64.         $this->addFAQMenu($menuBuilder);
  65.         $this->addEventMenu($menuBuilder);
  66.         $this->addPortfolioMenu($menuBuilder);
  67.         $this->addReviewsMenu($menuBuilder);
  68.         $this->addEcommerceMenu($menuBuilder);
  69.         $this->addHarverMenu($menuBuilder);
  70.         $this->addPersonsMenu($menuBuilder);
  71.         $this->addMiscellaneousMenu($menuBuilder);
  72.         $contentDto->close();
  73.     }
  74.     private function addPagesMenu(MenuBuilder $menuBuilder)
  75.     {
  76.         if (
  77.             $this->hasAccess(['ROLE_ADMIN_USER', [UserRolePermission::MASK_VIEWPage::class]])
  78.             && $this->checkFeatures([FeatureFlagListener::FEATURE_PAGES])
  79.         ) {
  80.             $menuBuilder
  81.                 ->addColumn('Pages''fal fa-copy')
  82.                 ->addItem('Create page''page_create')
  83.                 ->addItem('View menu''pages')
  84.                 ->addItem('Deleted''admin_page_deleted')
  85.                 ->end();
  86.         }
  87.     }
  88.     private function addBlogMenu(MenuBuilder $menuBuilder)
  89.     {
  90.         if (
  91.             $this->hasAccess(['ROLE_ADMIN_USER', [UserRolePermission::MASK_VIEWBlog::class]])
  92.             && $this->checkFeatures([FeatureFlagListener::FEATURE_BLOG])
  93.         ) {
  94.             $menuBuilder
  95.                 ->addColumn('Blogs''fal fa-newspaper')
  96.                 ->addItem('Create article''blog_create')
  97.                 ->addItem('View articles''admin_blogs')
  98.                 ->addItem('Categories''admin_categories')
  99.                 ->end();
  100.         }
  101.     }
  102.     private function addTestimonialsMenu(MenuBuilder $menuBuilder)
  103.     {
  104.         if (
  105.             $this->hasAccess(['ROLE_ADMIN_USER', [UserRolePermission::MASK_VIEWTestimonial::class]])
  106.             && $this->checkFeatures([FeatureFlagListener::FEATURE_TESTIMONIAL])
  107.         ) {
  108.             $menuBuilder
  109.                 ->addColumn('Testimonials''fal fa-comments')
  110.                 ->addItem('Create testimonial''admin_testimonial_create')
  111.                 ->addItem('View testimonials''admin_testimonials')
  112.                 ->addItem('Testimonial categories''admin_testimonial_categories')
  113.                 ->addItem('View testimonial attributes''admin_testimonial_attribute_index')
  114.                 ->end();
  115.         }
  116.     }
  117.     private function addUspMenu(MenuBuilder $menuBuilder)
  118.     {
  119.         if (
  120.             (
  121.                 !$this->hasAccess(['ROLE_ADMIN_USER', [UserRolePermission::MASK_VIEWUSP::class]])
  122.                 && !$this->hasAccess(['ROLE_ADMIN_USER', [UserRolePermission::MASK_VIEWVacancyUsp::class]])
  123.             )
  124.             || !$this->checkFeatures([FeatureFlagListener::FEATURE_USPFeatureFlagListener::FEATURE_VACANCY_USPS])
  125.         ) {
  126.             return;
  127.         }
  128.         $menuBuilder
  129.             ->addColumn("USP's"'fal fa-check-circle');
  130.         if (
  131.             $this->hasAccess(['ROLE_ADMIN_USER', [UserRolePermission::MASK_VIEWUSP::class]])
  132.             && $this->checkFeatures([FeatureFlagListener::FEATURE_USP])
  133.         ) {
  134.             $menuBuilder
  135.                 ->addItem('Create USP''admin_usp_create')
  136.                 ->addItem("View USP's"'admin_usps')
  137.                 ->addItem('Categories''admin_option_value_usps');
  138.         }
  139.         if (
  140.             $this->hasAccess(['ROLE_ADMIN_USER', [UserRolePermission::MASK_VIEWVacancyUsp::class]])
  141.             && $this->checkFeatures([FeatureFlagListener::FEATURE_VACANCY_USPS])
  142.         ) {
  143.             $menuBuilder
  144.                 ->addItem("Vacancy USP's"'admin_vacancy_usps');
  145.         }
  146.         $menuBuilder->end();
  147.     }
  148.     private function addMediaMenu(MenuBuilder $menuBuilder)
  149.     {
  150.         if (
  151.             (
  152.                 !$this->hasAccess(['ROLE_ADMIN_USER', [UserRolePermission::MASK_VIEWGallery::class]])
  153.                 && !$this->hasAccess(['ROLE_ADMIN_USER', [UserRolePermission::MASK_VIEWMultiMedia::class]])
  154.                 && !$this->hasAccess(['ROLE_ADMIN_USER', [UserRolePermission::MASK_VIEWLogoSlider::class]])
  155.             )
  156.             || !$this->checkFeatures(
  157.                 [
  158.                     FeatureFlagListener::FEATURE_GALLERY,
  159.                     FeatureFlagListener::FEATURE_MULTI_MEDIA,
  160.                     FeatureFlagListener::FEATURE_LOGO_SLIDER,
  161.                 ]
  162.             )
  163.         ) {
  164.             return;
  165.         }
  166.         $menuBuilder
  167.             ->addColumn('Media''fal fa-images');
  168.         if (
  169.             $this->hasAccess(['ROLE_ADMIN_USER', [UserRolePermission::MASK_VIEWMultiMedia::class]])
  170.             && $this->checkFeatures([FeatureFlagListener::FEATURE_MULTI_MEDIA])
  171.         ) {
  172.             $menuBuilder
  173.                 ->addItem('Create multimedia''admin_multi_media_create')
  174.                 ->addItem('View multimedia''admin_multi_media_index');
  175.         }
  176.         if (
  177.             $this->hasAccess(['ROLE_ADMIN_USER', [UserRolePermission::MASK_VIEWGallery::class]])
  178.             && $this->checkFeatures([FeatureFlagListener::FEATURE_GALLERY])
  179.         ) {
  180.             $menuBuilder
  181.                 ->addItem('Media gallery''admin_content_gallery_index');
  182.         }
  183.         if (
  184.             $this->hasAccess(['ROLE_ADMIN_USER', [UserRolePermission::MASK_VIEWLogoSlider::class]])
  185.             && $this->checkFeatures([FeatureFlagListener::FEATURE_LOGO_SLIDER])
  186.         ) {
  187.             $menuBuilder
  188.                 ->addItem('Logo sliders''admin_logoslider');
  189.         }
  190.         $menuBuilder->end();
  191.     }
  192.     private function addFAQMenu(MenuBuilder $menuBuilder)
  193.     {
  194.         if (
  195.             $this->hasAccess(['ROLE_ADMIN_USER', [UserRolePermission::MASK_VIEWFaq::class]])
  196.             && $this->checkFeatures([FeatureFlagListener::FEATURE_FAQ])
  197.         ) {
  198.             $menuBuilder
  199.                 ->addColumn('FAQ''fal fa-question')
  200.                 ->addItem('Create FAQ''admin_faq_create')
  201.                 ->addItem('View FAQs''admin_faqs')
  202.                 ->addItem('FAQ categories''admin_faqs_categories')
  203.                 ->end();
  204.         }
  205.     }
  206.     private function addEventMenu(MenuBuilder $menuBuilder)
  207.     {
  208.         if (
  209.             (
  210.                 !$this->hasAccess(['ROLE_ADMIN_USER', [UserRolePermission::MASK_VIEWEvent::class]])
  211.                 && !$this->hasAccess(['ROLE_ADMIN_USER', [UserRolePermission::MASK_VIEWLocation::class]])
  212.                 && !$this->hasAccess(['ROLE_ADMIN_USER', [UserRolePermission::MASK_VIEWEventAttribute::class]])
  213.             )
  214.             || !$this->checkFeatures(
  215.                 [
  216.                     FeatureFlagListener::FEATURE_EVENTS,
  217.                     FeatureFlagListener::FEATURE_LOCATIONS,
  218.                 ]
  219.             )
  220.         ) {
  221.             return;
  222.         }
  223.         $menuBuilder->addColumn('Events''fal fa-calendar-star');
  224.         if (
  225.             $this->hasAccess(['ROLE_ADMIN_USER', [UserRolePermission::MASK_VIEWEvent::class]])
  226.             && $this->checkFeatures([FeatureFlagListener::FEATURE_EVENTS])
  227.         ) {
  228.             $menuBuilder
  229.                 ->addItem('Create event''event_create')
  230.                 ->addItem('View events''admin_event')
  231.                 ->addItem('Event registrations''admin_registrations')
  232.                 ->addItem('Event categories''admin_event_categories')
  233.                 ->addItem('Searchfilters''admin_event_search_filter_index');
  234.         }
  235.         if (
  236.             $this->hasAccess(['ROLE_ADMIN_USER', [UserRolePermission::MASK_VIEWLocation::class]])
  237.             && $this->checkFeatures([FeatureFlagListener::FEATURE_LOCATIONS])
  238.         ) {
  239.             $menuBuilder
  240.                 ->addItem('Locations''admin_event_location');
  241.         }
  242.         if ($this->hasAccess(['ROLE_ADMIN_USER', [UserRolePermission::MASK_VIEWEventAttribute::class]])) {
  243.             $menuBuilder
  244.                 ->addItem('Event attributes''admin_event_attribute_index');
  245.         }
  246.         $menuBuilder->end();
  247.     }
  248.     private function addPortfolioMenu(MenuBuilder $menuBuilder)
  249.     {
  250.         if (
  251.             $this->hasAccess(['ROLE_ADMIN_USER', [UserRolePermission::MASK_VIEWPortfolio::class]])
  252.             && $this->checkFeatures([FeatureFlagListener::FEATURE_PORTFOLIO])
  253.         ) {
  254.             $menuBuilder
  255.                 ->addColumn('Portfolio''fal fa-clone')
  256.                 ->addItem('Create portfolio item''admin_portfolio_create')
  257.                 ->addItem('View portfolio''admin_portfolio')
  258.                 ->end();
  259.         }
  260.     }
  261.     private function addReviewsMenu(MenuBuilder $menuBuilder)
  262.     {
  263.         if (
  264.             $this->hasAccess(['ROLE_ADMIN_USER', [UserRolePermission::MASK_VIEWReview::class]])
  265.             && $this->checkFeatures([FeatureFlagListener::FEATURE_REVIEW])
  266.         ) {
  267.             $menuBuilder
  268.                 ->addColumn('Reviews''fal fa-star')
  269.                 ->addItem('View reviews''admin_review')
  270.                 ->addItem('Review form''admin_review_form')
  271.                 ->end();
  272.         }
  273.     }
  274.     private function addEcommerceMenu(MenuBuilder $menuBuilder)
  275.     {
  276.         if (
  277.             (
  278.                 !$this->hasAccess(['ROLE_ADMIN_USER', [UserRolePermission::MASK_VIEWProduct::class]])
  279.                 && !$this->hasAccess(['ROLE_ADMIN_USER', [UserRolePermission::MASK_VIEWSample::class]])
  280.                 && !$this->hasAccess(['ROLE_ADMIN_USER', [UserRolePermission::MASK_VIEWOrder::class]])
  281.                 && !$this->hasAccess(['ROLE_ADMIN_USER', [UserRolePermission::MASK_VIEWOrderFields::class]])
  282.                 && !$this->hasAccess(['ROLE_ADMIN_USER', [UserRolePermission::MASK_VIEWInvoice::class]])
  283.             )
  284.             || !$this->checkFeatures(
  285.                 [
  286.                     FeatureFlagListener::FEATURE_PRODUCT,
  287.                     FeatureFlagListener::FEATURE_SAMPLE,
  288.                     FeatureFlagListener::FEATURE_ORDER,
  289.                     FeatureFlagListener::FEATURE_ORDER_FIELDS,
  290.                     FeatureFlagListener::FEATURE_INVOICE,
  291.                     FeatureFlagListener::FEATURE_SHOPPING_ASSISTANT,
  292.                 ]
  293.             )
  294.         ) {
  295.             return;
  296.         }
  297.         $menuBuilder->addColumn('E-commerce''fal fa-box-open');
  298.         if (
  299.             $this->hasAccess(['ROLE_ADMIN_USER', [UserRolePermission::MASK_VIEWProduct::class]])
  300.             && $this->checkFeatures([FeatureFlagListener::FEATURE_PRODUCT])
  301.         ) {
  302.             $menuBuilder
  303.                 ->addItem('Products''admin_product');
  304.         }
  305.         if (
  306.             $this->hasAccess(['ROLE_ADMIN_USER', [UserRolePermission::MASK_VIEWSample::class]])
  307.             && $this->checkFeatures([FeatureFlagListener::FEATURE_SAMPLE])
  308.         ) {
  309.             $menuBuilder
  310.                 ->addItem('Samples''admin_samples');
  311.         }
  312.         if (
  313.             $this->hasAccess(['ROLE_ADMIN_USER', [UserRolePermission::MASK_VIEWOrder::class]])
  314.             && $this->checkFeatures([FeatureFlagListener::FEATURE_ORDER])
  315.         ) {
  316.             $menuBuilder
  317.                 ->addItem('View orders''admin_order_index');
  318.         }
  319.         if (
  320.             $this->hasAccess(['ROLE_ADMIN_USER', [UserRolePermission::MASK_VIEWOrderFields::class]])
  321.             && $this->checkFeatures([FeatureFlagListener::FEATURE_ORDER_FIELDS])
  322.         ) {
  323.             $menuBuilder
  324.                 ->addItem('Order form''order_fields_edit');
  325.         }
  326.         if (
  327.             $this->hasAccess(['ROLE_ADMIN_USER', [UserRolePermission::MASK_VIEWInvoice::class]])
  328.             && $this->checkFeatures([FeatureFlagListener::FEATURE_INVOICE])
  329.         ) {
  330.             $menuBuilder
  331.                 ->addItem('Invoices''admin_invoice_index');
  332.         }
  333.         if ($this->checkFeatures([FeatureFlagListener::FEATURE_SHOPPING_ASSISTANT])) {
  334.             $menuBuilder
  335.                 ->addItem('Shopping assistant questions''admin_shopping_assistant_question_overview')
  336.                 ->addItem('Shopping assistant answers''admin_shopping_assistant_answer_overview');
  337.         }
  338.         $menuBuilder->end();
  339.     }
  340.     private function addHarverMenu(MenuBuilder $menuBuilder)
  341.     {
  342.         if (
  343.             $this->hasAccess(['ROLE_ADMIN_USER', [UserRolePermission::MASK_VIEWHarverExperience::class]])
  344.             && $this->checkFeatures([FeatureFlagListener::FEATURE_HARVER])
  345.         ) {
  346.             $menuBuilder
  347.                 ->addColumn('Harver''fal fa-chart-network')
  348.                 ->addItem('Experiences''admin_harver_experience_index')
  349.                 ->end();
  350.         }
  351.     }
  352.     private function addMiscellaneousMenu(MenuBuilder $menuBuilder)
  353.     {
  354.         if (
  355.             (
  356.                 !$this->hasAccess(['ROLE_ADMIN_USER', [UserRolePermission::MASK_VIEWSiteBlock::class]])
  357.                 && !$this->hasAccess(['ROLE_ADMIN_USER', [UserRolePermission::MASK_VIEWHero::class]])
  358.                 && !$this->hasAccess(['ROLE_ADMIN_USER', [UserRolePermission::MASK_VIEWMegaMenuItem::class]])
  359.                 && !$this->hasAccess(['ROLE_ADMIN_USER', [UserRolePermission::MASK_VIEWGrid::class]])
  360.                 && !$this->hasAccess(['ROLE_ADMIN_USER', [UserRolePermission::MASK_VIEWBackground::class]])
  361.                 && !$this->hasAccess(['ROLE_ADMIN_USER', [UserRolePermission::MASK_VIEWQR::class]])
  362.                 && !$this->hasAccess(['ROLE_ADMIN_USER', [UserRolePermission::MASK_VIEWMultiPoster::class]])
  363.                 && !$this->hasAccess(['ROLE_ADMIN_USER', [UserRolePermission::MASK_VIEWWebServiceApiKey::class]])
  364.                 && !$this->hasAccess(['ROLE_ADMIN_USER', [UserRolePermission::MASK_VIEWGdprStatement::class]])
  365.                 && !$this->hasAccess(['ROLE_ADMIN_USER', [UserRolePermission::MASK_VIEWCustomTranslation::class]])
  366.                 && !$this->hasAccess(['ROLE_ADMIN_USER', [UserRolePermission::MASK_VIEWDynamicForm::class]])
  367.                 && !$this->hasAccess(['ROLE_ADMIN_USER', [UserRolePermission::MASK_VIEWSocialWall::class]])
  368.                 && !$this->hasAccess(['ROLE_ADMIN_USER', [UserRolePermission::MASK_VIEWCalendar::class]])
  369.             )
  370.             || !$this->checkFeatures(
  371.                 [
  372.                     FeatureFlagListener::FEATURE_SITE_BLOCKS,
  373.                     FeatureFlagListener::FEATURE_HERO,
  374.                     FeatureFlagListener::FEATURE_MEGA_MENU,
  375.                     FeatureFlagListener::FEATURE_GRID,
  376.                     FeatureFlagListener::FEATURE_BACKGROUND,
  377.                     FeatureFlagListener::FEATURE_QR,
  378.                     FeatureFlagListener::FEATURE_WEBSERVICE,
  379.                     FeatureFlagListener::FEATURE_GDPR,
  380.                     FeatureFlagListener::FEATURE_CUSTOM_TRANSLATIONS,
  381.                     FeatureFlagListener::FEATURE_FORM_BUILDER,
  382.                     FeatureFlagListener::FEATURE_SOCIAL_WALL,
  383.                     FeatureFlagListener::FEATURE_CALENDAR,
  384.                 ]
  385.             )
  386.         ) {
  387.             return;
  388.         }
  389.         $menuBuilder->addColumn('Other''fal fa-globe');
  390.         if (
  391.             $this->hasAccess(['ROLE_ADMIN_USER', [UserRolePermission::MASK_VIEWCustomTranslation::class]])
  392.             && $this->checkFeatures([FeatureFlagListener::FEATURE_CUSTOM_TRANSLATIONS])
  393.         ) {
  394.             $menuBuilder->addItem('Translations''admin_custom_translation_index');
  395.         }
  396.         if (
  397.             $this->hasAccess(['ROLE_ADMIN_USER', [UserRolePermission::MASK_VIEWSiteBlock::class]])
  398.             && $this->checkFeatures([FeatureFlagListener::FEATURE_SITE_BLOCKS])
  399.         ) {
  400.             $menuBuilder->addItem('Site blocks''admin_siteblocks_overview');
  401.         }
  402.         if (
  403.             $this->hasAccess(['ROLE_ADMIN_USER', [UserRolePermission::MASK_VIEWHero::class]])
  404.             && $this->checkFeatures([FeatureFlagListener::FEATURE_HERO])
  405.         ) {
  406.             $menuBuilder->addItem('Hero''admin_hero_index');
  407.         }
  408.         if (
  409.             $this->hasAccess(['ROLE_ADMIN_USER', [UserRolePermission::MASK_VIEWMegaMenuItem::class]])
  410.             && $this->checkFeatures([FeatureFlagListener::FEATURE_MEGA_MENU])
  411.         ) {
  412.             $menuBuilder->addItem('Mega menu''admin_mega_menu');
  413.         }
  414.         if (
  415.             $this->hasAccess(['ROLE_ADMIN_USER', [UserRolePermission::MASK_VIEWGrid::class]])
  416.             && $this->checkFeatures([FeatureFlagListener::FEATURE_GRID])
  417.         ) {
  418.             $menuBuilder->addItem('Grid''grid_index');
  419.         }
  420.         if (
  421.             $this->hasAccess(['ROLE_ADMIN_USER', [UserRolePermission::MASK_VIEWBackground::class]])
  422.             && $this->checkFeatures([FeatureFlagListener::FEATURE_BACKGROUND])
  423.         ) {
  424.             $menuBuilder->addItem('Background''admin_background');
  425.         }
  426.         if (
  427.             $this->hasAccess(['ROLE_ADMIN_USER', [UserRolePermission::MASK_VIEWQR::class]])
  428.             && $this->checkFeatures([FeatureFlagListener::FEATURE_QR])
  429.         ) {
  430.             $menuBuilder->addItem('QR links''admin_qr_index');
  431.         }
  432.         if ($this->checkFeatures([FeatureFlagListener::FEATURE_WEBSERVICE])) {
  433.             if (
  434.                 $this->hasAccess(['ROLE_ADMIN_USER', [UserRolePermission::MASK_VIEWMultiPoster::class]])
  435.             ) {
  436.                 $menuBuilder->addItem('Web service''admin_multiposters');
  437.             }
  438.             if (
  439.                 $this->hasAccess(['ROLE_ADMIN_USER', [UserRolePermission::MASK_VIEWWebServiceApiKey::class]])
  440.             ) {
  441.                 $menuBuilder->addItem('API keys''admin_webserviceapikeys');
  442.             }
  443.         }
  444.         if (
  445.             $this->hasAccess(['ROLE_ADMIN_USER', [UserRolePermission::MASK_VIEWGdprStatement::class]])
  446.             && $this->checkFeatures([FeatureFlagListener::FEATURE_GDPR])
  447.         ) {
  448.             $menuBuilder->addItem('GDPR Statements''admin_gdpr_statement_index');
  449.         }
  450.         if (
  451.             $this->hasAccess(['ROLE_ADMIN_USER', [UserRolePermission::MASK_VIEWDynamicForm::class]])
  452.             && $this->checkFeatures([FeatureFlagListener::FEATURE_FORM_BUILDER])
  453.         ) {
  454.             $menuBuilder->addItem('forms.overview''admin_forms');
  455.         }
  456.         if ($this->hasAccess(['ROLE_ADMIN_USER', [UserRolePermission::MASK_VIEWSocialWall::class]])
  457.             && $this->checkFeatures([FeatureFlagListener::FEATURE_SOCIAL_WALL])
  458.         ) {
  459.             $menuBuilder->addItem('social_walls''admin_social_wall');
  460.         }
  461.         if ($this->hasAccess(['ROLE_ADMIN_USER', [UserRolePermission::MASK_VIEWCalendar::class]])
  462.             && $this->checkFeatures([FeatureFlagListener::FEATURE_CALENDAR])
  463.         ) {
  464.             $menuBuilder->addItem('Calendars''admin_calendar_index');
  465.         }
  466.         $menuBuilder->end();
  467.     }
  468.     private function addPersonsMenu(MenuBuilder $menuBuilder)
  469.     {
  470.         if (
  471.             $this->hasAccess([[UserRolePermission::MASK_VIEWPerson::class]])
  472.             && $this->checkFeatures([FeatureFlagListener::FEATURE_PERSON])
  473.         ) {
  474.             $menuBuilder->addColumn('Persons''fal fa-user-circle');
  475.             $menuBuilder->addItem('Create person''admin_person_create');
  476.             $menuBuilder->addItem('View persons''admin_persons');
  477.             $menuBuilder->end();
  478.         }
  479.     }
  480. }