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-bounced-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-bounced-fluentcrm.php
147 lines
1 <?php
2 /**
3 * EmailBouncedFluentCRM.
4 * php version 5.6
5 *
6 * @category EmailBouncedFluentCRM
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( 'EmailBouncedFluentCRM' ) ) :
20
21 /**
22 * EmailBouncedFluentCRM
23 *
24 * @category EmailBouncedFluentCRM
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 EmailBouncedFluentCRM {
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_bounced_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 Bounced', 'suretriggers' ),
73 'action' => $this->trigger,
74 'common_action' => 'fluentcrm_subscriber_status_to_bounced',
75 'function' => [ $this, 'trigger_listener' ],
76 'priority' => 10,
77 'accepted_args' => 2,
78 ];
79
80 return $triggers;
81 }
82
83 /**
84 * Trigger listener
85 *
86 * @param object $subscriber Subscriber object.
87 * @param string $old_status Previous status.
88 * @return void
89 */
90 public function trigger_listener( $subscriber, $old_status ) {
91 if ( empty( $subscriber ) || ! is_object( $subscriber ) ) {
92 return;
93 }
94
95 $context = [];
96
97 // Get subscriber data.
98 $subscriber_data = method_exists( $subscriber, 'toArray' ) ? $subscriber->toArray() : [];
99 $context['subscriber'] = $subscriber_data;
100
101 // Add custom fields if subscriber has custom_fields method.
102 if ( method_exists( $subscriber, 'custom_fields' ) ) {
103 $context['subscriber']['custom_fields'] = $subscriber->custom_fields();
104 }
105
106 // Get recent email data for subscriber.
107 if ( property_exists( $subscriber, 'id' ) && class_exists( 'FluentCrm\App\Models\CampaignEmail' ) ) {
108 $recent_email = \FluentCrm\App\Models\CampaignEmail::where( 'subscriber_id', $subscriber->id )
109 ->orderBy( 'id', 'desc' )
110 ->first();
111 if ( $recent_email && is_object( $recent_email ) && method_exists( $recent_email, 'toArray' ) ) {
112 $context['email'] = $recent_email->toArray();
113 }
114 }
115
116 // Get bounce reason from subscriber meta if available.
117 if ( property_exists( $subscriber, 'id' ) && function_exists( 'fluentcrm_get_subscriber_meta' ) ) {
118 $bounce_reason = fluentcrm_get_subscriber_meta( $subscriber->id, 'reason', '' );
119 $context['bounce_reason'] = $bounce_reason;
120
121 // Get soft bounce count if available.
122 $soft_bounce_count = fluentcrm_get_subscriber_meta( $subscriber->id, '_soft_bounce_count', 0 );
123 $context['soft_bounce_count'] = (int) $soft_bounce_count;
124 }
125
126 $context['old_status'] = $old_status;
127 $context['new_status'] = 'bounced';
128 $context['bounced_at'] = current_time( 'mysql' );
129
130 AutomationController::sure_trigger_handle_trigger(
131 [
132 'trigger' => $this->trigger,
133 'context' => $context,
134 ]
135 );
136 }
137 }
138
139 /**
140 * Ignore false positive
141 *
142 * @psalm-suppress UndefinedMethod
143 */
144 EmailBouncedFluentCRM::get_instance();
145
146 endif;
147