Add Doctrine entities for sending queues and scheduled tasks
[MAILPOET-2216]
This commit is contained in:
@ -127,6 +127,12 @@ class NewsletterEntity {
|
||||
*/
|
||||
private $options;
|
||||
|
||||
/**
|
||||
* @OneToOne(targetEntity="MailPoet\Entities\SendingQueueEntity", mappedBy="newsletter")
|
||||
* @var SendingQueueEntity|null
|
||||
*/
|
||||
private $queue;
|
||||
|
||||
function __construct() {
|
||||
$this->newsletter_segments = new ArrayCollection();
|
||||
$this->options = new ArrayCollection();
|
||||
@ -327,4 +333,18 @@ class NewsletterEntity {
|
||||
function getOptions() {
|
||||
return $this->options;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return SendingQueueEntity|null
|
||||
*/
|
||||
function getQueue() {
|
||||
return $this->queue;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param SendingQueueEntity|null $queue
|
||||
*/
|
||||
function setQueue($queue) {
|
||||
$this->queue = $queue;
|
||||
}
|
||||
}
|
||||
|
148
lib/Entities/ScheduledTaskEntity.php
Normal file
148
lib/Entities/ScheduledTaskEntity.php
Normal file
@ -0,0 +1,148 @@
|
||||
<?php
|
||||
|
||||
namespace MailPoet\Entities;
|
||||
|
||||
use DateTimeInterface;
|
||||
use MailPoet\Doctrine\EntityTraits\AutoincrementedIdTrait;
|
||||
use MailPoet\Doctrine\EntityTraits\CreatedAtTrait;
|
||||
use MailPoet\Doctrine\EntityTraits\DeletedAtTrait;
|
||||
use MailPoet\Doctrine\EntityTraits\UpdatedAtTrait;
|
||||
|
||||
/**
|
||||
* @Entity()
|
||||
* @Table(name="scheduled_tasks")
|
||||
*/
|
||||
class ScheduledTaskEntity {
|
||||
const STATUS_COMPLETED = 'completed';
|
||||
const STATUS_SCHEDULED = 'scheduled';
|
||||
const STATUS_PAUSED = 'paused';
|
||||
const VIRTUAL_STATUS_RUNNING = 'running'; // For historical reasons this is stored as null in DB
|
||||
const PRIORITY_HIGH = 1;
|
||||
const PRIORITY_MEDIUM = 5;
|
||||
const PRIORITY_LOW = 10;
|
||||
|
||||
use AutoincrementedIdTrait;
|
||||
use CreatedAtTrait;
|
||||
use UpdatedAtTrait;
|
||||
use DeletedAtTrait;
|
||||
|
||||
/**
|
||||
* @Column(type="string")
|
||||
* @var string|null
|
||||
*/
|
||||
private $type;
|
||||
|
||||
/**
|
||||
* @Column(type="string")
|
||||
* @var string|null
|
||||
*/
|
||||
private $status;
|
||||
|
||||
/**
|
||||
* @Column(type="integer")
|
||||
* @var int
|
||||
*/
|
||||
private $priority = 0;
|
||||
|
||||
/**
|
||||
* @Column(type="datetimetz")
|
||||
* @var DateTimeInterface|null
|
||||
*/
|
||||
private $scheduled_at;
|
||||
|
||||
/**
|
||||
* @Column(type="datetimetz")
|
||||
* @var DateTimeInterface|null
|
||||
*/
|
||||
private $processed_at;
|
||||
|
||||
/**
|
||||
* @Column(type="json")
|
||||
* @var array|null
|
||||
*/
|
||||
private $meta;
|
||||
|
||||
/**
|
||||
* @return string|null
|
||||
*/
|
||||
function getType() {
|
||||
return $this->type;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string|null $type
|
||||
*/
|
||||
function setType($type) {
|
||||
$this->type = $type;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string|null
|
||||
*/
|
||||
function getStatus() {
|
||||
return $this->status;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string|null $status
|
||||
*/
|
||||
function setStatus($status) {
|
||||
$this->status = $status;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return int
|
||||
*/
|
||||
function getPriority() {
|
||||
return $this->priority;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int $priority
|
||||
*/
|
||||
function setPriority($priority) {
|
||||
$this->priority = $priority;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return DateTimeInterface|null
|
||||
*/
|
||||
function getScheduledAt() {
|
||||
return $this->scheduled_at;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param DateTimeInterface|null $scheduled_at
|
||||
*/
|
||||
function setScheduledAt($scheduled_at) {
|
||||
$this->scheduled_at = $scheduled_at;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return DateTimeInterface|null
|
||||
*/
|
||||
function getProcessedAt() {
|
||||
return $this->processed_at;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param DateTimeInterface|null $processed_at
|
||||
*/
|
||||
function setProcessedAt($processed_at) {
|
||||
$this->processed_at = $processed_at;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array|null
|
||||
*/
|
||||
function getMeta() {
|
||||
return $this->meta;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array|null $meta
|
||||
*/
|
||||
function setMeta($meta) {
|
||||
$this->meta = $meta;
|
||||
}
|
||||
}
|
200
lib/Entities/SendingQueueEntity.php
Normal file
200
lib/Entities/SendingQueueEntity.php
Normal file
@ -0,0 +1,200 @@
|
||||
<?php
|
||||
|
||||
namespace MailPoet\Entities;
|
||||
|
||||
use MailPoet\Doctrine\EntityTraits\AutoincrementedIdTrait;
|
||||
use MailPoet\Doctrine\EntityTraits\CreatedAtTrait;
|
||||
use MailPoet\Doctrine\EntityTraits\DeletedAtTrait;
|
||||
use MailPoet\Doctrine\EntityTraits\UpdatedAtTrait;
|
||||
|
||||
/**
|
||||
* @Entity()
|
||||
* @Table(name="sending_queues")
|
||||
*/
|
||||
class SendingQueueEntity {
|
||||
const STATUS_COMPLETED = 'completed';
|
||||
const STATUS_SCHEDULED = 'scheduled';
|
||||
const STATUS_PAUSED = 'paused';
|
||||
const PRIORITY_HIGH = 1;
|
||||
const PRIORITY_MEDIUM = 5;
|
||||
const PRIORITY_LOW = 10;
|
||||
|
||||
use AutoincrementedIdTrait;
|
||||
use CreatedAtTrait;
|
||||
use UpdatedAtTrait;
|
||||
use DeletedAtTrait;
|
||||
|
||||
/**
|
||||
* @Column(type="json_or_serialized")
|
||||
* @var array|null
|
||||
*/
|
||||
private $newsletter_rendered_body;
|
||||
|
||||
/**
|
||||
* @Column(type="string")
|
||||
* @var string|null
|
||||
*/
|
||||
private $newsletter_rendered_subject;
|
||||
|
||||
/**
|
||||
* @Column(type="text")
|
||||
* @var string|null
|
||||
*/
|
||||
private $subscribers;
|
||||
|
||||
/**
|
||||
* @Column(type="integer")
|
||||
* @var int
|
||||
*/
|
||||
private $count_total = 0;
|
||||
|
||||
/**
|
||||
* @Column(type="integer")
|
||||
* @var int
|
||||
*/
|
||||
private $count_processed = 0;
|
||||
|
||||
/**
|
||||
* @Column(type="integer")
|
||||
* @var int
|
||||
*/
|
||||
private $count_to_process = 0;
|
||||
|
||||
/**
|
||||
* @Column(type="json")
|
||||
* @var array|null
|
||||
*/
|
||||
private $meta;
|
||||
|
||||
/**
|
||||
* @OneToOne(targetEntity="MailPoet\Entities\ScheduledTaskEntity")
|
||||
* @var ScheduledTaskEntity
|
||||
*/
|
||||
private $task;
|
||||
|
||||
/**
|
||||
* @OneToOne(targetEntity="MailPoet\Entities\NewsletterEntity", inversedBy="sending_queue")
|
||||
* @var NewsletterEntity
|
||||
*/
|
||||
private $newsletter;
|
||||
|
||||
/**
|
||||
* @return array|null
|
||||
*/
|
||||
function getNewsletterRenderedBody() {
|
||||
return $this->newsletter_rendered_body;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array|null $newsletter_rendered_body
|
||||
*/
|
||||
function setNewsletterRenderedBody($newsletter_rendered_body) {
|
||||
$this->newsletter_rendered_body = $newsletter_rendered_body;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string|null
|
||||
*/
|
||||
function getNewsletterRenderedSubject() {
|
||||
return $this->newsletter_rendered_subject;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string|null $newsletter_rendered_subject
|
||||
*/
|
||||
function setNewsletterRenderedSubject($newsletter_rendered_subject) {
|
||||
$this->newsletter_rendered_subject = $newsletter_rendered_subject;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string|null
|
||||
*/
|
||||
function getSubscribers() {
|
||||
return $this->subscribers;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string|null $subscribers
|
||||
*/
|
||||
function setSubscribers($subscribers) {
|
||||
$this->subscribers = $subscribers;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return int
|
||||
*/
|
||||
function getCountTotal() {
|
||||
return $this->count_total;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int $count_total
|
||||
*/
|
||||
function setCountTotal($count_total) {
|
||||
$this->count_total = $count_total;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return int
|
||||
*/
|
||||
function getCountProcessed() {
|
||||
return $this->count_processed;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int $count_processed
|
||||
*/
|
||||
function setCountProcessed($count_processed) {
|
||||
$this->count_processed = $count_processed;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return int
|
||||
*/
|
||||
function getCountToProcess() {
|
||||
return $this->count_to_process;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int $count_to_process
|
||||
*/
|
||||
function setCountToProcess($count_to_process) {
|
||||
$this->count_to_process = $count_to_process;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array|null
|
||||
*/
|
||||
function getMeta() {
|
||||
return $this->meta;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array|null $meta
|
||||
*/
|
||||
function setMeta($meta) {
|
||||
$this->meta = $meta;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return ScheduledTaskEntity
|
||||
*/
|
||||
function getTask() {
|
||||
return $this->task;
|
||||
}
|
||||
|
||||
function setTask(ScheduledTaskEntity $task) {
|
||||
$this->task = $task;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return NewsletterEntity
|
||||
*/
|
||||
function getNewsletter() {
|
||||
return $this->newsletter;
|
||||
}
|
||||
|
||||
function setNewsletter(NewsletterEntity $newsletter) {
|
||||
$this->newsletter = $newsletter;
|
||||
}
|
||||
}
|
@ -3,6 +3,7 @@
|
||||
namespace MailPoet\Models;
|
||||
|
||||
use Carbon\Carbon;
|
||||
use MailPoet\Entities\ScheduledTaskEntity;
|
||||
use MailPoet\Util\Helpers;
|
||||
use MailPoet\WP\Functions as WPFunctions;
|
||||
|
||||
@ -20,13 +21,13 @@ if (!defined('ABSPATH')) exit;
|
||||
*/
|
||||
class ScheduledTask extends Model {
|
||||
public static $_table = MP_SCHEDULED_TASKS_TABLE;
|
||||
const STATUS_COMPLETED = 'completed';
|
||||
const STATUS_SCHEDULED = 'scheduled';
|
||||
const STATUS_PAUSED = 'paused';
|
||||
const VIRTUAL_STATUS_RUNNING = 'running'; // For historical reasons this is stored as null in DB
|
||||
const PRIORITY_HIGH = 1;
|
||||
const PRIORITY_MEDIUM = 5;
|
||||
const PRIORITY_LOW = 10;
|
||||
const STATUS_COMPLETED = ScheduledTaskEntity::STATUS_COMPLETED;
|
||||
const STATUS_SCHEDULED = ScheduledTaskEntity::STATUS_SCHEDULED;
|
||||
const STATUS_PAUSED = ScheduledTaskEntity::STATUS_PAUSED;
|
||||
const VIRTUAL_STATUS_RUNNING = ScheduledTaskEntity::VIRTUAL_STATUS_RUNNING; // For historical reasons this is stored as null in DB
|
||||
const PRIORITY_HIGH = ScheduledTaskEntity::PRIORITY_HIGH;
|
||||
const PRIORITY_MEDIUM = ScheduledTaskEntity::PRIORITY_MEDIUM;
|
||||
const PRIORITY_LOW = ScheduledTaskEntity::PRIORITY_LOW;
|
||||
|
||||
const BASIC_RESCHEDULE_TIMEOUT = 5; //minutes
|
||||
const MAX_RESCHEDULE_TIMEOUT = 1440; //minutes
|
||||
|
@ -1,6 +1,7 @@
|
||||
<?php
|
||||
namespace MailPoet\Models;
|
||||
|
||||
use MailPoet\Entities\SendingQueueEntity;
|
||||
use MailPoet\Util\Helpers;
|
||||
use MailPoet\WP\Emoji;
|
||||
use MailPoet\Tasks\Subscribers as TaskSubscribers;
|
||||
@ -23,12 +24,12 @@ if (!defined('ABSPATH')) exit;
|
||||
|
||||
class SendingQueue extends Model {
|
||||
public static $_table = MP_SENDING_QUEUES_TABLE;
|
||||
const STATUS_COMPLETED = 'completed';
|
||||
const STATUS_SCHEDULED = 'scheduled';
|
||||
const STATUS_PAUSED = 'paused';
|
||||
const PRIORITY_HIGH = 1;
|
||||
const PRIORITY_MEDIUM = 5;
|
||||
const PRIORITY_LOW = 10;
|
||||
const STATUS_COMPLETED = SendingQueueEntity::STATUS_COMPLETED;
|
||||
const STATUS_SCHEDULED = SendingQueueEntity::STATUS_SCHEDULED;
|
||||
const STATUS_PAUSED = SendingQueueEntity::STATUS_PAUSED;
|
||||
const PRIORITY_HIGH = SendingQueueEntity::PRIORITY_HIGH;
|
||||
const PRIORITY_MEDIUM = SendingQueueEntity::PRIORITY_MEDIUM;
|
||||
const PRIORITY_LOW = SendingQueueEntity::PRIORITY_LOW;
|
||||
|
||||
private $emoji;
|
||||
|
||||
|
Reference in New Issue
Block a user