- Updates based on code review comments

This commit is contained in:
Vlad
2016-05-17 11:41:59 -04:00
parent 06417c1e88
commit d2a6b6bd4e
3 changed files with 15 additions and 11 deletions

View File

@ -47,15 +47,18 @@ class Scheduler {
function processWelcomeNewsletter($newsletter, $queue) { function processWelcomeNewsletter($newsletter, $queue) {
$subscriber = unserialize($queue->subscribers); $subscriber = unserialize($queue->subscribers);
$subscriber_id = $subscriber['to_process'][0]; if (!isset($subscriber['to_process']) || !isset($subscriber['to_process'][0])) {
$queue->delete();
return;
}
$subscriber_id = (int) $subscriber['to_process'][0];
if($newsletter->event === 'segment') { if($newsletter->event === 'segment') {
if($this->verifyMailPoetSubscriber($subscriber_id, $newsletter, $queue) === false) { if($this->verifyMailPoetSubscriber($subscriber_id, $newsletter, $queue) === false) {
return; return;
} }
} else { } else {
if($newsletter->event === 'user') { if($newsletter->event === 'user') {
if($this->verifyWPSubscriber($subscriber_id, $newsletter) === false) { if($this->verifyWPSubscriber($subscriber_id, $newsletter, $queue) === false) {
$queue->delete();
return; return;
} }
} }
@ -66,7 +69,7 @@ class Scheduler {
function processPostNotificationNewsletter($newsletter, $queue) { function processPostNotificationNewsletter($newsletter, $queue) {
$segments = unserialize($newsletter->segments); $segments = unserialize($newsletter->segments);
if(!count($segments)) { if(empty($segments)) {
$queue->delete(); $queue->delete();
return; return;
} }
@ -74,7 +77,7 @@ class Scheduler {
->findArray(); ->findArray();
$subscribers = Helpers::arrayColumn($subscribers, 'subscriber_id'); $subscribers = Helpers::arrayColumn($subscribers, 'subscriber_id');
$subscribers = array_unique($subscribers); $subscribers = array_unique($subscribers);
if(!count($subscribers)) { if(empty($subscribers)) {
$queue->delete(); $queue->delete();
return; return;
} }
@ -89,19 +92,18 @@ class Scheduler {
} }
function verifyMailPoetSubscriber($subscriber_id, $newsletter, $queue) { function verifyMailPoetSubscriber($subscriber_id, $newsletter, $queue) {
$subscriber = Subscriber::findOne($subscriber_id);
// check if subscriber is in proper segment // check if subscriber is in proper segment
$subscriber_in_segment = $subscriber_in_segment =
SubscriberSegment::where('subscriber_id', $subscriber_id) SubscriberSegment::where('subscriber_id', $subscriber_id)
->where('segment_id', $newsletter->segment) ->where('segment_id', $newsletter->segment)
->where('status', 'subscribed') ->where('status', 'subscribed')
->findOne(); ->findOne();
if(!$subscriber_in_segment) { if(!$subscriber || !$subscriber_in_segment) {
$queue->delete(); $queue->delete();
return false; return false;
} }
// check if subscriber is confirmed (subscribed) // check if subscriber is confirmed (subscribed)
$subscriber = $subscriber_in_segment->subscriber()
->findOne();
if($subscriber->status !== 'subscribed') { if($subscriber->status !== 'subscribed') {
// reschedule delivery in 5 minutes // reschedule delivery in 5 minutes
$scheduled_at = Carbon::createFromTimestamp(current_time('timestamp')); $scheduled_at = Carbon::createFromTimestamp(current_time('timestamp'));
@ -114,16 +116,18 @@ class Scheduler {
return true; return true;
} }
function verifyWPSubscriber($subscriber_id, $newsletter) { function verifyWPSubscriber($subscriber_id, $newsletter, $queue) {
// check if user has the proper role // check if user has the proper role
$subscriber = Subscriber::findOne($subscriber_id); $subscriber = Subscriber::findOne($subscriber_id);
if(!$subscriber || $subscriber->wp_user_id === null) { if(!$subscriber || $subscriber->wp_user_id === null) {
$queue->delete();
return false; return false;
} }
$wp_user = (array) get_userdata($subscriber->wp_user_id); $wp_user = (array) get_userdata($subscriber->wp_user_id);
if($newsletter->role !== \MailPoet\Newsletter\Scheduler\Scheduler::WORDPRESS_ALL_ROLES if($newsletter->role !== \MailPoet\Newsletter\Scheduler\Scheduler::WORDPRESS_ALL_ROLES
&& !in_array($newsletter->role, $wp_user['roles']) && !in_array($newsletter->role, $wp_user['roles'])
) { ) {
$queue->delete();
return false; return false;
} }
return true; return true;

View File

@ -44,7 +44,7 @@ class SendingQueue {
$newsletter = $newsletter->asArray(); $newsletter = $newsletter->asArray();
$newsletter['body'] = $this->getOrRenderNewsletterBody($queue, $newsletter); $newsletter['body'] = $this->getOrRenderNewsletterBody($queue, $newsletter);
if ($newsletter['type'] === 'notification' && if ($newsletter['type'] === 'notification' &&
!preg_match_all('/data-post-id/', $newsletter['body']['html'])) { strpos($newsletter['body']['html'], 'data-post-id') === false) {
$queue->delete(); $queue->delete();
continue; continue;
} }

View File

@ -7,7 +7,7 @@ class Renderer {
public $newsletter; public $newsletter;
public $posts; public $posts;
function __construct($newsletter, $posts = false) { function __construct(array $newsletter, $posts = false) {
$this->newsletter = $newsletter; $this->newsletter = $newsletter;
$this->posts = array(); $this->posts = array();
$this->ALC = new \MailPoet\Newsletter\AutomatedLatestContent($this->newsletter['id']); $this->ALC = new \MailPoet\Newsletter\AutomatedLatestContent($this->newsletter['id']);