466 lines
7.8 KiB
PHP
466 lines
7.8 KiB
PHP
<?php
|
|
|
|
if ( ! class_exists( 'ES_Campaign' ) ) {
|
|
|
|
/**
|
|
* Class to handle single campaign options
|
|
*
|
|
* @class ES_Campaign
|
|
*/
|
|
class ES_Campaign {
|
|
|
|
/**
|
|
* Campaign id
|
|
*
|
|
* @since 4.4.1
|
|
* @var int
|
|
*/
|
|
public $id;
|
|
|
|
/**
|
|
* Workflow slug
|
|
*
|
|
* @since 4.4.1
|
|
* @var string
|
|
*/
|
|
public $slug;
|
|
|
|
/**
|
|
* Workflow name(slug)
|
|
*
|
|
* @since 4.4.1
|
|
* @var string
|
|
*/
|
|
public $name;
|
|
|
|
/**
|
|
* Workflow trigger object
|
|
*
|
|
* @since 4.4.1
|
|
* @var ES_Workflow_Trigger
|
|
*/
|
|
public $type;
|
|
|
|
/**
|
|
* Workflow actions
|
|
*
|
|
* @since 4.4.1
|
|
* @var ES_Workflow_Actions[]
|
|
*/
|
|
public $parent_id;
|
|
|
|
/**
|
|
* Workflow data absctraction class object
|
|
*
|
|
* @since 4.4.1
|
|
* @var ES_Workflow_Data_Layer
|
|
*/
|
|
public $parent_type;
|
|
|
|
/**
|
|
* Workflow status
|
|
*
|
|
* @since 4.4.1
|
|
* @var integer
|
|
*/
|
|
public $subject;
|
|
|
|
/**
|
|
* Workflow trigger name
|
|
*
|
|
* @since 4.4.1
|
|
* @var string
|
|
*/
|
|
public $body;
|
|
|
|
/**
|
|
* Workflow trigger options
|
|
*
|
|
* @since 4.4.1
|
|
* @var array
|
|
*/
|
|
public $from_name;
|
|
|
|
/**
|
|
* Workflow rules
|
|
*
|
|
* @since 4.4.1
|
|
* @var array
|
|
*/
|
|
public $from_email;
|
|
|
|
/**
|
|
* Workflow meta data
|
|
*
|
|
* @since 4.4.1
|
|
* @var array
|
|
*/
|
|
public $reply_to_email;
|
|
|
|
/**
|
|
* Workflow priority
|
|
*
|
|
* @since 4.4.1
|
|
* @var integer
|
|
*/
|
|
public $categories;
|
|
|
|
/**
|
|
* Workflow priority
|
|
*
|
|
* @since 4.4.1
|
|
* @var integer
|
|
*/
|
|
public $list_ids;
|
|
|
|
/**
|
|
* Camapign base template id
|
|
*
|
|
* @since 4.4.1
|
|
* @var integer
|
|
*/
|
|
public $base_template_id;
|
|
|
|
/**
|
|
* Camapign meta
|
|
*
|
|
* @since 4.4.1
|
|
* @var integer
|
|
*/
|
|
public $meta;
|
|
|
|
/**
|
|
* Campaign creation date/time
|
|
*
|
|
* @since 4.4.1
|
|
* @var string
|
|
*/
|
|
public $created_at;
|
|
|
|
/**
|
|
* Campaign last update date/time
|
|
*
|
|
* @since 4.4.1
|
|
* @var string
|
|
*/
|
|
public $updated_at;
|
|
|
|
/**
|
|
* Flag to check whether valid campaign object or not
|
|
*
|
|
* @since 4.4.1
|
|
* @var bool
|
|
*/
|
|
public $exists = false;
|
|
|
|
/**
|
|
* Campaign status
|
|
*
|
|
* @since 4.4.1
|
|
* @var bool
|
|
*/
|
|
public $status = '';
|
|
|
|
/**
|
|
* Added Logger Context
|
|
*
|
|
* @since 4.2.0
|
|
* @var array
|
|
*/
|
|
public $logger_context = array(
|
|
'source' => 'ig_es_workflow',
|
|
);
|
|
|
|
/**
|
|
* Class constructor
|
|
*
|
|
* @param $post mixed (object or post ID)
|
|
*/
|
|
public function __construct( $campaign = null ) {
|
|
|
|
if ( is_numeric( $campaign ) ) {
|
|
// Get from id
|
|
$campaign = self::get_instance( $campaign );
|
|
}
|
|
|
|
if ( is_object( $campaign ) ) {
|
|
$this->exists = true;
|
|
$this->id = $campaign->id;
|
|
$this->slug = $campaign->slug;
|
|
$this->name = $campaign->name;
|
|
$this->type = $campaign->type;
|
|
$this->parent_id = $campaign->parent_id;
|
|
$this->parent_type = $campaign->parent_type;
|
|
$this->subject = $campaign->subject;
|
|
$this->body = $campaign->body;
|
|
$this->from_name = $campaign->from_name;
|
|
$this->from_email = $campaign->from_email;
|
|
$this->reply_to_email = $campaign->reply_to_email;
|
|
$this->categories = $campaign->categories;
|
|
$this->list_ids = $campaign->list_ids;
|
|
$this->base_template_id = $campaign->base_template_id;
|
|
$this->status = $campaign->status;
|
|
$this->meta = maybe_unserialize( $campaign->meta );
|
|
$this->created_at = $campaign->created_at;
|
|
$this->updated_at = $campaign->updated_at;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Retrieve ES_Workflow instance.
|
|
*
|
|
* @global wpdb $wpdb WordPress database abstraction object.
|
|
*
|
|
* @param int $campaign_id Worfklow ID.
|
|
* @return ES_Workflow|false Worfklow object, false otherwise.
|
|
*/
|
|
public static function get_instance( $campaign_id = 0 ) {
|
|
|
|
$campaign_id = ES_Clean::id( $campaign_id );
|
|
if ( ! $campaign_id ) {
|
|
return false;
|
|
}
|
|
|
|
$_campaign = ES()->campaigns_db->get( $campaign_id, 'object' );
|
|
if ( ! $_campaign ) {
|
|
return false;
|
|
}
|
|
|
|
return new ES_Campaign( $_campaign );
|
|
}
|
|
|
|
/**
|
|
* Get workflow id
|
|
*
|
|
* @return int
|
|
*/
|
|
public function get_id() {
|
|
return $this->id ? ES_Clean::id( $this->id ) : 0;
|
|
}
|
|
|
|
/**
|
|
* Get workflow slug
|
|
*
|
|
* @return string
|
|
*/
|
|
public function get_slug() {
|
|
return $this->slug;
|
|
}
|
|
|
|
/**
|
|
* Get workflow name
|
|
*
|
|
* @return string
|
|
*/
|
|
public function get_name() {
|
|
return $this->name;
|
|
}
|
|
|
|
/**
|
|
* Get workflow type
|
|
*
|
|
* @return string
|
|
*/
|
|
public function get_type() {
|
|
return $this->type;
|
|
}
|
|
|
|
/**
|
|
* Get workflow parent_id
|
|
*
|
|
* @return string
|
|
*/
|
|
public function get_parent_id() {
|
|
return $this->parent_id;
|
|
}
|
|
|
|
/**
|
|
* Get workflow parent_type
|
|
*
|
|
* @return string
|
|
*/
|
|
public function get_parent_type() {
|
|
return $this->parent_type;
|
|
}
|
|
|
|
/**
|
|
* Get workflow subject
|
|
*
|
|
* @return string
|
|
*/
|
|
public function get_subject() {
|
|
return $this->subject;
|
|
}
|
|
|
|
/**
|
|
* Get workflow body
|
|
*
|
|
* @return string
|
|
*/
|
|
public function get_body() {
|
|
return $this->body;
|
|
}
|
|
|
|
/**
|
|
* Get workflow from_name
|
|
*
|
|
* @return string
|
|
*/
|
|
public function get_from_name() {
|
|
return $this->from_name;
|
|
}
|
|
|
|
/**
|
|
* Get workflow from_email
|
|
*
|
|
* @return string
|
|
*/
|
|
public function get_from_email() {
|
|
return $this->from_email;
|
|
}
|
|
|
|
/**
|
|
* Get workflow reply_to_email
|
|
*
|
|
* @return string
|
|
*/
|
|
public function get_reply_to_email() {
|
|
return $this->reply_to_email;
|
|
}
|
|
|
|
/**
|
|
* Get workflow categories
|
|
*
|
|
* @return string
|
|
*/
|
|
public function get_categories() {
|
|
return $this->categories;
|
|
}
|
|
|
|
/**
|
|
* Get workflow list_ids
|
|
*
|
|
* @return string
|
|
*/
|
|
public function get_list_ids() {
|
|
return $this->list_ids;
|
|
}
|
|
|
|
/**
|
|
* Get workflow base_template_id
|
|
*
|
|
* @return string
|
|
*/
|
|
public function get_base_template_id() {
|
|
return $this->base_template_id;
|
|
}
|
|
|
|
/**
|
|
* Get creation date/time of workflow.
|
|
*
|
|
* @return string
|
|
*/
|
|
public function get_date_created() {
|
|
return $this->created_at;
|
|
}
|
|
|
|
/**
|
|
* Get scheduled time to run workflow.
|
|
*
|
|
* @return string
|
|
*/
|
|
public function get_scheduled_time() {
|
|
return ES_Clean::string( $this->get_meta( 'scheduled_time' ) );
|
|
}
|
|
|
|
/**
|
|
* Is workflow active.
|
|
*
|
|
* @return bool
|
|
*/
|
|
public function is_active() {
|
|
if ( ! $this->exists ) {
|
|
return false;
|
|
}
|
|
|
|
return $this->get_status() === 'active';
|
|
}
|
|
|
|
/**
|
|
* Get workflow status.
|
|
*
|
|
* Possible statuses are active|inactive|trash
|
|
*
|
|
* @since 4.6
|
|
*
|
|
* @return string
|
|
*/
|
|
public function get_status() {
|
|
$status = $this->status;
|
|
if ( 1 === $status ) {
|
|
$status = 'active';
|
|
} elseif ( 0 === $status ) {
|
|
$status = 'inactive';
|
|
}
|
|
|
|
return $status;
|
|
}
|
|
|
|
|
|
/**
|
|
* Update worflow status.
|
|
*
|
|
* @param string $status active|inactive i.e 1|0
|
|
*/
|
|
public function update_status( $status ) {
|
|
|
|
if ( 'active' === $status ) {
|
|
$campaign_status = 1;
|
|
} elseif ( 'inactive' === $status ) {
|
|
$campaign_status = 0;
|
|
} else {
|
|
$campaign_status = $status;
|
|
}
|
|
|
|
$campaign_id = $this->get_id();
|
|
|
|
$status_updated = ES()->campaigns_db->update_status( $campaign_id, $campaign_status );
|
|
|
|
return $status_updated;
|
|
}
|
|
|
|
/**
|
|
* Get workflow meta data from meta key.
|
|
*
|
|
* @param $key
|
|
* @return mixed
|
|
*/
|
|
public function get_meta( $key ) {
|
|
return isset( $this->meta[ $key ] ) ? $this->meta[ $key ] : '';
|
|
}
|
|
|
|
/**
|
|
* Method to get edit url of a campaign
|
|
*
|
|
* @since 5.5.13
|
|
*
|
|
* @return string $edit_url Campaign edit URL
|
|
*/
|
|
public function get_edit_url() {
|
|
|
|
$id = $this->get_id();
|
|
$edit_url = admin_url( 'admin.php?page=es_newsletters' );
|
|
|
|
$edit_url = add_query_arg(
|
|
array(
|
|
'id' => $id,
|
|
'action' => 'edit',
|
|
),
|
|
$edit_url
|
|
);
|
|
|
|
return $edit_url;
|
|
}
|
|
}
|
|
}
|