Files
torebki-fabiola.pl/wp-content/plugins/email-subscribers/lite/includes/classes/class-es-campaign.php
2026-03-05 13:07:40 +01:00

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