Update last announcement date automatically

This commit is contained in:
Amine Ben hammou
2019-06-20 20:07:30 +01:00
committed by M. Shull
parent 2fe193d5d9
commit d980f9e3f4
5 changed files with 53 additions and 15 deletions

View File

@@ -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;

View File

@@ -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])

View File

@@ -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
);
}

View File

@@ -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();
}
}

View File

@@ -136,7 +136,7 @@ class WorkersFactory {
}
/** @return Beamer */
function createBeamerWorker($timer) {
function createBeamerkWorker($timer) {
return new Beamer($this->settings, $timer);
}