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 / delete-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
delete-list.php
192 lines
1 <?php
2 /**
3 * DeleteList.
4 * php version 5.6
5 *
6 * @category DeleteList
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 * DeleteList
22 *
23 * @category DeleteList
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 DeleteList 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 = 'delete_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' => __( 'Delete 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 $list_id = isset( $selected_options['list_id'] ) ? absint( $selected_options['list_id'] ) : 0;
77 $list_name = isset( $selected_options['list_name'] ) ? sanitize_text_field( $selected_options['list_name'] ) : '';
78
79 // Validate input - either list_id or list_name is required.
80 if ( empty( $list_id ) && empty( $list_name ) ) {
81 return [
82 'status' => 'error',
83 'message' => 'Either list ID or list name is required.',
84 ];
85 }
86
87 try {
88 global $wpdb;
89
90 // If list_name is provided instead of list_id, find the list by name.
91 if ( empty( $list_id ) && ! empty( $list_name ) ) {
92 $existing_list = $wpdb->get_row(
93 $wpdb->prepare(
94 "SELECT list_id, name FROM {$wpdb->prefix}mailerpress_lists WHERE name = %s",
95 $list_name
96 )
97 );
98
99 if ( ! $existing_list ) {
100 return [
101 'status' => 'error',
102 'message' => 'List not found with the provided name.',
103 ];
104 }
105
106 $list_id = $existing_list->list_id;
107 } else {
108 // Verify the list exists by ID.
109 $existing_list = $wpdb->get_row(
110 $wpdb->prepare(
111 "SELECT list_id, name FROM {$wpdb->prefix}mailerpress_lists WHERE list_id = %d",
112 $list_id
113 )
114 );
115
116 if ( ! $existing_list ) {
117 return [
118 'status' => 'error',
119 'message' => 'List not found with the provided ID.',
120 ];
121 }
122 }
123
124 // Store list details before deletion.
125 $deleted_list_name = $existing_list->name;
126 $deleted_list_id = $existing_list->list_id;
127
128 // Get count of contacts in this list before deletion.
129 $contact_count = $wpdb->get_var(
130 $wpdb->prepare(
131 "SELECT COUNT(*) FROM {$wpdb->prefix}mailerpress_contact_lists WHERE list_id = %d",
132 $list_id
133 )
134 );
135
136 // Delete contact-list relationships first.
137 $relationships_deleted = $wpdb->delete(
138 $wpdb->prefix . 'mailerpress_contact_lists',
139 [ 'list_id' => $list_id ],
140 [ '%d' ]
141 );
142
143 if ( false === $relationships_deleted ) {
144 return [
145 'status' => 'error',
146 'message' => 'Failed to remove contact relationships for the list.',
147 ];
148 }
149
150 // Delete the list.
151 $list_deleted = $wpdb->delete(
152 $wpdb->prefix . 'mailerpress_lists',
153 [ 'list_id' => $list_id ],
154 [ '%d' ]
155 );
156
157 if ( false === $list_deleted ) {
158 return [
159 'status' => 'error',
160 'message' => 'Failed to delete the list.',
161 ];
162 }
163
164 if ( 0 === $list_deleted ) {
165 return [
166 'status' => 'error',
167 'message' => 'List was not found or already deleted.',
168 ];
169 }
170
171 // Fire action hook.
172 do_action( 'mailerpress_list_deleted', $deleted_list_id, $deleted_list_name, $contact_count );
173
174 return [
175 'list_id' => $deleted_list_id,
176 'list_name' => $deleted_list_name,
177 'contacts_affected' => (int) $contact_count,
178 'relationships_removed' => (int) $relationships_deleted,
179 'success' => true,
180 ];
181
182 } catch ( Exception $e ) {
183 return [
184 'status' => 'error',
185 'message' => $e->getMessage(),
186 ];
187 }
188 }
189 }
190
191 DeleteList::get_instance();
192