first commit

This commit is contained in:
2026-03-05 13:07:40 +01:00
commit 64ba0721ee
25709 changed files with 4691006 additions and 0 deletions

View File

@@ -0,0 +1,44 @@
<?php
/**
* Abstract trigger for form related triggers
*
* @since 4.4.6
* @version 1.0
* @package Email Subscribers
*/
defined( 'ABSPATH' ) || exit;
/***
* ES_Trigger_Form_Submitted class.
*
* @since 4.4.6
*/
abstract class ES_Trigger_Form_Submitted extends ES_Workflow_Trigger {
/**
* Declares data items available in trigger.
*
* @var array
*/
public $supplied_data_items = array( 'form_data' );
/**
* Validate a workflow.
*
* @param ES_Workflow $workflow Workglow object.
*
* @return bool
*/
public function validate_workflow( $workflow ) {
$form_data = $workflow->data_layer()->get_item( 'form_data' );
if ( ! is_array( $form_data ) || empty( $form_data['email'] ) ) {
return false;
}
return true;
}
}

View File

@@ -0,0 +1,81 @@
<?php
/**
* Triggers when a user gets subscribed
*
* @since 5.0.1
* @version 1.0
* @package Email Subscribers
*/
defined( 'ABSPATH' ) || exit;
/***
* ES_Trigger_Campaign_Failed class.
*
* @since 5.0.1
*/
class ES_Trigger_Campaign_Failed extends ES_Workflow_Trigger {
/**
* Declares data items available in trigger.
*
* @var array
*/
public $supplied_data_items = array( 'campaign' );
/**
* Load trigger admin props.
*/
public function load_admin_details() {
$this->title = __( 'Campaign failed', 'email-subscribers' );
$this->description = __( 'Fires when a campaign isn\'t sent after trying 3 times.', 'email-subscribers' );
$this->group = __( 'Admin', 'email-subscribers' );
}
/**
* Register trigger hooks.
*/
public function register_hooks() {
add_action( 'ig_es_campaign_failed', array( $this, 'handle_campaign_failed' ) );
}
/**
* Catch campaign failed hook
*
* @param array $trigger_data.
*/
public function handle_campaign_failed( $trigger_data ) {
$notification_guid = $trigger_data['notification_guid'];
// Prepare data.
$data = array(
'campaign' => array(
'notification_guid' => $notification_guid
)
);
$this->maybe_run( $data );
}
/**
* Validate a workflow.
*
* @param ES_Workflow $workflow Workflow object.
*
* @return bool
*/
public function validate_workflow( $workflow ) {
$campaign = $workflow->data_layer()->get_item( 'campaign' );
if ( empty( $campaign ) ) {
return false;
}
return true;
}
}

View File

@@ -0,0 +1,79 @@
<?php
/**
* Triggers when a user gets subscribed
*
* @since 5.0.1
* @version 1.0
* @package Email Subscribers
*/
defined( 'ABSPATH' ) || exit;
/***
* ES_Trigger_Campaign_Sent class.
*
* @since 5.0.1
*/
class ES_Trigger_Campaign_Sent extends ES_Workflow_Trigger {
/**
* Declares data items available in trigger.
*
* @var array
*/
public $supplied_data_items = array( 'campaign' );
/**
* Load trigger admin props.
*/
public function load_admin_details() {
$this->title = __( 'Campaign sent', 'email-subscribers' );
$this->description = __( 'Fires when a campaign is sent successfully.', 'email-subscribers' );
$this->group = __( 'Admin', 'email-subscribers' );
}
/**
* Register trigger hooks.
*/
public function register_hooks() {
add_action( 'ig_es_campaign_sent', array( $this, 'handle_campaign_sent' ) );
}
/**
* Catch user subscribed hook
*
* @param int $notification_guid Notification ID.
*/
public function handle_campaign_sent( $notification_guid ) {
// Prepare data.
$data = array(
'campaign' => array(
'notification_guid' => $notification_guid
)
);
$this->maybe_run( $data );
}
/**
* Validate a workflow.
*
* @param ES_Workflow $workflow Workflow object.
*
* @return bool
*/
public function validate_workflow( $workflow ) {
$campaign = $workflow->data_layer()->get_item( 'campaign' );
if ( empty( $campaign ) ) {
return false;
}
return true;
}
}

View File

