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 / mailpoet / actions / add-subscriber-to-list.php
suretriggers / src / Integrations / mailpoet / actions Last commit date
add-subscriber-to-list.php 1 year ago remove-subscriber-from-list.php 1 year ago update-subscriber-status.php 11 months ago update-subscriber-to-new-list.php 11 months ago
add-subscriber-to-list.php
176 lines
1 <?php
2 /**
3 * AddSubscriberToList.
4 * php version 5.6
5 *
6 * @category AddSubscriberToList
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\MailPoet\Actions;
15
16 use Exception;
17 use SureTriggers\Integrations\AutomateAction;
18 use SureTriggers\Traits\SingletonLoader;
19
20 /**
21 * AddSubscriberToList
22 *
23 * @category AddSubscriberToList
24 * @package SureTriggers
25 * @author BSF <username@example.com>
26 * @license https://www.gnu.org/licenses/gpl-3.0.html GPLv3
27 * @link https://www.brainstormforce.com/
28 * @since 1.0.0
29 */
30 class AddSubscriberToList extends AutomateAction {
31
32
33
34 /**
35 * Integration type.
36 *
37 * @var string
38 */
39 public $integration = 'MailPoet';
40
41 /**
42 * Action name.
43 *
44 * @var string
45 */
46 public $action = 'add_subscriber_to_list';
47
48 use SingletonLoader;
49
50 /**
51 * Register a action.
52 *
53 * @param array $actions actions.
54 *
55 * @return array
56 */
57 public function register( $actions ) {
58
59 $actions[ $this->integration ][ $this->action ] = [
60 'label' => __( 'Add New Subscriber', 'suretriggers' ),
61 'action' => $this->action,
62 'function' => [ $this, 'action_listener' ],
63 ];
64 return $actions;
65 }
66
67 /**
68 * Action listener.
69 *
70 * @param int $user_id user_id.
71 * @param int $automation_id automation_id.
72 * @param array $fields fields.
73 * @param array $selected_options selectedOptions.
74 * @return array|void
75 * @throws Exception Exception.
76 */
77 public function _action_listener( $user_id, $automation_id, $fields, $selected_options ) {
78 if ( ! class_exists( '\MailPoet\API\API' ) || ! class_exists( '\MailPoet\API\MP\v1\APIException' ) ) {
79 return;
80 }
81
82 global $wpdb;
83
84 // Shorthand.
85 $subscriber = [];
86 $list_id = $selected_options['mailpoet_list'];
87 $first_name = $selected_options['subscriber_first_name'];
88 $last_name = $selected_options['subscriber_last_name'];
89 $email = $selected_options['subscriber_email'];
90 $subscriber_status = $selected_options['subscriber_status'];
91 $subscriber_confirmation_email = $selected_options['subscriber_confirmation_email'];
92
93 // Bail if not list selected.
94 if ( '' === $list_id ) {
95 return;
96 }
97
98 if ( isset( $email ) && ! empty( $email ) ) {
99 $subscriber['email'] = sanitize_email( $email );
100 }
101
102 if ( isset( $first_name ) && ! empty( $first_name ) ) {
103 $subscriber['first_name'] = $first_name;
104 }
105
106 if ( isset( $last_name ) && ! empty( $last_name ) ) {
107 $subscriber['last_name'] = $last_name;
108 }
109
110 if ( isset( $subscriber_status ) && ! empty( $subscriber_status ) ) {
111 $subscriber['status'] = $subscriber_status;
112 }
113
114 $disable_confirmation_email = true;
115 if ( isset( $subscriber_confirmation_email ) ) {
116 $disable_confirmation_email = $subscriber_confirmation_email;
117 if ( '0' === $disable_confirmation_email ) {
118 $disable_confirmation_email = false;
119 } else {
120 $disable_confirmation_email = true;
121 }
122 }
123
124 $options = [
125 'send_confirmation_email' => $disable_confirmation_email,
126 ];
127
128 $list_ids = [];
129 foreach ( $list_id as $value ) {
130 $list_ids[] = $value['value'];
131 }
132
133 // Get the MailPoet API.
134 $mailpoet = \MailPoet\API\API::MP( 'v1' );
135
136 if ( ! isset( $subscriber['email'] ) || ! isset( $subscriber['status'] ) ) {
137 return;
138 }
139
140 try {
141 // Try to get the subscriber.
142 $existing_subscriber = $mailpoet->getSubscriber( $subscriber['email'] );
143 } catch ( \MailPoet\API\MP\v1\APIException $e ) {
144 // Handle case where subscriber does not exist (continue to add a new subscriber).
145 $existing_subscriber = null;
146 }
147
148 if ( $existing_subscriber ) {
149 // Subscriber exists.
150 $mailpoet->subscribeToLists( $existing_subscriber['id'], $list_ids, $options );
151 $subscriber_id = $existing_subscriber['id'];
152
153 if ( false === $disable_confirmation_email ) {
154 $table_name = $wpdb->prefix . 'mailpoet_subscribers';
155 $wpdb->update( $table_name, [ 'status' => $subscriber['status'] ], [ 'id' => $subscriber_id ] );
156 }
157 } else {
158 // Subscriber does not exist, add new subscriber.
159 $new_subscriber = $mailpoet->addSubscriber( $subscriber, $list_ids, $options );
160 $subscriber_id = $new_subscriber['id'];
161
162 if ( false === $disable_confirmation_email ) {
163 $table_name = $wpdb->prefix . 'mailpoet_subscribers';
164 $wpdb->update( $table_name, [ 'status' => $subscriber['status'] ], [ 'id' => $subscriber_id ] );
165 }
166 }
167 $context = [ 'user_email' => $subscriber['email'] ];
168
169 return $context;
170
171 }
172
173 }
174
175 AddSubscriberToList::get_instance();
176