getEntityType(); if (!$this->acl->check($entityType, Acl\Table::ACTION_DELETE)) { throw new Forbidden("No delete access for '{$entityType}'."); } if ( !$params->hasIds() && $this->acl->getPermissionLevel('massUpdate') !== Acl\Table::LEVEL_YES ) { throw new Forbidden("No mass-update permission."); } $service = $this->serviceFactory->create($entityType); $repository = $this->entityManager->getRDBRepository($entityType); $query = $this->queryBuilder->build($params); $collection = $repository ->clone($query) ->sth() ->find(); $ids = []; $count = 0; foreach ($collection as $entity) { if (!$this->acl->checkEntityDelete($entity)) { continue; } $repository->remove($entity, [ 'modifiedById' => $this->user->getId(), ]); /** @var string $id */ $id = $entity->getId(); $ids[] = $id; $count++; $service->processActionHistoryRecord(ActionHistoryRecord::ACTION_DELETE, $entity); } $result = [ 'count' => $count, 'ids' => $ids, ]; return Result::fromArray($result); } }