*/ class ResourceListener implements IEventListener { /** @var IManager */ private $resourceManager; /** @var ResourceProviderCard */ private $resourceProviderCard; public function __construct(IManager $resourceManager, ResourceProviderCard $resourceProviderCard) { $this->resourceManager = $resourceManager; $this->resourceProviderCard = $resourceProviderCard; } public function handle(Event $event): void { if (!$event instanceof AclDeletedEvent && !$event instanceof AclCreatedEvent) { return; } $boardId = $event->getAcl()->getBoardId(); $this->resourceManager->invalidateAccessCacheForProvider($this->resourceProviderCard); try { $resource = $this->resourceManager->getResourceForUser(ResourceProvider::RESOURCE_TYPE, $boardId, null); $this->resourceManager->invalidateAccessCacheForResource($resource); } catch (ResourceException $e) { // If there is no resource we don't need to invalidate anything, but this should not happen anyways } } }