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 / paid-memberships-pro / actions / remove-user-membership-level.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
remove-user-membership-level.php
164 lines
1 <?php
2 /**
3 * RemoveUserMembershipLevel.
4 * php version 5.6
5 *
6 * @category RemoveUserMembershipLevel
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\PaidMembershipsPro\Actions;
15
16 use SureTriggers\Integrations\AutomateAction;
17 use SureTriggers\Traits\SingletonLoader;
18
19 /**
20 * RemoveUserMembershipLevel
21 *
22 * @category RemoveUserMembershipLevel
23 * @package SureTriggers
24 * @author BSF <username@example.com>
25 * @license https://www.gnu.org/licenses/gpl-3.0.html GPLv3
26 * @link https://www.brainstormforce.com/
27 * @since 1.0.0
28 */
29 class RemoveUserMembershipLevel extends AutomateAction {
30
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 = 'remove_user_from_membership_level';
45
46 use SingletonLoader;
47
48 /**
49 * Register a action.
50 *
51 * @param array $actions actions.
52 * @return array
53 */
54 public function register( $actions ) {
55 $actions[ $this->integration ][ $this->action ] = [
56 'label' => __( 'Remove the user from a membership level', 'suretriggers' ),
57 'action' => $this->action,
58 'function' => [ $this, 'action_listener' ],
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 selectedOptions.
70 *
71 * @return array|void
72 */
73 public function _action_listener( $user_id, $automation_id, $fields, $selected_options ) {
74
75 $membership_level = $selected_options['membership_id'];
76
77 if ( ! function_exists( 'pmpro_getMembershipLevelsForUser' ) ) {
78 return [
79 'status' => 'error',
80 'message' => __( 'pmpro_getMembershipLevelsForUser function not found.', 'suretriggers' ),
81
82 ];
83 }
84
85 $user_membership_levels = pmpro_getMembershipLevelsForUser( $user_id );
86
87 // Convert result into simple array.
88 $user_membership_levels = array_map(
89 function ( $membership_level ) {
90 return $membership_level->ID;
91 },
92 $user_membership_levels
93 );
94
95 // Do this for 'Any' selection.
96 if ( intval( '-1' ) === intval( $membership_level ) ) {
97
98 // Check if user has any membership levels first. Complete with error if does not have.
99 if ( empty( $user_membership_levels ) ) {
100 $error = [
101 'status' => esc_attr__( 'Error', 'suretriggers' ),
102 'response' => esc_attr__( 'User does not belong to any membership levels.', 'suretriggers' ),
103
104 ];
105 return $error;
106 }
107
108 // Delete all membership leverls.
109 foreach ( $user_membership_levels as $membership_level ) {
110 if ( function_exists( 'pmpro_cancelMembershipLevel' ) ) {
111 $cancel_level = pmpro_cancelMembershipLevel( absint( $membership_level ), absint( $user_id ) );
112 }
113 }
114
115 $response = [
116 'status' => esc_attr__( 'Success', 'suretriggers' ),
117 'response' => esc_attr__( 'User removed from Membership level.', 'suretriggers' ),
118
119 ];
120 return $response;
121
122 }
123
124 // Otherwise, remove specific membership level.
125 if ( ! in_array( $membership_level, $user_membership_levels, true ) ) {
126 // Complete with error if the user was not a member of the specified level.
127 $error = [
128 'status' => esc_attr__( 'Error', 'suretriggers' ),
129 'response' => esc_attr__( 'User was not a member of the specified level.', 'suretriggers' ),
130
131 ];
132 return $error;
133 }
134
135 // Try removing user membership level.
136 if ( function_exists( 'pmpro_cancelMembershipLevel' ) ) {
137 if ( pmpro_cancelMembershipLevel( absint( $membership_level ), absint( $user_id ) ) ) {
138 $response = [
139 'status' => esc_attr__( 'Success', 'suretriggers' ),
140 'response' => esc_attr__( 'User removed from Membership level.', 'suretriggers' ),
141
142 ];
143 return $response;
144 } else {
145 $error = [
146 'status' => esc_attr__( 'Error', 'suretriggers' ),
147 'response' => esc_attr__( "We're unable to cancel the specified level from the user.", 'suretriggers' ),
148
149 ];
150 return $error;
151 }
152 } else {
153 $error = [
154 'status' => esc_attr__( 'Error', 'suretriggers' ),
155 'response' => esc_attr__( "We're unable to cancel the specified level from the user.", 'suretriggers' ),
156
157 ];
158 return $error;
159 }
160 }
161 }
162
163 RemoveUserMembershipLevel::get_instance();
164