PluginProbe ʕ •ᴥ•ʔ
OttoKit: All-in-One Automation Platform / 1.1.35
OttoKit: All-in-One Automation Platform v1.1.35
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-opened-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-opened-fluentcrm.php
137 lines
1 <?php
2 /**
3 * EmailOpenedFluentCRM.
4 * php version 5.6
5 *
6 * @category EmailOpenedFluentCRM
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( 'EmailOpenedFluentCRM' ) ) :
20
21 /**
22 * EmailOpenedFluentCRM
23 *
24 * @category EmailOpenedFluentCRM
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 EmailOpenedFluentCRM {
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_opened_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 Opened', 'suretriggers' ),
73 'action' => $this->trigger,
74 'common_action' => 'fluent_crm/email_opened',
75 'function' => [ $this, 'trigger_listener' ],
76 'priority' => 10,
77 'accepted_args' => 1,
78 ];
79
80 return $triggers;
81 }
82
83 /**
84 * Trigger listener
85 *
86 * @param object $email Campaign email object.
87 * @return void
88 */
89 public function trigger_listener( $email ) {
90 if ( empty( $email ) || ! is_object( $email ) ) {
91 return;
92 }
93
94 // Get email data.
95 $email_data = method_exists( $email, 'toArray' ) ? $email->toArray() : [];
96
97 // Get subscriber details if subscriber_id exists.
98 if ( property_exists( $email, 'subscriber_id' ) && class_exists( 'FluentCrm\App\Models\Subscriber' ) ) {
99 $subscriber = \FluentCrm\App\Models\Subscriber::find( $email->subscriber_id );
100 if ( $subscriber && is_object( $subscriber ) && method_exists( $subscriber, 'toArray' ) ) {
101 $context['subscriber'] = $subscriber->toArray();
102 // Add custom fields if subscriber has custom_fields method.
103 if ( is_object( $subscriber ) && method_exists( $subscriber, 'custom_fields' ) ) {
104 $context['subscriber']['custom_fields'] = $subscriber->custom_fields();
105 }
106 }
107 }
108
109 // Get campaign details if campaign_id exists.
110 if ( property_exists( $email, 'campaign_id' ) && class_exists( 'FluentCrm\App\Models\Campaign' ) ) {
111 $campaign = \FluentCrm\App\Models\Campaign::find( $email->campaign_id );
112 if ( $campaign && is_object( $campaign ) && method_exists( $campaign, 'toArray' ) ) {
113 $context['campaign'] = $campaign->toArray();
114 }
115 }
116
117 $context['email'] = $email_data;
118 $context['opened_at'] = current_time( 'mysql' );
119
120 AutomationController::sure_trigger_handle_trigger(
121 [
122 'trigger' => $this->trigger,
123 'context' => $context,
124 ]
125 );
126 }
127 }
128
129 /**
130 * Ignore false positive
131 *
132 * @psalm-suppress UndefinedMethod
133 */
134 EmailOpenedFluentCRM::get_instance();
135
136 endif;
137