service = $service; $this->aclManager = $aclManager; $this->entityManager = $entityManager; } public function run(Data $data): void { $entityType = $data->get('entityType'); $entityId = $data->get('entityId'); if (!$entityId || !$entityType) { return; } $entity = $this->entityManager->getEntity($entityType, $entityId); if (!$entity) { return; } $idList = $this->service->getEntityFolowerIdList($entity); $userList = $this->entityManager ->getRDBRepository(User::ENTITY_TYPE) ->where([ 'id' => $idList, ]) ->find(); foreach ($userList as $user) { /** @var string */ $userId = $user->getId(); if (!$user->isActive()) { $this->service->unfollowEntity($entity, $userId); continue; } if ($user->isPortal()) { continue; } try { $hasAccess = $this->aclManager->checkEntityStream($user, $entity); } catch (AclNotImplemented $e) { $hasAccess = false; } if ($hasAccess) { continue; } $this->service->unfollowEntity($entity, $userId); } } }