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 / advanced-coupons / actions / remove-store-credit-from-user.php
suretriggers / src / Integrations / advanced-coupons / actions Last commit date
add-store-credit-to-user.php 11 months ago create-coupon.php 6 months ago remove-store-credit-from-user.php 11 months ago
remove-store-credit-from-user.php
169 lines
1 <?php
2 /**
3 * RemoveStoreCreditFromUser.
4 * php version 5.6
5 *
6 * @category RemoveStoreCreditFromUser
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\AdvancedCoupons\Actions;
15
16 use Exception;
17 use SureTriggers\Integrations\AutomateAction;
18 use SureTriggers\Integrations\WordPress\WordPress;
19 use ACFWF\Models\Objects\Store_Credit_Entry;
20 use ACFWF\Helpers\Plugin_Constants;
21 use SureTriggers\Traits\SingletonLoader;
22
23 /**
24 * RemoveStoreCreditFromUser
25 *
26 * @category RemoveStoreCreditFromUser
27 * @package SureTriggers
28 * @author BSF <username@example.com>
29 * @license https://www.gnu.org/licenses/gpl-3.0.html GPLv3
30 * @link https://www.brainstormforce.com/
31 * @since 1.0.0
32 */
33 class RemoveStoreCreditFromUser extends AutomateAction {
34
35 /**
36 * Integration type.
37 *
38 * @var string
39 */
40 public $integration = 'AdvancedCoupons';
41
42 /**
43 * Action name.
44 *
45 * @var string
46 */
47 public $action = 'remove_store_credit_from_user';
48
49 use SingletonLoader;
50
51 /**
52 * Register a action.
53 *
54 * @param array $actions actions.
55 * @return array
56 */
57 public function register( $actions ) {
58 $actions[ $this->integration ][ $this->action ] = [
59 'label' => __( 'Remove Store Credit from User', 'suretriggers' ),
60 'action' => $this->action,
61 'function' => [ $this, 'action_listener' ],
62 ];
63
64 return $actions;
65 }
66
67 /**
68 * Action listener.
69 *
70 * @param int $user_id user_id.
71 * @param int $automation_id automation_id.
72 * @param array $fields fields.
73 * @param array $selected_options selectedOptions.
74 * @throws Exception Exception.
75 *
76 * @return bool|array|void
77 */
78 public function _action_listener( $user_id, $automation_id, $fields, $selected_options ) {
79 $amount = floatval( $selected_options['credit_amount'] );
80
81 $user_id = $selected_options['wp_user_email'];
82
83 if ( is_email( $user_id ) ) {
84 $user = get_user_by( 'email', $user_id );
85
86 if ( $user ) {
87 $user_id = $user->ID;
88 if ( $amount <= 0 ) {
89 return false;
90 }
91
92 if ( function_exists( 'ACFWF' ) ) {
93 $balance = apply_filters( 'acfw_filter_amount', \ACFWF()->Store_Credits_Calculate->get_customer_balance( $user_id ) );
94
95 if ( $balance < $amount ) {
96 return [
97 'status' => 'error',
98 'message' => "The user's store credit balance is insufficient.",
99 ];
100 }
101 }
102
103 $params = [
104 'user_id' => $user_id,
105 'type' => 'decrease',
106 'amount' => $amount,
107 'object_id' => $user_id,
108 'action' => 'admin_decrease',
109 'date' => gmdate( 'Y-m-d H:i:s' ),
110 'note' => 'SureTriggers',
111 ];
112
113 $date_format = 'Y-m-d H:i:s';
114
115 if ( class_exists( 'ACFWF\Models\Objects\Store_Credit_Entry' ) ) {
116 $store_credit_entry = new \ACFWF\Models\Objects\Store_Credit_Entry();
117
118 foreach ( $params as $prop => $value ) {
119 if ( $value && 'date' === $prop ) {
120 $store_credit_entry->set_date_prop( $prop, $value, $date_format );
121 } else {
122 $store_credit_entry->set_prop( $prop, $value );
123 }
124
125 if ( 'action' === $prop && in_array(
126 $value,
127 [
128 'admin_increase',
129 'admin_decrease',
130 ],
131 true
132 ) ) {
133 $store_credit_entry->set_prop( 'object_id', $user_id );
134 }
135 }
136 $check = $store_credit_entry->save();
137 if ( is_wp_error( $check ) ) {
138 return [
139 'status' => 'error',
140 'message' => 'The amount enter is not valid.',
141 ];
142 }
143 if ( function_exists( 'ACFWF' ) ) {
144 $cur_balance = apply_filters( 'acfw_filter_amount', \ACFWF()->Store_Credits_Calculate->get_customer_balance( $user_id ) );
145
146 $context['current_balance'] = $cur_balance;
147 return array_merge(
148 WordPress::get_user_context( $user_id ),
149 $context
150 );
151 }
152 }
153 } else {
154 return [
155 'status' => 'error',
156 'message' => 'Invalid User.',
157 ];
158 }
159 } else {
160 return [
161 'status' => 'error',
162 'message' => 'Please enter valid email address.',
163 ];
164 }
165 }
166 }
167
168 RemoveStoreCreditFromUser::get_instance();
169