@@ -0,0 +1,93 @@
<?php
/**
* Triggers when a user gets deleted
*
* @since 4.4.1
* @version 1.0
* @package Email Subscribers
*/
defined( 'ABSPATH' ) || exit;
/***
* ES_Trigger_User_Deleted class.
*
* @since 4.4.1
*/
class ES_Trigger_User_Deleted extends ES_Workflow_Trigger {
/**
* Declares data items available in trigger.
*
* @var array
*/
public $supplied_data_items = array( 'subscriber' );
/**
* Load trigger admin props.
*/
public function load_admin_details() {
$this->title = __( 'User Deleted', 'email-subscribers' );
$this->description = __( 'Fires when user deleted from WordPress.', 'email-subscribers' );
$this->group = __( 'User', 'email-subscribers' );
}
/**
* Register trigger hooks.
*/
public function register_hooks() {
add_action( 'delete_user', array( $this, 'handle_user_delete' ), 10, 1 );
}
/**
* Catch user deleted hook
*
* @param int $user_id User ID.
*/
public function handle_user_delete( $user_id = 0 ) {
// Get user info.
$user = get_userdata( $user_id );
if ( ! ( $user instanceof WP_User ) ) {
return;
}
$email = $user->user_email;
if ( ! empty( $email ) ) {
$subscriber = array(
'email' => $email,
);
// Prepare data.
$data = array(
'subscriber' => $subscriber,
);
$this->maybe_run( $data );
}
}
/**
* Validate a workflow.
*
* @param ES_Workflow $workflow Workflow object.
*
* @return bool
*/
public function validate_workflow( $workflow ) {
$subscriber = $workflow->data_layer()->get_item( 'subscriber' );
if ( ! $subscriber ) {
return false;
}
return true;
}
}

View File

@@ -0,0 +1,83 @@
<?php
/**
* Triggers when a user gets registered
*
* @since 4.4.1
* @version 1.0
* @package Email Subscribers
*/
defined( 'ABSPATH' ) || exit;
/***
* ES_Trigger_User_Registered class.
*
* @since 4.4.0
*/
class ES_Trigger_User_Registered extends ES_Workflow_Trigger {
/**
* Declares data items available in trigger.
*
* @var array
*/
public $supplied_data_items = array( 'user', 'coupon' );
/**
* Load trigger admin props.
*/
public function load_admin_details() {
$this->title = __( 'User Registered', 'email-subscribers' );
$this->description = __( 'Fires when someone signup.', 'email-subscribers' );
$this->group = __( 'User', 'email-subscribers' );
}
/**
* Register trigger hooks.
*/
public function register_hooks() {
add_action( 'user_register', array( $this, 'handle_user_register' ) );
}
/**
* Catch user registered hook
*
* @param int $user_id User ID.
*/
public function handle_user_register( $user_id ) {
// Get user info.
$user = get_userdata( $user_id );
if ( ! ( $user instanceof WP_User ) ) {
return;
}
// Prepare data.
$data = array(
'user' => $user,
);
$this->maybe_run( $data );
}
/**
* Validate a workflow.
*
* @param ES_Workflow $workflow Workflow object.
*
* @return bool
*/
public function validate_workflow( $workflow ) {
$user = $workflow->data_layer()->get_item( 'user' );
if ( ! $user ) {
return false;
}
return true;
}
}

View File

@@ -0,0 +1,77 @@
<?php
/**
* Triggers when a user gets subscribed
*
* @since 5.0.1
* @version 1.0
* @package Email Subscribers
*/
defined( 'ABSPATH' ) || exit;
/***
* ES_Trigger_User_Subscribed class.
*
* @since 5.0.1
*/
class ES_Trigger_User_Subscribed extends ES_Workflow_Trigger {
/**
* Declares data items available in trigger.
*
* @var array
*/
public $supplied_data_items = array( 'subscriber', 'coupon' );
/**
* Load trigger admin props.
*/
public function load_admin_details() {
$this->title = __( 'User Subscribed', 'email-subscribers' );
$this->description = __( 'Fires when someone subscribes.', 'email-subscribers' );
$this->group = __( 'Subscriber', 'email-subscribers' );
}
/**
* Register trigger hooks.
*/
public function register_hooks() {
add_action( 'ig_es_contact_subscribed', array( $this, 'handle_user_subscribe' ) );
}
/**
* Catch user subscribed hook
*
* @param int $subscriber_id User ID.
*/
public function handle_user_subscribe( $subscriber ) {
// Prepare data.
$data = array(
'subscriber' => $subscriber
);
$this->maybe_run( $data );
}
/**
* Validate a workflow.
*
* @param ES_Workflow $workflow Workflow object.
*
* @return bool
*/
public function validate_workflow( $workflow ) {
$subscriber = $workflow->data_layer()->get_item( 'subscriber' );
if ( empty( $subscriber ) ) {
return false;
}
return true;
}
}

View File

