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 / thrive-apprentice / actions / remove-product-access.php
suretriggers / src / Integrations / thrive-apprentice / actions Last commit date
grant-product-access.php 6 months ago remove-product-access.php 6 months ago
remove-product-access.php
174 lines
1 <?php
2 /**
3 * RemoveProductAccess.
4 * php version 5.6
5 *
6 * @category RemoveProductAccess
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\ThriveApprentice\Actions;
15
16 use SureTriggers\Integrations\AutomateAction;
17 use SureTriggers\Integrations\WordPress\WordPress;
18 use SureTriggers\Traits\SingletonLoader;
19
20 /**
21 * RemoveProductAccess
22 *
23 * @category RemoveProductAccess
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 RemoveProductAccess extends AutomateAction {
31
32 /**
33 * Integration type.
34 *
35 * @var string
36 */
37 public $integration = 'ThriveApprentice';
38
39 /**
40 * Action name.
41 *
42 * @var string
43 */
44 public $action = 'ta_remove_product_access';
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 Product Access', '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|bool
72 */
73 public function _action_listener( $user_id, $automation_id, $fields, $selected_options ) {
74
75 if ( ! defined( 'TVA_IS_APPRENTICE' ) && ! class_exists( 'TVA_Const' ) ) {
76 return [
77 'status' => 'error',
78 'message' => __( 'Thrive Apprentice is not active', 'suretriggers' ),
79 ];
80 }
81
82 if ( ! class_exists( 'TVA_Customer' ) ) {
83 return [
84 'status' => 'error',
85 'message' => __( 'TVA_Customer class not available', 'suretriggers' ),
86 ];
87 }
88
89 if ( ! class_exists( 'TVA_User' ) ) {
90 return [
91 'status' => 'error',
92 'message' => __( 'TVA_User class not available', 'suretriggers' ),
93 ];
94 }
95
96 $product_id = isset( $selected_options['product_id'] ) ? $selected_options['product_id'] : '';
97 $user_email = isset( $selected_options['wp_user_email'] ) ? $selected_options['wp_user_email'] : '';
98
99 if ( empty( $product_id ) ) {
100 return [
101 'status' => 'error',
102 'message' => __( 'Product ID is required', 'suretriggers' ),
103 ];
104 }
105
106 if ( empty( $user_email ) ) {
107 return [
108 'status' => 'error',
109 'message' => __( 'User email is required', 'suretriggers' ),
110 ];
111 }
112
113 $user = get_user_by( 'email', $user_email );
114 if ( ! $user ) {
115 return [
116 'status' => 'error',
117 'message' => __( 'WordPress user not found with this email address', 'suretriggers' ),
118 ];
119 }
120
121 $tva_user = new \TVA_User( $user->ID );
122 $had_access_before = $tva_user->has_bought( $product_id );
123
124 if ( ! $had_access_before ) {
125 return [
126 'status' => 'error',
127 'message' => __( 'User does not have access to this product', 'suretriggers' ),
128 ];
129 }
130
131 $result = \TVA_Customer::remove_user_from_product( $user, $product_id );
132
133 if ( ! $result ) {
134 return [
135 'status' => 'error',
136 'message' => __( 'Failed to remove product access', 'suretriggers' ),
137 ];
138 }
139
140 wp_cache_delete( $user->ID, 'tva_user' );
141 $tva_user = new \TVA_User( $user->ID );
142 $still_has_access = $tva_user->has_bought( $product_id );
143 if ( $still_has_access ) {
144 return [
145 'status' => 'error',
146 'message' => __( 'Product access could not be removed completely', 'suretriggers' ),
147 ];
148 }
149
150 $product_post = get_post( $product_id );
151 $product_data = [
152 'product_id' => $product_id,
153 'product_name' => $product_post ? $product_post->post_title : '',
154 ];
155
156 $user_data = [
157 'user_id' => $user->ID,
158 'user_email' => $user->user_email,
159 'user_login' => $user->user_login,
160 ];
161
162 do_action( 'tva_user_product_access_revoked', $user, $product_id );
163
164 return [
165 'status' => 'success',
166 'message' => __( 'Product access removed successfully', 'suretriggers' ),
167 'product_data' => $product_data,
168 'user_data' => $user_data,
169 ];
170 }
171 }
172
173 RemoveProductAccess::get_instance();
174