Deny deleting subscribers who are WP user
[MAILPOET-3138]
This commit is contained in:
@ -460,8 +460,8 @@ class Subscribers extends APIEndpoint {
|
|||||||
public function delete($data = []) {
|
public function delete($data = []) {
|
||||||
$subscriber = $this->getSubscriber($data);
|
$subscriber = $this->getSubscriber($data);
|
||||||
if ($subscriber instanceof SubscriberEntity) {
|
if ($subscriber instanceof SubscriberEntity) {
|
||||||
$this->subscribersRepository->bulkDelete([$subscriber->getId()]);
|
$count = $this->subscribersRepository->bulkDelete([$subscriber->getId()]);
|
||||||
return $this->successResponse(null, ['count' => 1]);
|
return $this->successResponse(null, ['count' => $count]);
|
||||||
} else {
|
} else {
|
||||||
return $this->errorResponse([
|
return $this->errorResponse([
|
||||||
APIError::NOT_FOUND => WPFunctions::get()->__('This subscriber does not exist.', 'mailpoet'),
|
APIError::NOT_FOUND => WPFunctions::get()->__('This subscriber does not exist.', 'mailpoet'),
|
||||||
|
@ -100,7 +100,8 @@ class SubscribersRepository extends Repository {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->entityManager->transactional(function (EntityManager $entityManager) use ($ids) {
|
$count = 0;
|
||||||
|
$this->entityManager->transactional(function (EntityManager $entityManager) use ($ids, &$count) {
|
||||||
// Delete subscriber segments
|
// Delete subscriber segments
|
||||||
$this->bulkRemoveFromAllSegments($ids);
|
$this->bulkRemoveFromAllSegments($ids);
|
||||||
|
|
||||||
@ -112,13 +113,14 @@ class SubscribersRepository extends Repository {
|
|||||||
", ['ids' => $ids], ['ids' => Connection::PARAM_INT_ARRAY]);
|
", ['ids' => $ids], ['ids' => Connection::PARAM_INT_ARRAY]);
|
||||||
|
|
||||||
$queryBuilder = $entityManager->createQueryBuilder();
|
$queryBuilder = $entityManager->createQueryBuilder();
|
||||||
$queryBuilder->delete(SubscriberEntity::class, 's')
|
$count = $queryBuilder->delete(SubscriberEntity::class, 's')
|
||||||
->where('s.id IN (:ids)')
|
->where('s.id IN (:ids)')
|
||||||
|
->andWhere('s.wpUserId IS NULL')
|
||||||
->setParameter('ids', $ids)
|
->setParameter('ids', $ids)
|
||||||
->getQuery()->execute();
|
->getQuery()->execute();
|
||||||
});
|
});
|
||||||
|
|
||||||
return count($ids);
|
return $count;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Reference in New Issue
Block a user