PluginProbe ʕ •ᴥ•ʔ
OttoKit: All-in-One Automation Platform / 1.1.32
OttoKit: All-in-One Automation Platform v1.1.32
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 / mailerpress / actions / remove-contact-from-list.php
suretriggers / src / Integrations / mailerpress / actions Last commit date
add-contact-to-list.php 7 months ago add-tag-to-contact.php 7 months ago create-list.php 7 months ago create-tag.php 7 months ago delete-contact.php 7 months ago delete-list.php 7 months ago delete-tag.php 7 months ago get-all-lists.php 7 months ago get-all-segments.php 7 months ago get-all-tags.php 7 months ago get-contact-by-email.php 7 months ago get-contacts-by-list.php 7 months ago get-contacts-by-tag.php 7 months ago remove-contact-from-list.php 7 months ago remove-tag-from-contact.php 7 months ago
remove-contact-from-list.php
212 lines
1 <?php
2 /**
3 * RemoveContactFromList.
4 * php version 5.6
5 *
6 * @category RemoveContactFromList
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\MailerPress\Actions;
15
16 use Exception;
17 use SureTriggers\Integrations\AutomateAction;
18 use SureTriggers\Traits\SingletonLoader;
19
20 /**
21 * RemoveContactFromList
22 *
23 * @category RemoveContactFromList
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 RemoveContactFromList extends AutomateAction {
31
32 /**
33 * Integration type.
34 *
35 * @var string
36 */
37 public $integration = 'MailerPress';
38
39 /**
40 * Action name.
41 *
42 * @var string
43 */
44 public $action = 'remove_contact_from_list';
45
46 use SingletonLoader;
47
48 /**
49 * Register a action.
50 *
51 * @param array $actions actions.
52 *
53 * @return array
54 */
55 public function register( $actions ) {
56 $actions[ $this->integration ][ $this->action ] = [
57 'label' => __( 'Remove contact from list', 'suretriggers' ),
58 'action' => $this->action,
59 'function' => [ $this, 'action_listener' ],
60 ];
61 return $actions;
62 }
63
64 /**
65 * Action listener.
66 *
67 * @param int $user_id user_id.
68 * @param int $automation_id automation_id.
69 * @param array $fields fields.
70 * @param array $selected_options selectedOptions.
71 * @return array|void
72 * @throws Exception Exception.
73 */
74 public function _action_listener( $user_id, $automation_id, $fields, $selected_options ) {
75 // Get form data.
76 $email = isset( $selected_options['email'] ) ? sanitize_email( $selected_options['email'] ) : '';
77 $lists = isset( $selected_options['lists'] ) ? $selected_options['lists'] : [];
78
79 if ( empty( $email ) ) {
80 return [
81 'status' => 'error',
82 'message' => 'Email is required.',
83 ];
84 }
85
86 if ( ! is_email( $email ) ) {
87 return [
88 'status' => 'error',
89 'message' => 'Please enter a valid email address.',
90 ];
91 }
92
93 if ( empty( $lists ) ) {
94 return [
95 'status' => 'error',
96 'message' => 'At least one list is required.',
97 ];
98 }
99
100 try {
101 global $wpdb;
102
103 // MailerPress table names.
104 $contact_table = $wpdb->prefix . 'mailerpress_contact';
105 $contact_lists_table = $wpdb->prefix . 'mailerpress_contact_lists';
106
107 // Find contact by email.
108 $existing_contact = $wpdb->get_row(
109 $wpdb->prepare(
110 "SELECT * FROM {$wpdb->prefix}mailerpress_contact WHERE email = %s",
111 $email
112 )
113 );
114
115 if ( ! $existing_contact ) {
116 return [
117 'status' => 'error',
118 'message' => 'Contact not found.',
119 ];
120 }
121
122 $contact_id = $existing_contact->contact_id;
123 $removed_lists = [];
124
125 // Remove contact from lists.
126 foreach ( $lists as $list ) {
127 $list_id = 0;
128
129 // Check if list is an ID or name.
130 if ( is_array( $list ) ) {
131 if ( isset( $list['value'] ) && ! empty( $list['value'] ) ) {
132 $list_id = absint( $list['value'] );
133 } elseif ( isset( $list['id'] ) && ! empty( $list['id'] ) ) {
134 $list_id = absint( $list['id'] );
135 } elseif ( isset( $list['name'] ) && ! empty( $list['name'] ) ) {
136 // Search for list by name.
137 $existing_list = $wpdb->get_row(
138 $wpdb->prepare(
139 "SELECT list_id FROM {$wpdb->prefix}mailerpress_lists WHERE name = %s",
140 sanitize_text_field( $list['name'] )
141 )
142 );
143
144 if ( $existing_list ) {
145 $list_id = $existing_list->list_id;
146 }
147 }
148 } elseif ( is_numeric( $list ) ) {
149 $list_id = absint( $list );
150 } elseif ( is_string( $list ) ) {
151 // Search for list by name.
152 $existing_list = $wpdb->get_row(
153 $wpdb->prepare(
154 "SELECT list_id FROM {$wpdb->prefix}mailerpress_lists WHERE name = %s",
155 sanitize_text_field( $list )
156 )
157 );
158
159 if ( $existing_list ) {
160 $list_id = $existing_list->list_id;
161 }
162 }
163
164 if ( $list_id > 0 ) {
165 // Check if contact is in list.
166 $existing_contact_list = $wpdb->get_row(
167 $wpdb->prepare(
168 "SELECT * FROM {$wpdb->prefix}mailerpress_contact_lists WHERE contact_id = %d AND list_id = %d",
169 $contact_id,
170 $list_id
171 )
172 );
173
174 if ( $existing_contact_list ) {
175 $result = $wpdb->delete(
176 $contact_lists_table,
177 [
178 'contact_id' => $contact_id,
179 'list_id' => $list_id,
180 ],
181 [ '%d', '%d' ]
182 );
183
184 if ( false !== $result ) {
185 $removed_lists[] = $list_id;
186
187 // Fire action hook.
188 do_action( 'mailerpress_contact_list_removed', $contact_id, $list_id );
189 }
190 }
191 }
192 }
193
194 return [
195 'contact_id' => $contact_id,
196 'email' => $email,
197 'lists_removed' => $removed_lists,
198 'lists_count' => count( $removed_lists ),
199 'success' => true,
200 ];
201
202 } catch ( Exception $e ) {
203 return [
204 'status' => 'error',
205 'message' => $e->getMessage(),
206 ];
207 }
208 }
209 }
210
211 RemoveContactFromList::get_instance();
212