vendor/bluue/pim-bundle/src/EventSubscriber/ConfigureProductsListButtonsSubscriber.php line 67

Open in your IDE?
  1. <?php
  2. /**
  3.  * @author Thomas HERISSON (contact@scaledev.fr)
  4.  * @copyright 2021 - ScaleDEV SAS, 12 RUE CHARLES MORET, 10120 ST ANDRE LES VERGERS
  5.  * @license commercial
  6.  */
  7. declare(strict_types=1);
  8. namespace Bluue\PimBundle\EventSubscriber;
  9. use App\Event\MassManagementListButtonsEvent;
  10. use Bluue\ProductsBundle\Event\ConfigurationProductsListButtonsEvent;
  11. use Symfony\Component\Routing\RouterInterface;
  12. use Symfony\Component\Security\Core\Security;
  13. use Symfony\Contracts\Translation\TranslatorInterface;
  14. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  15. class ConfigureProductsListButtonsSubscriber implements EventSubscriberInterface
  16. {
  17.     /**
  18.      * @var RouterInterface
  19.      */
  20.     private RouterInterface $router;
  21.     /**
  22.      * @var TranslatorInterface
  23.      */
  24.     private TranslatorInterface $tr;
  25.     /**
  26.      * @var Security
  27.      */
  28.     private Security $security;
  29.     /**
  30.      * @param RouterInterface $router
  31.      * @param TranslatorInterface $tr
  32.      * @param Security $security
  33.      */
  34.     public function __construct(
  35.         RouterInterface $router,
  36.         TranslatorInterface $tr,
  37.         Security $security
  38.     ) {
  39.         $this->router $router;
  40.         $this->tr $tr;
  41.         $this->security $security;
  42.     }
  43.     /**
  44.      * @return array
  45.      */
  46.     public static function getSubscribedEvents(): array
  47.     {
  48.         return [
  49.             MassManagementListButtonsEvent::NAME => 'onLoad',
  50.             ConfigurationProductsListButtonsEvent::NAME => 'productListButtons'
  51.         ];
  52.     }
  53.     /**
  54.      * @param MassManagementListButtonsEvent $event
  55.      * @return void
  56.      */
  57.     public function onLoad(MassManagementListButtonsEvent $event): void
  58.     {
  59.         if (
  60.             !$this->security->isGranted('ROLE__PIM__ADMIN')
  61.             || !str_starts_with($event->getListName(), '_products_bundle__list')
  62.         ) {
  63.             return;
  64.         }
  65.         $buttons $event->getButtons();
  66.         $str '<a href="' $this->router->generate('pim_bundle__mass_management') . '" ';
  67.         $str .= 'class="btn btn-sm btn-primary mx-2">';
  68.         $str .= $this->tr->trans('Mass management', [], 'PimBundle') . '</a>';
  69.         $buttons[] = [$str];
  70.         $str '<a href="' $this->router->generate('pim_bundle__sequential_modification') . '" ';
  71.         $str .= 'class="btn btn-sm btn-primary mx-2">';
  72.         $str .= $this->tr->trans('Sequential modification', [], 'PimBundle') . '</a>';
  73.         $buttons[] = [$str];
  74.         $event->setButtons($buttons);
  75.     }
  76.     /**
  77.      * @param ConfigurationProductsListButtonsEvent $event
  78.      * @return void
  79.      */
  80.     public function productListButtons(ConfigurationProductsListButtonsEvent $event): void
  81.     {
  82.         if (!$this->security->isGranted('ROLE__PIM__ADMIN')) {
  83.             return;
  84.         }
  85.         $buttons $event->getButtons();
  86.         $str '<a href="' $this->router->generate('pim_bundle__mass_management') . '" ';
  87.         $str .= 'class="btn btn-sm btn-primary ml-2">';
  88.         $str .= $this->tr->trans('Mass management', [], 'PimBundle') . '</a>';
  89.         $buttons[] = [$str];
  90.         $event->setButtons($buttons);
  91.     }
  92. }