PluginProbe ʕ •ᴥ•ʔ
OttoKit: All-in-One Automation Platform / 1.1.36
OttoKit: All-in-One Automation Platform v1.1.36
1.1.37 1.1.36 1.1.35 1.1.34 1.1.33 1.1.32 1.1.31 1.1.30 1.1.29 1.1.28 1.1.27 1.1.9 trunk 1.0.10 1.0.11 1.0.12 1.0.13 1.0.14 1.0.15 1.0.16 1.0.17 1.0.18 1.0.19 1.0.20 1.0.21 1.0.22 1.0.23 1.0.24 1.0.25 1.0.26 1.0.27 1.0.28 1.0.29 1.0.30 1.0.31 1.0.32 1.0.33 1.0.34 1.0.35 1.0.36 1.0.37 1.0.38 1.0.39 1.0.40 1.0.41 1.0.42 1.0.43 1.0.44 1.0.45 1.0.46 1.0.47 1.0.48 1.0.49 1.0.50 1.0.51 1.0.52 1.0.53 1.0.54 1.0.55 1.0.56 1.0.57 1.0.58 1.0.59 1.0.60 1.0.61 1.0.62 1.0.63 1.0.64 1.0.65 1.0.66 1.0.67 1.0.68 1.0.69 1.0.7 1.0.70 1.0.71 1.0.72 1.0.73 1.0.74 1.0.75 1.0.76 1.0.77 1.0.78 1.0.79 1.0.8 1.0.80 1.0.81 1.0.82 1.0.83 1.0.84 1.0.85 1.0.86 1.0.87 1.0.88 1.0.89 1.0.9 1.0.90 1.1.0 1.1.1 1.1.10 1.1.11 1.1.12 1.1.13 1.1.14 1.1.15 1.1.16 1.1.17 1.1.18 1.1.19 1.1.2 1.1.20 1.1.21 1.1.22 1.1.23 1.1.24 1.1.25 1.1.26 1.1.3 1.1.4 1.1.5 1.1.6 1.1.7 1.1.8
suretriggers / src / Integrations / fluentcrm / triggers / email-unsubscribed-fluentcrm.php
suretriggers / src / Integrations / fluentcrm / triggers Last commit date
add-tag-to-contact-fluentcrm.php 1 year ago campaign-sent-fluentcrm.php 10 months ago company-assigned-to-contact-fluentcrm.php 10 months ago company-created-fluentcrm.php 10 months ago company-deleted-fluentcrm.php 10 months ago company-unassigned-from-contact-fluentcrm.php 10 months ago company-updated-fluentcrm.php 10 months ago contact-added-to-list-fluentcrm.php 2 years ago contact-custom-fields-updated-fluentcrm.php 2 years ago contact-deleted-fluentcrm.php 10 months ago contact-removed-from-list-fluentcrm.php 2 years ago contact-status-set-to-specific-status-fluentcrm.php 3 months ago contact-updated-fluentcrm.php 2 years ago email-bounced-fluentcrm.php 10 months ago email-clicked-fluentcrm.php 10 months ago email-opened-fluentcrm.php 10 months ago email-unsubscribed-fluentcrm.php 10 months ago new-contact-added-fluentcrm.php 3 years ago tag-removed-from-contact.php 1 year ago
email-unsubscribed-fluentcrm.php
144 lines
1 <?php
2 /**
3 * EmailUnsubscribedFluentCRM.
4 * php version 5.6
5 *
6 * @category EmailUnsubscribedFluentCRM
7 * @package SureTriggers
8 * @author BSF <username@example.com>
9 * @license https://www.gnu.org/licenses/gpl-3.0.html GPLv3
10 * @link https://www.brainstormforce.com/
11 * @since 1.0.0
12 */
13
14 namespace SureTriggers\Integrations\FluentCRM\Triggers;
15
16 use SureTriggers\Controllers\AutomationController;
17 use SureTriggers\Traits\SingletonLoader;
18
19 if ( ! class_exists( 'EmailUnsubscribedFluentCRM' ) ) :
20
21 /**
22 * EmailUnsubscribedFluentCRM
23 *
24 * @category EmailUnsubscribedFluentCRM
25 * @package SureTriggers
26 * @author BSF <username@example.com>
27 * @license https://www.gnu.org/licenses/gpl-3.0.html GPLv3
28 * @link https://www.brainstormforce.com/
29 * @since 1.0.0
30 *
31 * @psalm-suppress UndefinedTrait
32 */
33 class EmailUnsubscribedFluentCRM {
34
35
36 /**
37 * Integration type.
38 *
39 * @var string
40 */
41 public $integration = 'FluentCRM';
42
43
44 /**
45 * Trigger name.
46 *
47 * @var string
48 */
49 public $trigger = 'email_unsubscribed_fluentcrm';
50
51 use SingletonLoader;
52
53
54 /**
55 * Constructor
56 *
57 * @since 1.0.0
58 */
59 public function __construct() {
60 add_filter( 'sure_trigger_register_trigger', [ $this, 'register' ] );
61 }
62
63 /**
64 * Register action.
65 *
66 * @param array $triggers trigger data.
67 * @return array
68 */
69 public function register( $triggers ) {
70
71 $triggers[ $this->integration ][ $this->trigger ] = [
72 'label' => __( 'Email Unsubscribed', 'suretriggers' ),
73 'action' => $this->trigger,
74 'common_action' => 'fluent_crm/before_contact_unsubscribe_from_email',
75 'function' => [ $this, 'trigger_listener' ],
76 'priority' => 10,
77 'accepted_args' => 3,
78 ];
79
80 return $triggers;
81 }
82
83 /**
84 * Trigger listener
85 *
86 * @param object $subscriber Subscriber object.
87 * @param object $campaign_email Campaign email object.
88 * @param string $source Unsubscribe source.
89 * @return void
90 */
91 public function trigger_listener( $subscriber, $campaign_email, $source ) {
92 if ( empty( $subscriber ) || ! is_object( $subscriber ) ) {
93 return;
94 }
95
96 $context = [];
97
98 // Get subscriber data.
99 $subscriber_data = method_exists( $subscriber, 'toArray' ) ? $subscriber->toArray() : [];
100 $context['subscriber'] = $subscriber_data;
101
102 // Add custom fields if subscriber has custom_fields method.
103 if ( method_exists( $subscriber, 'custom_fields' ) ) {
104 $context['subscriber']['custom_fields'] = $subscriber->custom_fields();
105 }
106
107 // Get campaign email data if available.
108 if ( ! empty( $campaign_email ) && is_object( $campaign_email ) ) {
109 $email_data = method_exists( $campaign_email, 'toArray' ) ? $campaign_email->toArray() : [];
110 $context['email'] = $email_data;
111
112 } else {
113 // If no campaign_email provided, try to get recent email data for subscriber.
114 if ( property_exists( $subscriber, 'id' ) && class_exists( 'FluentCrm\App\Models\CampaignEmail' ) ) {
115 $recent_email = \FluentCrm\App\Models\CampaignEmail::where( 'subscriber_id', $subscriber->id )
116 ->orderBy( 'id', 'desc' )
117 ->first();
118 if ( $recent_email && is_object( $recent_email ) && method_exists( $recent_email, 'toArray' ) ) {
119 $context['email'] = $recent_email->toArray();
120 }
121 }
122 }
123
124 $context['source'] = $source;
125 $context['unsubscribed_at'] = current_time( 'mysql' );
126
127 AutomationController::sure_trigger_handle_trigger(
128 [
129 'trigger' => $this->trigger,
130 'context' => $context,
131 ]
132 );
133 }
134 }
135
136 /**
137 * Ignore false positive
138 *
139 * @psalm-suppress UndefinedMethod
140 */
141 EmailUnsubscribedFluentCRM::get_instance();
142
143 endif;
144