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 / campaign-sent-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
campaign-sent-fluentcrm.php
156 lines
1 <?php
2 /**
3 * CampaignSentFluentCRM.
4 * php version 5.6
5 *
6 * @category CampaignSentFluentCRM
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( 'CampaignSentFluentCRM' ) ) :
20
21 /**
22 * CampaignSentFluentCRM
23 *
24 * @category CampaignSentFluentCRM
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 CampaignSentFluentCRM {
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 = 'campaign_sent_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' => __( 'Campaign Sent', 'suretriggers' ),
73 'action' => $this->trigger,
74 'common_action' => 'fluent_crm/campaign_archived',
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 $campaign Campaign object.
87 * @return void
88 */
89 public function trigger_listener( $campaign ) {
90 if ( empty( $campaign ) || ! is_object( $campaign ) ) {
91 return;
92 }
93
94 $context = [];
95
96 // Get campaign data.
97 $campaign_data = method_exists( $campaign, 'toArray' ) ? $campaign->toArray() : [];
98 $context['campaign'] = $campaign_data;
99
100 // Get campaign stats if available.
101 if ( method_exists( $campaign, 'stats' ) ) {
102 $campaign_stats = $campaign->stats();
103 $context['stats'] = $campaign_stats;
104 }
105
106 // Get total subscribers count for this campaign.
107 if ( property_exists( $campaign, 'id' ) && class_exists( 'FluentCrm\App\Models\CampaignEmail' ) ) {
108 $total_emails = \FluentCrm\App\Models\CampaignEmail::where( 'campaign_id', $campaign->id )->count();
109 $context['total_emails_sent'] = $total_emails;
110
111 // Get email stats.
112 $sent_count = \FluentCrm\App\Models\CampaignEmail::where( 'campaign_id', $campaign->id )
113 ->where( 'status', 'sent' )
114 ->count();
115 $opened_count = \FluentCrm\App\Models\CampaignEmail::where( 'campaign_id', $campaign->id )
116 ->where( 'is_open', '>', 0 )
117 ->count();
118 $clicked_count = \FluentCrm\App\Models\CampaignEmail::where( 'campaign_id', $campaign->id )
119 ->where( 'click_counter', '>', 0 )
120 ->count();
121
122 $context['sent_count'] = $sent_count;
123 $context['opened_count'] = $opened_count;
124 $context['clicked_count'] = $clicked_count;
125
126 // Calculate rates.
127 if ( $sent_count > 0 ) {
128 $context['open_rate'] = round( ( $opened_count / $sent_count ) * 100, 2 );
129 $context['click_rate'] = round( ( $clicked_count / $sent_count ) * 100, 2 );
130 } else {
131 $context['open_rate'] = 0;
132 $context['click_rate'] = 0;
133 }
134 }
135
136 $context['archived_at'] = current_time( 'mysql' );
137 $context['status'] = 'archived';
138
139 AutomationController::sure_trigger_handle_trigger(
140 [
141 'trigger' => $this->trigger,
142 'context' => $context,
143 ]
144 );
145 }
146 }
147
148 /**
149 * Ignore false positive
150 *
151 * @psalm-suppress UndefinedMethod
152 */
153 CampaignSentFluentCRM::get_instance();
154
155 endif;
156