Restores all sending queue associations when newsletters are bulk restored
This commit is contained in:
@ -753,6 +753,15 @@ class Newsletter extends Model {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static function bulkRestore($orm) {
|
static function bulkRestore($orm) {
|
||||||
|
// bulk restore trashed queue associations
|
||||||
|
parent::bulkAction($orm, function($ids) {
|
||||||
|
SendingQueue::whereIn('newsletter_id', $ids)
|
||||||
|
->whereNotNull('deleted_at')
|
||||||
|
->findResultSet()
|
||||||
|
->set('deleted_at', null)
|
||||||
|
->save();
|
||||||
|
});
|
||||||
|
|
||||||
parent::bulkAction($orm, function($ids) {
|
parent::bulkAction($orm, function($ids) {
|
||||||
Newsletter::whereIn('id', $ids)
|
Newsletter::whereIn('id', $ids)
|
||||||
->where('status', Newsletter::STATUS_SENDING)
|
->where('status', Newsletter::STATUS_SENDING)
|
||||||
@ -760,6 +769,7 @@ class Newsletter extends Model {
|
|||||||
->set('status', Newsletter::STATUS_DRAFT)
|
->set('status', Newsletter::STATUS_DRAFT)
|
||||||
->save();
|
->save();
|
||||||
});
|
});
|
||||||
|
|
||||||
return parent::bulkRestore($orm);
|
return parent::bulkRestore($orm);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -492,6 +492,36 @@ class NewsletterTest extends MailPoetTest {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function testItBulkRestoresTrashedQueueAssociationsWhenNewslettersAreBulkRestored() {
|
||||||
|
// delete default records
|
||||||
|
$this->_after();
|
||||||
|
|
||||||
|
// create multiple newsletters and sending queues
|
||||||
|
for($i = 1; $i <= 5; $i++) {
|
||||||
|
$newsletter = Newsletter::createOrUpdate(
|
||||||
|
array(
|
||||||
|
'subject' => 'test',
|
||||||
|
'type' => Newsletter::TYPE_STANDARD,
|
||||||
|
'deleted_at' => date('Y-m-d H:i:s')
|
||||||
|
)
|
||||||
|
);
|
||||||
|
$sending_queue = SendingQueue::create();
|
||||||
|
$sending_queue->newsletter_id = $newsletter->id;
|
||||||
|
$sending_queue->deleted_at = date('Y-m-d H:i:s');
|
||||||
|
$sending_queue->save();
|
||||||
|
}
|
||||||
|
expect(Newsletter::findArray())->count(5);
|
||||||
|
expect(SendingQueue::findArray())->count(5);
|
||||||
|
|
||||||
|
// bulk restore newsletters and check that relations are restored
|
||||||
|
Newsletter::bulkRestore(ORM::forTable(Newsletter::$_table));
|
||||||
|
$newsletters = Newsletter::findMany();
|
||||||
|
foreach($newsletters as $newsletter) {
|
||||||
|
expect($newsletter->deleted_at)->null();
|
||||||
|
expect($newsletter->queue()->findOne()->deleted_at)->null();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function _after() {
|
function _after() {
|
||||||
ORM::raw_execute('TRUNCATE ' . NewsletterOption::$_table);
|
ORM::raw_execute('TRUNCATE ' . NewsletterOption::$_table);
|
||||||
ORM::raw_execute('TRUNCATE ' . Newsletter::$_table);
|
ORM::raw_execute('TRUNCATE ' . Newsletter::$_table);
|
||||||
|
Reference in New Issue
Block a user