vendor/dachcom-digital/members/src/MembersBundle/EventListener/RestrictionStoreListener.php line 55

Open in your IDE?
  1. <?php
  2. namespace MembersBundle\EventListener;
  3. use Pimcore\Event\AssetEvents;
  4. use Pimcore\Event\DocumentEvents;
  5. use Pimcore\Event\Model\AssetEvent;
  6. use Pimcore\Event\Model\DocumentEvent;
  7. use Pimcore\Event\DataObjectEvents;
  8. use Pimcore\Event\Model\DataObjectEvent;
  9. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  10. use MembersBundle\Service\RestrictionService;
  11. class RestrictionStoreListener implements EventSubscriberInterface
  12. {
  13.     protected RestrictionService $serviceRestriction;
  14.     public function __construct(RestrictionService $serviceRestriction)
  15.     {
  16.         $this->serviceRestriction $serviceRestriction;
  17.     }
  18.     public static function getSubscribedEvents(): array
  19.     {
  20.         return [
  21.             DataObjectEvents::PRE_DELETE => 'handleObjectDeletion',
  22.             DocumentEvents::PRE_DELETE   => 'handleDocumentDeletion',
  23.             AssetEvents::PRE_DELETE      => 'handleAssetDeletion',
  24.             DataObjectEvents::POST_ADD => 'handleObjectAdd',
  25.             DocumentEvents::POST_ADD   => 'handleDocumentAdd',
  26.             AssetEvents::POST_ADD      => 'handleAssetAdd',
  27.             DataObjectEvents::POST_UPDATE => 'handleObjectUpdate',
  28.             DocumentEvents::POST_UPDATE   => 'handleDocumentUpdate',
  29.             AssetEvents::POST_UPDATE      => 'handleAssetUpdate'
  30.         ];
  31.     }
  32.     public function handleDocumentDeletion(DocumentEvent $e): void
  33.     {
  34.         $this->serviceRestriction->deleteRestriction($e->getDocument(), 'page');
  35.     }
  36.     public function handleAssetDeletion(AssetEvent $e): void
  37.     {
  38.         $this->serviceRestriction->deleteRestriction($e->getAsset(), 'asset');
  39.     }
  40.     public function handleObjectDeletion(DataObjectEvent $e): void
  41.     {
  42.         $this->serviceRestriction->deleteRestriction($e->getObject(), 'object');
  43.     }
  44.     public function handleObjectAdd(DataObjectEvent $e): void
  45.     {
  46.         $this->serviceRestriction->checkRestrictionContext($e->getObject(), 'object');
  47.     }
  48.     public function handleDocumentAdd(DocumentEvent $e): void
  49.     {
  50.         $this->serviceRestriction->checkRestrictionContext($e->getDocument(), 'page');
  51.     }
  52.     public function handleAssetAdd(AssetEvent $e): void
  53.     {
  54.         $this->serviceRestriction->checkRestrictionContext($e->getAsset(), 'asset');
  55.     }
  56.     public function handleObjectUpdate(DataObjectEvent $e): void
  57.     {
  58.         //only trigger update if object gets moved.
  59.         //default restriction page update gets handled by restrictionController or API.
  60.         if ($e->hasArgument('oldPath') === false) {
  61.             return;
  62.         }
  63.         $this->serviceRestriction->checkRestrictionContext($e->getObject(), 'object');
  64.     }
  65.     public function handleDocumentUpdate(DocumentEvent $e): void
  66.     {
  67.         //only trigger update if page gets moved.
  68.         //default restriction page update gets handled by restrictionController or API.
  69.         if ($e->hasArgument('oldPath') === false) {
  70.             return;
  71.         }
  72.         $this->serviceRestriction->checkRestrictionContext($e->getDocument(), 'page');
  73.     }
  74.     public function handleAssetUpdate(AssetEvent $e): void
  75.     {
  76.         //only trigger update if asset gets moved.
  77.         //default restriction page update gets handled by restrictionController or API.
  78.         if ($e->hasArgument('oldPath') === false) {
  79.             return;
  80.         }
  81.         $this->serviceRestriction->checkRestrictionContext($e->getAsset(), 'asset');
  82.     }
  83. }