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 / get-all-lists.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
get-all-lists.php
212 lines
1 <?php
2 /**
3 * GetAllLists.
4 * php version 5.6
5 *
6 * @category GetAllLists
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 * GetAllLists
22 *
23 * @category GetAllLists
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 GetAllLists 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 = 'get_all_lists';
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' => __( 'Get all lists', '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
76 global $wpdb;
77
78 $limit = isset( $selected_options['limit'] ) ? absint( $selected_options['limit'] ) : 0;
79 $order_by = isset( $selected_options['order_by'] ) ? sanitize_text_field( $selected_options['order_by'] ) : 'name';
80 $order = isset( $selected_options['order'] ) ? sanitize_text_field( $selected_options['order'] ) : 'ASC';
81 $search = isset( $selected_options['search'] ) ? sanitize_text_field( $selected_options['search'] ) : '';
82
83 $allowed_order_by = [ 'list_id', 'name', 'description', 'created_at', 'updated_at' ];
84 if ( ! in_array( $order_by, $allowed_order_by, true ) ) {
85 $order_by = 'name';
86 }
87
88 $order = strtoupper( $order );
89 if ( ! in_array( $order, [ 'ASC', 'DESC' ], true ) ) {
90 $order = 'ASC';
91 }
92
93 try {
94
95 $lists_table = $wpdb->prefix . 'mailerpress_lists';
96 $contact_lists_table = $wpdb->prefix . 'mailerpress_contact_lists';
97
98 $where_sql = '';
99 $where_args = [];
100
101 if ( ! empty( $search ) ) {
102 $where_sql = ' WHERE (name LIKE %s OR description LIKE %s)';
103 $search_val = '%' . $wpdb->esc_like( $search ) . '%';
104 $where_args = [ $search_val, $search_val ];
105 }
106
107 // Main list query.
108 if ( ! empty( $search ) ) {
109 $search_val = '%' . $wpdb->esc_like( $search ) . '%';
110 if ( $limit > 0 ) {
111 $lists = $wpdb->get_results(
112 $wpdb->prepare(
113 'SELECT list_id, name, description, created_at, updated_at FROM `' . esc_sql( $lists_table ) . '` WHERE (name LIKE %s OR description LIKE %s) ORDER BY ' . esc_sql( $order_by ) . ' ' . esc_sql( $order ) . ' LIMIT %d',
114 $search_val,
115 $search_val,
116 $limit
117 )
118 );
119 } else {
120 $lists = $wpdb->get_results(
121 $wpdb->prepare(
122 'SELECT list_id, name, description, created_at, updated_at FROM `' . esc_sql( $lists_table ) . '` WHERE (name LIKE %s OR description LIKE %s) ORDER BY ' . esc_sql( $order_by ) . ' ' . esc_sql( $order ),
123 $search_val,
124 $search_val
125 )
126 );
127 }
128 } else {
129 if ( $limit > 0 ) {
130 $lists = $wpdb->get_results(
131 $wpdb->prepare(
132 'SELECT list_id, name, description, created_at, updated_at FROM `' . esc_sql( $lists_table ) . '` ORDER BY ' . esc_sql( $order_by ) . ' ' . esc_sql( $order ) . ' LIMIT %d',
133 $limit
134 )
135 );
136 } else {
137 $lists = $wpdb->get_results(
138 $wpdb->prepare(
139 'SELECT list_id, name, description, created_at, updated_at FROM `' . esc_sql( $lists_table ) . '` ORDER BY ' . esc_sql( $order_by ) . ' ' . esc_sql( $order )
140 )
141 );
142 }
143 }
144
145 if ( $wpdb->last_error ) {
146 throw new Exception( 'Database error: ' . $wpdb->last_error );
147 }
148
149 $formatted_lists = [];
150
151 if ( $lists ) {
152 foreach ( $lists as $list ) {
153
154 // Safe contact count query.
155 $contact_count = (int) $wpdb->get_var(
156 $wpdb->prepare(
157 'SELECT COUNT(*) FROM `' . esc_sql( $contact_lists_table ) . '` WHERE list_id = %d',
158 $list->list_id
159 )
160 );
161
162 $formatted_lists[] = [
163 'list_id' => (int) $list->list_id,
164 'name' => $list->name,
165 'description' => $list->description,
166 'contact_count' => $contact_count,
167 'created_at' => $list->created_at,
168 'updated_at' => $list->updated_at,
169 ];
170 }
171 }
172
173 // Safe total count query.
174 if ( ! empty( $search ) ) {
175 $search_val = '%' . $wpdb->esc_like( $search ) . '%';
176 $total_count = (int) $wpdb->get_var(
177 $wpdb->prepare(
178 'SELECT COUNT(*) FROM `' . esc_sql( $lists_table ) . '` WHERE (name LIKE %s OR description LIKE %s)',
179 $search_val,
180 $search_val
181 )
182 );
183 } else {
184 $total_count = (int) $wpdb->get_var(
185 $wpdb->prepare(
186 'SELECT COUNT(*) FROM `' . esc_sql( $lists_table ) . '`'
187 )
188 );
189 }
190
191 return [
192 'lists' => $formatted_lists,
193 'total_count' => $total_count,
194 'returned' => count( $formatted_lists ),
195 'search' => $search,
196 'order_by' => $order_by,
197 'order' => $order,
198 'limit' => $limit,
199 'success' => true,
200 ];
201
202 } catch ( Exception $e ) {
203 return [
204 'status' => 'error',
205 'message' => $e->getMessage(),
206 ];
207 }
208 }
209 }
210
211 GetAllLists::get_instance();
212