Move constans to their classes
[MAILPOET-2348]
This commit is contained in:
committed by
Jack Kitterhing
parent
3d750c5bb8
commit
493e16606c
@ -10,9 +10,11 @@ use MailPoet\Models\ScheduledTask;
|
||||
use MailPoet\Models\Segment;
|
||||
use MailPoet\Models\Subscriber;
|
||||
use MailPoet\Models\SubscriberSegment;
|
||||
use MailPoet\Newsletter\Scheduler\PostNotificationScheduler;
|
||||
use MailPoet\Newsletter\Scheduler\Scheduler as NewsletterScheduler;
|
||||
use MailPoet\Newsletter\Scheduler\WelcomeScheduler;
|
||||
use MailPoet\Segments\SubscribersFinder;
|
||||
use MailPoet\Tasks\Sending as SendingTask;
|
||||
use MailPoet\Newsletter\Scheduler\Scheduler as NewsletterScheduler;
|
||||
|
||||
if (!defined('ABSPATH')) exit;
|
||||
|
||||
@ -188,7 +190,7 @@ class Scheduler {
|
||||
return false;
|
||||
}
|
||||
$wp_user = (array)get_userdata($subscriber->wp_user_id);
|
||||
if ($newsletter->role !== \MailPoet\Newsletter\Scheduler\Scheduler::WORDPRESS_ALL_ROLES
|
||||
if ($newsletter->role !== WelcomeScheduler::WORDPRESS_ALL_ROLES
|
||||
&& !in_array($newsletter->role, $wp_user['roles'])
|
||||
) {
|
||||
$queue->delete();
|
||||
@ -198,7 +200,7 @@ class Scheduler {
|
||||
}
|
||||
|
||||
function deleteQueueOrUpdateNextRunDate($queue, $newsletter) {
|
||||
if ($newsletter->intervalType === NewsletterScheduler::INTERVAL_IMMEDIATELY) {
|
||||
if ($newsletter->intervalType === PostNotificationScheduler::INTERVAL_IMMEDIATELY) {
|
||||
$queue->delete();
|
||||
return;
|
||||
} else {
|
||||
|
@ -14,6 +14,15 @@ use MailPoet\WP\Posts;
|
||||
|
||||
class PostNotificationScheduler {
|
||||
|
||||
const SECONDS_IN_HOUR = 3600;
|
||||
const LAST_WEEKDAY_FORMAT = 'L';
|
||||
const INTERVAL_DAILY = 'daily';
|
||||
const INTERVAL_IMMEDIATELY = 'immediately';
|
||||
const INTERVAL_NTHWEEKDAY = 'nthWeekDay';
|
||||
const INTERVAL_WEEKLY = 'weekly';
|
||||
const INTERVAL_IMMEDIATE = 'immediate';
|
||||
const INTERVAL_MONTHLY = 'monthly';
|
||||
|
||||
function transitionHook($new_status, $old_status, $post) {
|
||||
Logger::getLogger('post-notifications')->addInfo(
|
||||
'transition post notification hook initiated',
|
||||
@ -88,27 +97,27 @@ class PostNotificationScheduler {
|
||||
|
||||
function processPostNotificationSchedule($newsletter) {
|
||||
$interval_type = $newsletter->intervalType;
|
||||
$hour = (int)$newsletter->timeOfDay / Scheduler::SECONDS_IN_HOUR;
|
||||
$hour = (int)$newsletter->timeOfDay / self::SECONDS_IN_HOUR;
|
||||
$week_day = $newsletter->weekDay;
|
||||
$month_day = $newsletter->monthDay;
|
||||
$nth_week_day = ($newsletter->nthWeekDay === Scheduler::LAST_WEEKDAY_FORMAT) ?
|
||||
$nth_week_day = ($newsletter->nthWeekDay === self::LAST_WEEKDAY_FORMAT) ?
|
||||
$newsletter->nthWeekDay :
|
||||
'#' . $newsletter->nthWeekDay;
|
||||
switch ($interval_type) {
|
||||
case Scheduler::INTERVAL_IMMEDIATE:
|
||||
case Scheduler::INTERVAL_DAILY:
|
||||
case self::INTERVAL_IMMEDIATE:
|
||||
case self::INTERVAL_DAILY:
|
||||
$schedule = sprintf('0 %s * * *', $hour);
|
||||
break;
|
||||
case Scheduler::INTERVAL_WEEKLY:
|
||||
case self::INTERVAL_WEEKLY:
|
||||
$schedule = sprintf('0 %s * * %s', $hour, $week_day);
|
||||
break;
|
||||
case Scheduler::INTERVAL_NTHWEEKDAY:
|
||||
case self::INTERVAL_NTHWEEKDAY:
|
||||
$schedule = sprintf('0 %s ? * %s%s', $hour, $week_day, $nth_week_day);
|
||||
break;
|
||||
case Scheduler::INTERVAL_MONTHLY:
|
||||
case self::INTERVAL_MONTHLY:
|
||||
$schedule = sprintf('0 %s %s * *', $hour, $month_day);
|
||||
break;
|
||||
case Scheduler::INTERVAL_IMMEDIATELY:
|
||||
case self::INTERVAL_IMMEDIATELY:
|
||||
default:
|
||||
$schedule = '* * * * *';
|
||||
break;
|
||||
|
@ -11,15 +11,6 @@ use MailPoet\Tasks\Sending as SendingTask;
|
||||
use MailPoet\WP\Functions as WPFunctions;
|
||||
|
||||
class Scheduler {
|
||||
const SECONDS_IN_HOUR = 3600;
|
||||
const LAST_WEEKDAY_FORMAT = 'L';
|
||||
const WORDPRESS_ALL_ROLES = 'mailpoet_all';
|
||||
const INTERVAL_IMMEDIATELY = 'immediately';
|
||||
const INTERVAL_IMMEDIATE = 'immediate';
|
||||
const INTERVAL_DAILY = 'daily';
|
||||
const INTERVAL_WEEKLY = 'weekly';
|
||||
const INTERVAL_MONTHLY = 'monthly';
|
||||
const INTERVAL_NTHWEEKDAY = 'nthWeekDay';
|
||||
|
||||
static function scheduleAutomaticEmail($group, $event, $scheduling_condition = false, $subscriber_id = false, $meta = false) {
|
||||
$newsletters = self::getNewsletters(Newsletter::TYPE_AUTOMATIC, $group);
|
||||
|
@ -8,6 +8,8 @@ use MailPoet\Tasks\Sending as SendingTask;
|
||||
|
||||
class WelcomeScheduler {
|
||||
|
||||
const WORDPRESS_ALL_ROLES = 'mailpoet_all';
|
||||
|
||||
function scheduleSubscriberWelcomeNotification($subscriber_id, $segments) {
|
||||
$newsletters = Scheduler::getNewsletters(Newsletter::TYPE_WELCOME);
|
||||
if (empty($newsletters)) return false;
|
||||
@ -35,13 +37,13 @@ class WelcomeScheduler {
|
||||
// do not schedule welcome newsletter if roles have not changed
|
||||
$old_role = $old_user_data['roles'];
|
||||
$new_role = $wp_user['roles'];
|
||||
if ($newsletter->role === Scheduler::WORDPRESS_ALL_ROLES ||
|
||||
if ($newsletter->role === self::WORDPRESS_ALL_ROLES ||
|
||||
!array_diff($old_role, $new_role)
|
||||
) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
if ($newsletter->role === Scheduler::WORDPRESS_ALL_ROLES ||
|
||||
if ($newsletter->role === self::WORDPRESS_ALL_ROLES ||
|
||||
in_array($newsletter->role, $wp_user['roles'])
|
||||
) {
|
||||
$this->createWelcomeNotificationSendingTask($newsletter, $subscriber_id);
|
||||
|
@ -9,18 +9,18 @@ use Codeception\Util\Stub;
|
||||
use Helper\WordPressHooks as WPHooksHelper;
|
||||
use MailPoet\API\JSON\Response as APIResponse;
|
||||
use MailPoet\API\JSON\ResponseBuilders\NewslettersResponseBuilder;
|
||||
use MailPoet\Listing\BulkActionController;
|
||||
use MailPoet\Listing\Handler;
|
||||
use MailPoet\API\JSON\v1\Newsletters;
|
||||
use MailPoet\DI\ContainerWrapper;
|
||||
use MailPoet\Listing\BulkActionController;
|
||||
use MailPoet\Listing\Handler;
|
||||
use MailPoet\Models\Newsletter;
|
||||
use MailPoet\Models\NewsletterOption;
|
||||
use MailPoet\Models\NewsletterOptionField;
|
||||
use MailPoet\Models\NewsletterSegment;
|
||||
use MailPoet\Models\ScheduledTask;
|
||||
use MailPoet\Models\Segment;
|
||||
use MailPoet\Models\SubscriberSegment;
|
||||
use MailPoet\Models\SendingQueue;
|
||||
use MailPoet\Models\SubscriberSegment;
|
||||
use MailPoet\Newsletter\NewslettersRepository;
|
||||
use MailPoet\Newsletter\Scheduler\PostNotificationScheduler;
|
||||
use MailPoet\Newsletter\Scheduler\Scheduler;
|
||||
@ -30,8 +30,8 @@ use MailPoet\Services\AuthorizedEmailsController;
|
||||
use MailPoet\Settings\SettingsController;
|
||||
use MailPoet\Subscription\Url as SubscriptionUrl;
|
||||
use MailPoet\Tasks\Sending as SendingTask;
|
||||
use MailPoet\WP\Functions as WPFunctions;
|
||||
use MailPoet\WooCommerce\Helper as WCHelper;
|
||||
use MailPoet\WP\Functions as WPFunctions;
|
||||
|
||||
class NewslettersTest extends \MailPoetTest {
|
||||
/** @var Newsletters */
|
||||
@ -288,7 +288,7 @@ class NewslettersTest extends \MailPoetTest {
|
||||
'type' => Newsletter::TYPE_NOTIFICATION,
|
||||
'subject' => 'Newsletter',
|
||||
'options' => [
|
||||
'intervalType' => Scheduler::INTERVAL_WEEKLY,
|
||||
'intervalType' => PostNotificationScheduler::INTERVAL_WEEKLY,
|
||||
'timeOfDay' => '50400',
|
||||
'weekDay' => '1',
|
||||
'monthDay' => '0',
|
||||
@ -303,7 +303,7 @@ class NewslettersTest extends \MailPoetTest {
|
||||
expect($response->data)->equals($saved_newsletter->asArray());
|
||||
|
||||
// schedule should be recalculated when options change
|
||||
$newsletter_data['options']['intervalType'] = Scheduler::INTERVAL_IMMEDIATELY;
|
||||
$newsletter_data['options']['intervalType'] = PostNotificationScheduler::INTERVAL_IMMEDIATELY;
|
||||
$response = $this->endpoint->save($newsletter_data);
|
||||
$saved_newsletter = Newsletter::filter('filterWithOptions', Newsletter::TYPE_NOTIFICATION)
|
||||
->findOne($response->data['id']);
|
||||
@ -347,7 +347,7 @@ class NewslettersTest extends \MailPoetTest {
|
||||
'subject' => 'Newsletter',
|
||||
'options' => [
|
||||
// weekly on Monday @ 7am
|
||||
'intervalType' => Scheduler::INTERVAL_WEEKLY,
|
||||
'intervalType' => PostNotificationScheduler::INTERVAL_WEEKLY,
|
||||
'timeOfDay' => '25200',
|
||||
'weekDay' => '1',
|
||||
'monthDay' => '0',
|
||||
|
@ -10,13 +10,14 @@ use MailPoet\Models\Newsletter;
|
||||
use MailPoet\Models\NewsletterOption;
|
||||
use MailPoet\Models\NewsletterOptionField;
|
||||
use MailPoet\Models\NewsletterSegment;
|
||||
use MailPoet\Models\Segment;
|
||||
use MailPoet\Models\ScheduledTask;
|
||||
use MailPoet\Models\ScheduledTaskSubscriber;
|
||||
use MailPoet\Models\Segment;
|
||||
use MailPoet\Models\SendingQueue;
|
||||
use MailPoet\Models\Setting;
|
||||
use MailPoet\Models\Subscriber;
|
||||
use MailPoet\Models\SubscriberSegment;
|
||||
use MailPoet\Newsletter\Scheduler\WelcomeScheduler;
|
||||
use MailPoet\Segments\SubscribersFinder;
|
||||
use MailPoet\Tasks\Sending as SendingTask;
|
||||
|
||||
@ -183,7 +184,8 @@ class SchedulerTest extends \MailPoetTest {
|
||||
$this->_createNewsletterOptionField('role', Newsletter::TYPE_WELCOME);
|
||||
$newsletter_option = $this->_createNewsletterOption(
|
||||
$newsletter_option_field->id, $newsletter->id,
|
||||
\MailPoet\Newsletter\Scheduler\Scheduler::WORDPRESS_ALL_ROLES);
|
||||
WelcomeScheduler::WORDPRESS_ALL_ROLES
|
||||
);
|
||||
$newsletter = Newsletter::filter('filterWithOptions', Newsletter::TYPE_WELCOME)
|
||||
->findOne($newsletter->id);
|
||||
$queue = $this->_createQueue($newsletter->id);
|
||||
|
@ -109,7 +109,7 @@ class PostNotificationTest extends \MailPoetTest {
|
||||
// daily notification is scheduled at 14:00
|
||||
$newsletter = (object)[
|
||||
'id' => 1,
|
||||
'intervalType' => Scheduler::INTERVAL_DAILY,
|
||||
'intervalType' => PostNotificationScheduler::INTERVAL_DAILY,
|
||||
'monthDay' => null,
|
||||
'nthWeekDay' => null,
|
||||
'weekDay' => null,
|
||||
@ -133,7 +133,7 @@ class PostNotificationTest extends \MailPoetTest {
|
||||
// weekly notification is scheduled every Tuesday at 14:00
|
||||
$newsletter = (object)[
|
||||
'id' => 1,
|
||||
'intervalType' => Scheduler::INTERVAL_WEEKLY,
|
||||
'intervalType' => PostNotificationScheduler::INTERVAL_WEEKLY,
|
||||
'monthDay' => null,
|
||||
'nthWeekDay' => null,
|
||||
'weekDay' => Carbon::TUESDAY,
|
||||
@ -157,7 +157,7 @@ class PostNotificationTest extends \MailPoetTest {
|
||||
// monthly notification is scheduled every 20th day at 14:00
|
||||
$newsletter = (object)[
|
||||
'id' => 1,
|
||||
'intervalType' => Scheduler::INTERVAL_MONTHLY,
|
||||
'intervalType' => PostNotificationScheduler::INTERVAL_MONTHLY,
|
||||
'monthDay' => 19, // 20th (count starts from 0)
|
||||
'nthWeekDay' => null,
|
||||
'weekDay' => null,
|
||||
@ -181,7 +181,7 @@ class PostNotificationTest extends \MailPoetTest {
|
||||
// monthly notification is scheduled every last Saturday at 14:00
|
||||
$newsletter = (object)[
|
||||
'id' => 1,
|
||||
'intervalType' => Scheduler::INTERVAL_NTHWEEKDAY,
|
||||
'intervalType' => PostNotificationScheduler::INTERVAL_NTHWEEKDAY,
|
||||
'monthDay' => null,
|
||||
'nthWeekDay' => 'L', // L = last
|
||||
'weekDay' => Carbon::SATURDAY,
|
||||
@ -205,7 +205,7 @@ class PostNotificationTest extends \MailPoetTest {
|
||||
// notification is scheduled immediately (next minute)
|
||||
$newsletter = (object)[
|
||||
'id' => 1,
|
||||
'intervalType' => Scheduler::INTERVAL_IMMEDIATELY,
|
||||
'intervalType' => PostNotificationScheduler::INTERVAL_IMMEDIATELY,
|
||||
'monthDay' => null,
|
||||
'nthWeekDay' => null,
|
||||
'weekDay' => null,
|
||||
@ -229,7 +229,7 @@ class PostNotificationTest extends \MailPoetTest {
|
||||
$this->_createNewsletterOptions(
|
||||
$newsletter->id,
|
||||
[
|
||||
'intervalType' => Scheduler::INTERVAL_IMMEDIATELY,
|
||||
'intervalType' => PostNotificationScheduler::INTERVAL_IMMEDIATELY,
|
||||
'schedule' => '* * * * *',
|
||||
]
|
||||
);
|
||||
@ -263,7 +263,7 @@ class PostNotificationTest extends \MailPoetTest {
|
||||
$this->_createNewsletterOptions(
|
||||
$newsletter->id,
|
||||
[
|
||||
'intervalType' => Scheduler::INTERVAL_IMMEDIATELY,
|
||||
'intervalType' => PostNotificationScheduler::INTERVAL_IMMEDIATELY,
|
||||
'schedule' => '* * * * *',
|
||||
]
|
||||
);
|
||||
|
@ -18,17 +18,6 @@ use MailPoet\Tasks\Sending as SendingTask;
|
||||
use MailPoet\WP\Posts as WPPosts;
|
||||
|
||||
class SchedulerTest extends \MailPoetTest {
|
||||
function testItSetsConstants() {
|
||||
expect(Scheduler::SECONDS_IN_HOUR)->notEmpty();
|
||||
expect(Scheduler::LAST_WEEKDAY_FORMAT)->notEmpty();
|
||||
expect(Scheduler::WORDPRESS_ALL_ROLES)->notEmpty();
|
||||
expect(Scheduler::INTERVAL_IMMEDIATELY)->notEmpty();
|
||||
expect(Scheduler::INTERVAL_IMMEDIATE)->notEmpty();
|
||||
expect(Scheduler::INTERVAL_DAILY)->notEmpty();
|
||||
expect(Scheduler::INTERVAL_WEEKLY)->notEmpty();
|
||||
expect(Scheduler::INTERVAL_MONTHLY)->notEmpty();
|
||||
expect(Scheduler::INTERVAL_NTHWEEKDAY)->notEmpty();
|
||||
}
|
||||
|
||||
function testItGetsActiveNewslettersFilteredByTypeAndGroup() {
|
||||
$this->_createNewsletter($type = Newsletter::TYPE_WELCOME);
|
||||
|
@ -256,7 +256,7 @@ class WelcomeTest extends \MailPoetTest {
|
||||
$newsletter->id,
|
||||
[
|
||||
'event' => 'user',
|
||||
'role' => Scheduler::WORDPRESS_ALL_ROLES,
|
||||
'role' => WelcomeScheduler::WORDPRESS_ALL_ROLES,
|
||||
'afterTimeType' => 'days',
|
||||
'afterTimeNumber' => 1,
|
||||
]
|
||||
|
Reference in New Issue
Block a user