Update last announcement date automatically
This commit is contained in:
committed by
M. Shull
parent
2fe193d5d9
commit
d980f9e3f4
@@ -706,10 +706,11 @@ class Menu {
|
||||
|
||||
$user_id = $data['current_wp_user']['ID'];
|
||||
|
||||
$last_announcement_date = $this->settings->get('last_announcement_date');
|
||||
$last_announcement_seen = $this->user_flags->get('last_announcement_seen');
|
||||
$data['feature_announcement_has_news'] = (
|
||||
empty($last_announcement_seen) ||
|
||||
$last_announcement_seen < strtotime(self::LAST_ANNOUNCEMENT_DATE)
|
||||
$last_announcement_seen < $last_announcement_date
|
||||
);
|
||||
$data['last_announcement_seen'] = $last_announcement_seen;
|
||||
|
||||
|
@@ -5,6 +5,7 @@ use Carbon\Carbon;
|
||||
use MailPoet\Config\PopulatorData\DefaultForm;
|
||||
use MailPoet\Cron\CronTrigger;
|
||||
use MailPoet\Cron\Workers\AuthorizedSendingEmailsCheck;
|
||||
use MailPoet\Cron\Workers\Beamer;
|
||||
use MailPoet\Cron\Workers\InactiveSubscribers;
|
||||
use MailPoet\Mailer\MailerLog;
|
||||
use MailPoet\Models\NewsletterTemplate;
|
||||
@@ -139,6 +140,7 @@ class Populator {
|
||||
$this->updateMetaFields();
|
||||
$this->scheduleInitialInactiveSubscribersCheck();
|
||||
$this->scheduleAuthorizedSendingEmailsCheck();
|
||||
$this->initLastAnnouncementDate();
|
||||
// Will be uncommented on task [MAILPOET-1998]
|
||||
// $this->updateFormsSuccessMessages();
|
||||
}
|
||||
@@ -549,6 +551,13 @@ class Populator {
|
||||
);
|
||||
}
|
||||
|
||||
private function initLastAnnouncementDate() {
|
||||
if (!$this->settings->get('last_announcement_date')) {
|
||||
$beamer = new Beamer($this->settings);
|
||||
$beamer->setLastAnnouncementDate();
|
||||
}
|
||||
}
|
||||
|
||||
private function scheduleTask($type, $datetime) {
|
||||
$task = ScheduledTask::where('type', $type)
|
||||
->whereRaw('status = ? OR status IS NULL', [ScheduledTask::STATUS_SCHEDULED])
|
||||
|
@@ -17,6 +17,7 @@ use MailPoet\Cron\Workers\KeyCheck\PremiumKeyCheck as PremiumKeyCheckWorker;
|
||||
use MailPoet\Cron\Workers\StatsNotifications\Worker as StatsNotificationsWorker;
|
||||
use MailPoet\Cron\Workers\KeyCheck\SendingServiceKeyCheck as SendingServiceKeyCheckWorker;
|
||||
use MailPoet\Cron\Workers\WooCommerceSync as WooCommerceSyncWorker;
|
||||
use MailPoet\Cron\Workers\Beamer as BeamerWorker;
|
||||
|
||||
if (!defined('ABSPATH')) exit;
|
||||
|
||||
@@ -111,6 +112,17 @@ class WordPress {
|
||||
'scheduled_in' => [self::SCHEDULED_IN_THE_PAST],
|
||||
'status' => ['null', ScheduledTask::STATUS_SCHEDULED],
|
||||
]);
|
||||
// Beamer
|
||||
$beamer_due_checks = self::getTasksCount([
|
||||
'type' => BeamerWorker::TASK_TYPE,
|
||||
'scheduled_in' => [self::SCHEDULED_IN_THE_PAST],
|
||||
'status' => ['null', ScheduledTask::STATUS_SCHEDULED],
|
||||
]);
|
||||
$beamer_future_checks = self::getTasksCount([
|
||||
'type' => BeamerWorker::TASK_TYPE,
|
||||
'scheduled_in' => [self::SCHEDULED_IN_THE_FUTURE],
|
||||
'status' => [ScheduledTask::STATUS_SCHEDULED],
|
||||
]);
|
||||
|
||||
// Authorized email addresses check
|
||||
$authorized_email_addresses_tasks = self::getTasksCount([
|
||||
@@ -125,6 +137,7 @@ class WordPress {
|
||||
$sending_service_key_check_active = ($mp_sending_enabled && ($msskeycheck_due_tasks || !$msskeycheck_future_tasks));
|
||||
$premium_key_check_active = ($premium_key_specified && ($premium_keycheck_due_tasks || !$premium_keycheck_future_tasks));
|
||||
$migration_active = !$migration_disabled && ($migration_due_tasks || (!$migration_completed_tasks && !$migration_future_tasks));
|
||||
$beamer_active = $beamer_due_checks || !$beamer_future_checks;
|
||||
|
||||
return (
|
||||
$migration_active
|
||||
@@ -136,6 +149,7 @@ class WordPress {
|
||||
|| $inactive_subscribers_tasks
|
||||
|| $woo_commerce_sync_tasks
|
||||
|| $authorized_email_addresses_tasks
|
||||
|| $beamer_active
|
||||
);
|
||||
}
|
||||
|
||||
|
@@ -6,11 +6,13 @@ use MailPoet\Models\ScheduledTask;
|
||||
use MailPoet\Cron\Workers\SimpleWorker;
|
||||
use MailPoet\Settings\SettingsController;
|
||||
use MailPoet\WP\Functions as WPFunctions;
|
||||
use function GuzzleHttp\json_decode;
|
||||
|
||||
if (!defined('ABSPATH')) exit;
|
||||
|
||||
class Beamer extends SimpleWorker {
|
||||
const TASK_TYPE = 'beamer';
|
||||
const API_KEY = 'b_neUUX8kIYVEYZqQzSnwhmVggVLA6lT+GzDQOW7hrP38=';
|
||||
|
||||
/** @var SettingsController */
|
||||
private $settings;
|
||||
@@ -21,14 +23,26 @@ class Beamer extends SimpleWorker {
|
||||
}
|
||||
|
||||
function processTaskStrategy(ScheduledTask $task) {
|
||||
$this->settings->set('last_announcement_date', 'timestamp');
|
||||
return $this->setLastAnnouncementDate();
|
||||
}
|
||||
|
||||
function setLastAnnouncementDate() {
|
||||
$wp = new WPFunctions();
|
||||
$response = $wp->wpRemoteGet('https://api.getbeamer.com/v0/posts?published=true&maxResults=1', [
|
||||
'headers' => [
|
||||
'Beamer-Api-Key' => self::API_KEY,
|
||||
],
|
||||
]);
|
||||
$posts = $wp->wpRemoteRetrieveBody($response);
|
||||
if (empty($posts)) return false;
|
||||
$posts = json_decode($posts);
|
||||
$this->settings->set('last_announcement_date', Carbon::createFromTimeString($posts[0]->date)->getTimestamp());
|
||||
return true;
|
||||
}
|
||||
|
||||
// static function getNextRunDate() {
|
||||
// $wp = new WPFunctions();
|
||||
// $date = Carbon::createFromTimestamp($wp->currentTime('timestamp'));
|
||||
// return $date->addMinute();
|
||||
// // return $date->hour(11)->minute(00)->second(00)->addDay();
|
||||
// }
|
||||
static function getNextRunDate() {
|
||||
$wp = new WPFunctions();
|
||||
$date = Carbon::createFromTimestamp($wp->currentTime('timestamp'));
|
||||
return $date->hour(11)->minute(00)->second(00)->addDay();
|
||||
}
|
||||
}
|
||||
|
@@ -136,7 +136,7 @@ class WorkersFactory {
|
||||
}
|
||||
|
||||
/** @return Beamer */
|
||||
function createBeamerWorker($timer) {
|
||||
function createBeamerkWorker($timer) {
|
||||
return new Beamer($this->settings, $timer);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user