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

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