@@ -0,0 +1,77 @@
<?php
/**
* Triggers when a user gets unconfirmed
*
* @since 5.0.1
* @version 1.0
* @package Email Subscribers
*/
defined( 'ABSPATH' ) || exit;
/***
* ES_Trigger_User_Unconfirmed class.
*
* @since 5.0.1
*/
class ES_Trigger_User_Unconfirmed extends ES_Workflow_Trigger {
/**
* Declares data items available in trigger.
*
* @var array
*/
public $supplied_data_items = array( 'subscriber' );
/**
* Load trigger admin props.
*/
public function load_admin_details() {
$this->title = __( 'User Unconfirmed', 'email-subscribers' );
$this->description = __( 'Fires when someone submits subscription form.', 'email-subscribers' );
$this->group = __( 'Subscriber', 'email-subscribers' );
}
/**
* Register trigger hooks.
*/
public function register_hooks() {
add_action( 'ig_es_contact_unconfirmed', array( $this, 'handle_user_subscribe' ) );
}
/**
* Catch user unconfirmed hook
*
* @param int $subscriber_id User ID.
*/
public function handle_user_subscribe( $subscriber ) {
// Prepare data.
$data = array(
'subscriber' => $subscriber
);
$this->maybe_run( $data );
}
/**
* Validate a workflow.
*
* @param ES_Workflow $workflow Workflow object.
*
* @return bool
*/
public function validate_workflow( $workflow ) {
$subscriber = $workflow->data_layer()->get_item( 'subscriber' );
if ( empty( $subscriber ) ) {
return false;
}
return true;
}
}

View File

@@ -0,0 +1,80 @@
<?php
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
if ( ! class_exists( 'ES_Trigger_User_Unsubscribed' ) ) {
/**
* Class ES_Trigger_User_Unsubscribed
*/
class ES_Trigger_User_Unsubscribed extends ES_Workflow_Trigger {
/**
* Declares data items available in trigger.
*
* @var array
*/
public $supplied_data_items = array( 'subscriber' );
/**
* Load trigger admin details.
*/
public function load_admin_details() {
$this->title = __( 'User Unsubscribed', 'email-subscribers' );
$this->description = __( 'Fires when someone unsubscribes.', 'email-subscribers' );
$this->group = __( 'Subscriber', 'email-subscribers' );
}
/**
* Register trigger's hooks.
*/
public function register_hooks() {
// Add action for custom trigger event
add_action( 'ig_es_contact_unsubscribe', array( $this, 'handle_trigger_event' ), 999, 4 );
}
/**
* Handle custom trigger event.
*
* @param array $user_data
*/
public function handle_trigger_event( $subscriber_id, $message_id, $campaign_id, $unsubscribe_lists ) {
if ( ! empty( $subscriber_id ) ) {
$subscriber = ES()->contacts_db->get( $subscriber_id );
$list_id = is_array($unsubscribe_lists) ? $unsubscribe_lists[0] : $unsubscribe_lists;
$unsubscriber_reason = ES()->contacts_db->get_unsubscriber_reason($subscriber_id, $list_id);
if ( ! empty( $subscriber ) ) {
$email = ! empty( $subscriber['email'] ) && is_email( $subscriber['email'] ) ? $subscriber['email'] : '';
$first_name = ! empty( $subscriber['first_name'] ) ? $subscriber['first_name'] : '';
$last_name = ! empty( $subscriber['last_name'] ) ? $subscriber['last_name'] : '';
$unsubscribe_feedback_text = ! empty( $unsubscriber_reason ) ? $unsubscriber_reason :'';
if ( ! empty( $email ) ) {
$subscriber = array(
'email' => $email,
'name' => $first_name . ' ' . $last_name,
'unsubscribe_feedback_text'=>$unsubscribe_feedback_text,
);
// Prepare data.
$data = array(
'subscriber' => $subscriber,
);
$this->maybe_run( $data );
}
}
}
}
}
}

View File

@@ -0,0 +1,84 @@
<?php
/**
* Triggers when a user is updated
*
* @since 4.4.1
* @version 1.0
* @package Email Subscribers
*/
defined( 'ABSPATH' ) || exit;
/***
* ES_Trigger_User_Updated class.
*
* @since 4.4.1
*/
class ES_Trigger_User_Updated extends ES_Workflow_Trigger {
/**
* Declares data items available in trigger.
*
* @var array
*/
public $supplied_data_items = array( 'user' );
/**
* Load trigger admin props.
*/
public function load_admin_details() {
$this->title = __( 'User Updated', 'email-subscribers' );
$this->description = __( 'Fires when a user is updated.', 'email-subscribers' );
$this->group = __( 'User', 'email-subscribers' );
}
/**
* Register trigger hooks.
*/
public function register_hooks() {
add_action( 'profile_update', array( $this, 'handle_user_updated' ), 10, 2 );
}
/**
* Catch user updated hook
*
* @param int $user_id User ID.
* @param WP_User $old_user_data User object having old data.
*/
public function handle_user_updated( $user_id, $old_user_data ) {
// Get user info.
$user = get_userdata( $user_id );
if ( ! ( $user instanceof WP_User ) ) {
return;
}
// Prepare data.
$data = array(
'user' => $user,
);
$this->maybe_run( $data );
}
/**
* Validate a workflow.
*
* @param ES_Workflow $workflow Workflow object.
*
* @return bool
*/
public function validate_workflow( $workflow ) {
$user = $workflow->data_layer()->get_item( 'user' );
if ( ! $user ) {
return false;
}
return true;
}
}