src/Component/AdminMenu/EventSubscriber/MarketingMenuSubscriber.php line 12

Open in your IDE?
  1. <?php
  2. namespace App\Component\AdminMenu\EventSubscriber;
  3. use App\Component\AdminMenu\Event\AbstractBuildMenuEvent;
  4. use App\EventListener\FeatureFlagListener;
  5. class MarketingMenuSubscriber extends AbstractMenuBuildEventSubscriber
  6. {
  7.     protected static int $priority = -80;
  8.     public function buildMenu(AbstractBuildMenuEvent $event)
  9.     {
  10.         if (!$this->authorizationChecker->isGranted('ROLE_ADMIN_USER')) {
  11.             return;
  12.         }
  13.         if (
  14.             !$this->checkCommonColumnPersmissions()
  15.             && !$this->checkGoogleColumnPermissions()
  16.             && !$this->checkAdsColumnPermissions()
  17.         ) {
  18.             return;
  19.         }
  20.         $menuBuilder $this->getMenuBuilder($event->getMenu())
  21.             ->addMainItem('Marketing''fal fa-bullseye-arrow')
  22.             ->addOverlay()
  23.             ->addSection('Marketing');
  24.         if ($this->checkCommonColumnPersmissions()) {
  25.             $menuBuilder->addColumn('Common''fal fa-globe');
  26.             if ($this->checkFeatures([FeatureFlagListener::FEATURE_REDIRECTS])) {
  27.                 $menuBuilder->addItem('Redirects''admin_redirect_index')
  28.                     ->addItem('Redirects (legacy)''admin_redirects_index');
  29.             }
  30.             if ($this->checkFeatures([FeatureFlagListener::FEATURE_SEO_SNIPPET])) {
  31.                 $menuBuilder->addItem('SEO snippets''admin_seo_snippet_index')
  32.                     ->addItem('SEO templates''admin_meta_templates_index');
  33.             }
  34.             $menuBuilder->addItem('Robots''robots');
  35.             $menuBuilder->end();
  36.         }
  37.         if ($this->checkGoogleColumnPermissions()) {
  38.             $menuBuilder->addColumn('Google''fab fa-google')
  39.                 ->addItem('Google for Jobs''google_for_jobs_mapping');
  40.             if ($this->checkFeatures([FeatureFlagListener::FEATURE_GOOGLE_TAG_MANAGER])) {
  41.                 $menuBuilder->addItem('Google Trackingpixels''admin_trackingpixels')
  42.                     ->addItem('Google Tag-manager''admin_googletagmanager');
  43.             }
  44.             $menuBuilder->end();
  45.         }
  46.         if ($this->checkAdsColumnPermissions()) {
  47.             $menuBuilder->addColumn('Ads''fal fa-hand-holding-usd')
  48.                 ->addItem('View ads''admin_ad')
  49.                 ->addItem('Ad categories''admin_ad_categories')
  50.                 ->end();
  51.         }
  52.     }
  53.     public function checkCommonColumnPersmissions(): bool
  54.     {
  55.         // Robots has no feature flag, so this column should always be shown
  56.         return true;
  57.     }
  58.     public function checkGoogleColumnPermissions(): bool
  59.     {
  60.         // Google for jobs has no feature, this column should always show
  61.         return true;
  62.     }
  63.     public function checkAdsColumnPermissions(): bool
  64.     {
  65.         return $this->checkFeatures([
  66.             FeatureFlagListener::FEATURE_ADS,
  67.         ]);
  68.     }
  69. }