PluginProbe ʕ •ᴥ•ʔ
OttoKit: All-in-One Automation Platform / 1.1.36
OttoKit: All-in-One Automation Platform v1.1.36
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 / paid-memberships-pro / actions / list-members.php
suretriggers / src / Integrations / paid-memberships-pro / actions Last commit date
add-user-membership-level.php 11 months ago list-members.php 11 months ago remove-user-membership-level.php 11 months ago
list-members.php
136 lines
1 <?php
2 /**
3 * ListMembers.
4 *
5 * @category ListMembers
6 * @package SureTriggers
7 * @author BSF
8 * @license https://www.gnu.org/licenses/gpl-3.0.html GPLv3
9 * @link https://www.brainstormforce.com/
10 * @since 1.0.0
11 */
12
13 namespace SureTriggers\Integrations\PaidMembershipsPro\Actions;
14
15 use SureTriggers\Integrations\AutomateAction;
16 use SureTriggers\Traits\SingletonLoader;
17
18 /**
19 * ListMembers
20 *
21 * @category ListMembers
22 * @package SureTriggers
23 * @author BSF
24 * @license https://www.gnu.org/licenses/gpl-3.0.html GPLv3
25 * @link https://www.brainstormforce.com/
26 * @since 1.0.0
27 */
28 class ListMembers extends AutomateAction {
29
30 use SingletonLoader;
31
32 /**
33 * Integration type.
34 *
35 * @var string
36 */
37 public $integration = 'PaidMembershipsPro';
38
39 /**
40 * Action name.
41 *
42 * @var string
43 */
44 public $action = 'list_members_by_membership_level';
45
46 /**
47 * Register the action.
48 *
49 * @param array $actions Available actions.
50 *
51 * @return array
52 */
53 public function register( $actions ) {
54 $actions[ $this->integration ][ $this->action ] = [
55 'label' => __( 'List all users in a membership level', 'suretriggers' ),
56 'action' => $this->action,
57 'function' => [ $this, 'action_listener' ],
58 ];
59
60 return $actions;
61 }
62
63 /**
64 * Action listener.
65 *
66 * @param int $user_id User ID.
67 * @param int $automation_id Automation ID.
68 * @param array $fields Fields.
69 * @param array $selected_options Selected Options.
70 *
71 * @return array
72 */
73 public function _action_listener( $user_id, $automation_id, $fields, $selected_options ) {
74 global $wpdb;
75
76 $level_id = isset( $selected_options['membership_id'] ) ? $selected_options['membership_id'] : -1;
77
78 if ( -1 !== $level_id ) {
79 $results = $wpdb->get_results(
80 $wpdb->prepare(
81 "SELECT mu.user_id, mu.membership_id, ml.name AS membership_name
82 FROM {$wpdb->prefix}pmpro_memberships_users AS mu
83 LEFT JOIN {$wpdb->prefix}pmpro_membership_levels AS ml
84 ON mu.membership_id = ml.id
85 WHERE mu.membership_id = %d AND mu.status = 'active'",
86 $level_id
87 )
88 );
89 } else {
90 $results = $wpdb->get_results(
91 "SELECT mu.user_id, mu.membership_id, ml.name AS membership_name
92 FROM {$wpdb->prefix}pmpro_memberships_users AS mu
93 LEFT JOIN {$wpdb->prefix}pmpro_membership_levels AS ml
94 ON mu.membership_id = ml.id
95 WHERE mu.status = 'active'"
96 );
97 }
98
99 if ( empty( $results ) ) {
100 return [
101 'status' => esc_attr__( 'Success', 'suretriggers' ),
102 'response' => esc_attr__( 'No active members found for the selected level.', 'suretriggers' ),
103
104 ];
105 }
106
107 $members = array_filter(
108 array_map(
109 function ( $row ) {
110 $user = get_userdata( $row->user_id );
111 if ( ! $user ) {
112 return null;
113 }
114 return [
115 'ID' => $user->ID,
116 'name' => $user->display_name,
117 'email' => $user->user_email,
118 'membership_id' => $row->membership_id,
119 'membership_name' => $row->membership_name,
120 ];
121 },
122 $results
123 )
124 );
125
126 return [
127 'status' => esc_attr__( 'Success', 'suretriggers' ),
128 'members' => $members,
129 ];
130 }
131
132
133 }
134
135 ListMembers::get_instance();
136