- Prevents deleted newsletters from showing up in archives
- Adds a relationship to the sending queue table - Resets hash on newsletter duplication and notification history creation - Updates hash generation to use random string instead of newsletter id
This commit is contained in:
@ -220,7 +220,9 @@ class Newsletters extends APIEndpoint {
|
|||||||
$newsletter->save();
|
$newsletter->save();
|
||||||
$subscriber = Subscriber::getCurrentWPUser();
|
$subscriber = Subscriber::getCurrentWPUser();
|
||||||
$preview_url = NewsletterUrl::getViewInBrowserUrl(
|
$preview_url = NewsletterUrl::getViewInBrowserUrl(
|
||||||
$data, $subscriber, $queue = false, $preview = true
|
NewsletterUrl::ACTION_EDITOR,
|
||||||
|
$newsletter,
|
||||||
|
$subscriber
|
||||||
);
|
);
|
||||||
|
|
||||||
return $this->successResponse(
|
return $this->successResponse(
|
||||||
@ -339,7 +341,11 @@ class Newsletters extends APIEndpoint {
|
|||||||
// get preview url
|
// get preview url
|
||||||
$subscriber = Subscriber::getCurrentWPUser();
|
$subscriber = Subscriber::getCurrentWPUser();
|
||||||
$newsletter->preview_url = NewsletterUrl::getViewInBrowserUrl(
|
$newsletter->preview_url = NewsletterUrl::getViewInBrowserUrl(
|
||||||
$newsletter, $subscriber, $queue, $preview = true);
|
NewsletterUrl::ACTION_LISTING,
|
||||||
|
$newsletter,
|
||||||
|
$subscriber,
|
||||||
|
$queue
|
||||||
|
);
|
||||||
|
|
||||||
$data[] = $newsletter->asArray();
|
$data[] = $newsletter->asArray();
|
||||||
}
|
}
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
namespace MailPoet\Models;
|
namespace MailPoet\Models;
|
||||||
use MailPoet\Newsletter\Renderer\Renderer;
|
use MailPoet\Newsletter\Renderer\Renderer;
|
||||||
use MailPoet\Util\Helpers;
|
use MailPoet\Util\Helpers;
|
||||||
|
use MailPoet\Util\Security;
|
||||||
|
|
||||||
if(!defined('ABSPATH')) exit;
|
if(!defined('ABSPATH')) exit;
|
||||||
|
|
||||||
@ -27,6 +28,10 @@ class Newsletter extends Model {
|
|||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function queue() {
|
||||||
|
return $this->has_one(__NAMESPACE__ . '\SendingQueue', 'newsletter_id', 'id');
|
||||||
|
}
|
||||||
|
|
||||||
function save() {
|
function save() {
|
||||||
if(is_string($this->deleted_at) && strlen(trim($this->deleted_at)) === 0) {
|
if(is_string($this->deleted_at) && strlen(trim($this->deleted_at)) === 0) {
|
||||||
$this->set_expr('deleted_at', 'NULL');
|
$this->set_expr('deleted_at', 'NULL');
|
||||||
@ -41,7 +46,7 @@ class Newsletter extends Model {
|
|||||||
$this->set('hash',
|
$this->set('hash',
|
||||||
($this->hash)
|
($this->hash)
|
||||||
? $this->hash
|
? $this->hash
|
||||||
: self::generateHash($this->id)
|
: self::generateHash()
|
||||||
);
|
);
|
||||||
return parent::save();
|
return parent::save();
|
||||||
}
|
}
|
||||||
@ -80,6 +85,9 @@ class Newsletter extends Model {
|
|||||||
// reset status
|
// reset status
|
||||||
$duplicate->set('status', self::STATUS_DRAFT);
|
$duplicate->set('status', self::STATUS_DRAFT);
|
||||||
|
|
||||||
|
// reset hash
|
||||||
|
$duplicate->set('hash', null);
|
||||||
|
|
||||||
$duplicate->save();
|
$duplicate->save();
|
||||||
|
|
||||||
if($duplicate->getErrors() === false) {
|
if($duplicate->getErrors() === false) {
|
||||||
@ -136,6 +144,9 @@ class Newsletter extends Model {
|
|||||||
$notification_history->set_expr('updated_at', 'NOW()');
|
$notification_history->set_expr('updated_at', 'NOW()');
|
||||||
$notification_history->set_expr('deleted_at', 'NULL');
|
$notification_history->set_expr('deleted_at', 'NULL');
|
||||||
|
|
||||||
|
// reset hash
|
||||||
|
$notification_history->set('hash', null);
|
||||||
|
|
||||||
$notification_history->save();
|
$notification_history->save();
|
||||||
|
|
||||||
if($notification_history->getErrors() === false) {
|
if($notification_history->getErrors() === false) {
|
||||||
@ -640,6 +651,7 @@ class Newsletter extends Model {
|
|||||||
'queues'
|
'queues'
|
||||||
)
|
)
|
||||||
->where('queues.status', SendingQueue::STATUS_COMPLETED)
|
->where('queues.status', SendingQueue::STATUS_COMPLETED)
|
||||||
|
->whereNull('newsletters.deleted_at')
|
||||||
->select('queues.processed_at')
|
->select('queues.processed_at')
|
||||||
->orderByDesc('queues.processed_at');
|
->orderByDesc('queues.processed_at');
|
||||||
|
|
||||||
@ -659,10 +671,11 @@ class Newsletter extends Model {
|
|||||||
->findOne();
|
->findOne();
|
||||||
}
|
}
|
||||||
|
|
||||||
static function generateHash($id = null) {
|
static function generateHash() {
|
||||||
if(!is_null($id)) {
|
return substr(
|
||||||
return substr(md5(AUTH_KEY . $id), 0, self::NEWSLETTER_HASH_LENGTH);
|
md5(AUTH_KEY . Security::generateRandomString(15)),
|
||||||
}
|
0,
|
||||||
return false;
|
self::NEWSLETTER_HASH_LENGTH
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
Reference in New Issue
Block a user