Replace Newsletter delete,trash,replace by new bulkMethods
[MAILPOET-2898][MAILPOET-2758]
This commit is contained in:
committed by
Veljko V
parent
3a462a7a6c
commit
a8d11bf045
@ -202,15 +202,12 @@ class Newsletters extends APIEndpoint {
|
||||
|
||||
public function restore($data = []) {
|
||||
$id = (isset($data['id']) ? (int)$data['id'] : false);
|
||||
$newsletter = Newsletter::findOne($id);
|
||||
if ($newsletter instanceof Newsletter) {
|
||||
$newsletter->restore();
|
||||
|
||||
$newsletter = Newsletter::findOne($newsletter->id);
|
||||
if(!$newsletter instanceof Newsletter) return $this->errorResponse();
|
||||
|
||||
$newsletter = $this->newslettersRepository->findOneById($id);
|
||||
if ($newsletter instanceof NewsletterEntity) {
|
||||
$this->newslettersRepository->bulkRestore([$id]);
|
||||
$this->newslettersRepository->refresh($newsletter);
|
||||
return $this->successResponse(
|
||||
$newsletter->asArray(),
|
||||
$this->newslettersResponseBuilder->build($newsletter),
|
||||
['count' => 1]
|
||||
);
|
||||
} else {
|
||||
@ -222,14 +219,12 @@ class Newsletters extends APIEndpoint {
|
||||
|
||||
public function trash($data = []) {
|
||||
$id = (isset($data['id']) ? (int)$data['id'] : false);
|
||||
$newsletter = Newsletter::findOne($id);
|
||||
if ($newsletter instanceof Newsletter) {
|
||||
$newsletter->trash();
|
||||
|
||||
$newsletter = Newsletter::findOne($newsletter->id);
|
||||
if(!$newsletter instanceof Newsletter) return $this->errorResponse();
|
||||
$newsletter = $this->newslettersRepository->findOneById($id);
|
||||
if ($newsletter instanceof NewsletterEntity) {
|
||||
$this->newslettersRepository->bulkTrash([$id]);
|
||||
$this->newslettersRepository->refresh($newsletter);
|
||||
return $this->successResponse(
|
||||
$newsletter->asArray(),
|
||||
$this->newslettersResponseBuilder->build($newsletter),
|
||||
['count' => 1]
|
||||
);
|
||||
} else {
|
||||
@ -241,9 +236,9 @@ class Newsletters extends APIEndpoint {
|
||||
|
||||
public function delete($data = []) {
|
||||
$id = (isset($data['id']) ? (int)$data['id'] : false);
|
||||
$newsletter = Newsletter::findOne($id);
|
||||
if ($newsletter instanceof Newsletter) {
|
||||
$newsletter->delete();
|
||||
$newsletter = $this->newslettersRepository->findOneById($id);
|
||||
if ($newsletter instanceof NewsletterEntity) {
|
||||
$this->newslettersRepository->bulkDelete([$id]);
|
||||
return $this->successResponse(null, ['count' => 1]);
|
||||
} else {
|
||||
return $this->errorResponse([
|
||||
|
@ -12,6 +12,7 @@ use MailPoet\Models\Newsletter as NewsletterModel;
|
||||
use MailPoet\Models\NewsletterSegment as NewsletterSegmentModel;
|
||||
use MailPoet\Models\SendingQueue as SendingQueueModel;
|
||||
use MailPoet\Newsletter\Links\Links as NewsletterLinks;
|
||||
use MailPoet\Newsletter\NewslettersRepository;
|
||||
use MailPoet\Newsletter\Renderer\PostProcess\OpenTracking;
|
||||
use MailPoet\Newsletter\Renderer\Renderer;
|
||||
use MailPoet\Settings\SettingsController;
|
||||
@ -39,6 +40,9 @@ class Newsletter {
|
||||
/** @var Renderer */
|
||||
private $renderer;
|
||||
|
||||
/** @var NewslettersRepository */
|
||||
private $newslettersRepository;
|
||||
|
||||
/** @var Emoji */
|
||||
private $emoji;
|
||||
|
||||
@ -63,6 +67,7 @@ class Newsletter {
|
||||
}
|
||||
$this->emoji = $emoji;
|
||||
$this->renderer = ContainerWrapper::getInstance()->get(Renderer::class);
|
||||
$this->newslettersRepository = ContainerWrapper::getInstance()->get(NewslettersRepository::class);
|
||||
}
|
||||
|
||||
public function getNewsletterFromQueue($queue) {
|
||||
@ -137,7 +142,7 @@ class Newsletter {
|
||||
'no posts in post notification, deleting it',
|
||||
['newsletter_id' => $newsletter->id, 'task_id' => $sendingTask->taskId]
|
||||
);
|
||||
$newsletter->delete();
|
||||
$this->newslettersRepository->bulkDelete([(int)$newsletter->id]);
|
||||
return false;
|
||||
}
|
||||
// extract and save newsletter posts
|
||||
|
@ -87,6 +87,13 @@ abstract class Repository {
|
||||
$this->entityManager->remove($entity);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param T $entity
|
||||
*/
|
||||
public function refresh($entity) {
|
||||
$this->entityManager->refresh($entity);
|
||||
}
|
||||
|
||||
public function flush() {
|
||||
$this->entityManager->flush();
|
||||
}
|
||||
|
@ -211,6 +211,9 @@ class NewslettersRepository extends Repository {
|
||||
}
|
||||
|
||||
public function bulkDelete(array $ids) {
|
||||
if (empty($ids)) {
|
||||
return 0;
|
||||
}
|
||||
$this->entityManager->getConnection()->beginTransaction();
|
||||
try {
|
||||
// Delete children
|
||||
|
@ -250,11 +250,6 @@ parameters:
|
||||
count: 1
|
||||
path: ../../tests/integration/Cron/Workers/SendingQueue/MigrationTest.php
|
||||
|
||||
-
|
||||
message: "#^Cannot call method delete\\(\\) on MailPoet\\\\Models\\\\Newsletter\\|false\\.$#"
|
||||
count: 1
|
||||
path: ../../tests/integration/Cron/Workers/SendingQueue/SendingQueueTest.php
|
||||
|
||||
-
|
||||
message: "#^Cannot access property \\$status on MailPoet\\\\Models\\\\Newsletter\\|false\\.$#"
|
||||
count: 5
|
||||
|
@ -42,6 +42,7 @@ use MailPoetVendor\Idiorm\ORM;
|
||||
|
||||
class NewslettersTest extends \MailPoetTest {
|
||||
public $postNotification;
|
||||
/** @var Newsletter */
|
||||
public $newsletter;
|
||||
/** @var Newsletters */
|
||||
private $endpoint;
|
||||
@ -49,9 +50,13 @@ class NewslettersTest extends \MailPoetTest {
|
||||
/** @var CronHelper */
|
||||
private $cronHelper;
|
||||
|
||||
/** @var NewslettersRepository */
|
||||
private $newsletterRepository;
|
||||
|
||||
public function _before() {
|
||||
parent::_before();
|
||||
$this->cronHelper = ContainerWrapper::getInstance()->get(CronHelper::class);
|
||||
$this->newsletterRepository = ContainerWrapper::getInstance()->get(NewslettersRepository::class);
|
||||
$this->endpoint = Stub::copy(
|
||||
ContainerWrapper::getInstance()->get(Newsletters::class),
|
||||
[
|
||||
@ -319,7 +324,7 @@ class NewslettersTest extends \MailPoetTest {
|
||||
}
|
||||
|
||||
public function testItCanRestoreANewsletter() {
|
||||
$this->newsletter->trash();
|
||||
$this->newsletterRepository->bulkTrash([$this->newsletter->id]);
|
||||
|
||||
$trashedNewsletter = Newsletter::findOne($this->newsletter->id);
|
||||
expect($trashedNewsletter->deletedAt)->notNull();
|
||||
|
@ -62,6 +62,8 @@ class SendingQueueTest extends \MailPoetTest {
|
||||
private $statsNotificationsWorker;
|
||||
/** @var LoggerFactory */
|
||||
private $loggerFactory;
|
||||
/** @var NewslettersRepository */
|
||||
private $newslettersRepository;
|
||||
|
||||
public function _before() {
|
||||
parent::_before();
|
||||
@ -118,6 +120,7 @@ class SendingQueueTest extends \MailPoetTest {
|
||||
Stub::makeEmpty(NewslettersRepository::class, ['findOneById' => new NewsletterEntity()]),
|
||||
$this->cronHelper
|
||||
);
|
||||
$this->newslettersRepository = ContainerWrapper::getInstance()->get(NewslettersRepository::class);
|
||||
}
|
||||
|
||||
private function getDirectUnsubscribeURL() {
|
||||
@ -261,8 +264,7 @@ class SendingQueueTest extends \MailPoetTest {
|
||||
expect($queue)->notEquals(false);
|
||||
|
||||
// delete newsletter
|
||||
Newsletter::findOne($this->newsletter->id)
|
||||
->delete();
|
||||
$this->newslettersRepository->bulkDelete([$this->newsletter->id]);
|
||||
|
||||
// queue no longer exists
|
||||
$this->sendingQueueWorker->process();
|
||||
|
Reference in New Issue
Block a user