PluginProbe ʕ •ᴥ•ʔ
Tutor LMS – eLearning and online course solution / 1.2.20
Tutor LMS – eLearning and online course solution v1.2.20
3.9.14 3.9.13 3.9.12 3.9.11 trunk 1.0.0 1.0.0-alpha 1.0.1 1.0.2 1.0.3 1.0.4 1.0.5 1.0.6 1.0.7 1.0.8 1.0.9 1.1.0 1.1.1 1.2.0 1.2.1 1.2.11 1.2.12 1.2.13 1.2.20 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 1.3.5 1.3.6 1.3.7 1.3.8 1.3.9 1.4.0 1.4.1 1.4.2 1.4.3 1.4.4 1.4.5 1.4.6 1.4.7 1.4.8 1.4.9 1.5.0 1.5.1 1.5.2 1.5.3 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 1.5.9 1.6.0 1.6.1 1.6.2 1.6.3 1.6.4 1.6.5 1.6.6 1.6.7 1.6.8 1.6.9 1.7.0 1.7.1 1.7.2 1.7.3 1.7.4 1.7.5 1.7.6 1.7.7 1.7.8 1.7.9 1.8.0 1.8.1 1.8.10 1.8.2 1.8.3 1.8.4 1.8.5 1.8.6 1.8.7 1.8.8 1.8.9 1.9.0 1.9.1 1.9.10 1.9.11 1.9.12 1.9.13 1.9.14 1.9.15 1.9.16 1.9.2 1.9.3 1.9.4 1.9.5 1.9.6 1.9.7 1.9.8 1.9.9 2.0.0 2.0.1 2.0.10 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.0.8 2.0.9 2.1.0 2.1.1 2.1.10 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.1.9 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.3.0 2.4.0 2.5.0 2.6.0 2.6.1 2.6.2 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.7.6 2.7.7 3.0.0 3.0.1 3.0.2 3.1.0 3.2.0 3.2.1 3.2.2 3.2.3 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.5.0 3.6.0 3.6.1 3.6.2 3.6.3 3.6.4 3.7.0 3.7.1 3.7.2 3.7.3 3.7.4 3.8.0 3.8.1 3.8.2 3.8.3 3.9.0 3.9.1 3.9.10 3.9.2 3.9.3 3.9.4 3.9.5 3.9.6 3.9.7 3.9.8 3.9.9
tutor / classes / Withdraw.php
tutor / classes Last commit date
Addons.php 7 years ago Admin.php 7 years ago Ajax.php 7 years ago Assets.php 7 years ago Course.php 7 years ago Gutenberg.php 7 years ago Instructor.php 7 years ago Instructors_List.php 7 years ago Lesson.php 7 years ago Options.php 7 years ago Post_types.php 7 years ago Q_and_A.php 7 years ago Question.php 7 years ago Question_Answers_List.php 7 years ago Quiz.php 7 years ago Quiz_Attempts_List.php 7 years ago Rewrite_Rules.php 7 years ago Shortcode.php 7 years ago Student.php 7 years ago Students_List.php 7 years ago Taxonomies.php 7 years ago Template.php 7 years ago Theme_Compatibility.php 7 years ago Tools.php 7 years ago Tutor.php 7 years ago TutorEDD.php 7 years ago Tutor_Base.php 7 years ago Tutor_List_Table.php 7 years ago User.php 7 years ago Utils.php 7 years ago Video_Stream.php 7 years ago Withdraw.php 7 years ago Withdraw_Requests_List.php 7 years ago WooCommerce.php 7 years ago
Withdraw.php
272 lines
1 <?php
2 /**
3 * Withdraw class
4 *
5 * @author: themeum
6 * @author_uri: https://themeum.com
7 * @package Tutor
8 * @since v.1.0.0
9 */
10
11 namespace TUTOR;
12
13
14 if ( ! defined( 'ABSPATH' ) )
15 exit;
16
17 class Withdraw {
18
19 public $available_withdraw_methods;
20 public $get_options;
21 protected $withdraw_methods;
22
23 public function __construct() {
24
25 $this->get_options = $this->get_options();
26 $this->withdraw_methods = $this->withdraw_methods();
27 $this->available_withdraw_methods = $this->available_withdraw_methods();
28
29 add_action('tutor_options_tutor_withdraw_withdraw_methods_before', array($this, 'withdraw_admin_options'));
30 add_action('tutor_option_save_after', array($this, 'withdraw_option_save'));
31
32
33 add_action('wp_ajax_tutor_save_withdraw_account', array($this, 'tutor_save_withdraw_account'));
34 add_action('wp_ajax_tutor_make_an_withdraw', array($this, 'tutor_make_an_withdraw'));
35
36
37 }
38
39
40
41 public function withdraw_methods(){
42
43 $methods = array(
44 'bank_transfer_withdraw' => array(
45 'method_name' => __('Bank Transfer', 'tutor'),
46 'desc' => __('Get your payment directly into your bank account', 'tutor'),
47
48 'admin_form_fields' => array(
49 'instruction' => array(
50 'type' => 'textarea',
51 'label' => __('Instruction', 'tutor'),
52 'desc' => __('Write instruction for the instructor to fill bank information', 'tutor'),
53 ),
54 ),
55
56 'form_fields' => array(
57 'account_name' => array(
58 'type' => 'text',
59 'label' => __('Account Name', 'tutor'),
60 ),
61
62 'account_number' => array(
63 'type' => 'text',
64 'label' => __('Account Number', 'tutor'),
65 ),
66
67 'bank_name' => array(
68 'type' => 'text',
69 'label' => __('Bank Name', 'tutor'),
70 ),
71 'iban' => array(
72 'type' => 'text',
73 'label' => __('IBAN', 'tutor'),
74 ),
75 'swift' => array(
76 'type' => 'text',
77 'label' => __('BIC / SWIFT', 'tutor'),
78 ),
79
80 ),
81 ),
82
83 'echeck_withdraw' => array(
84 'method_name' => __('ECHECK', 'tutor'),
85
86 'form_fields' => array(
87 'physical_address' => array(
88 'type' => 'textarea',
89 'label' => __('Your Physical Address', 'tutor'),
90 'desc' => __('We will send you an ECHECK to this address directly.', 'tutor'),
91 ),
92 ),
93 ),
94
95 'paypal_withdraw' => array(
96 'method_name' => __('PayPal Payment', 'tutor'),
97
98 'form_fields' => array(
99 'paypal_email' => array(
100 'type' => 'email',
101 'label' => __('PayPal E-Mail Address', 'tutor'),
102 'desc' => __('Write your paypal email address to get payout directly to your paypal account', 'tutor'),
103 ),
104
105 ),
106 ),
107
108 );
109
110 $withdraw_methods = apply_filters('tutor_withdraw_methods', $methods);
111
112 return $withdraw_methods;
113 }
114
115 /**
116 * @return mixed|array
117 *
118 * Return only enabled methods
119 */
120 public function available_withdraw_methods(){
121 $withdraw_options = $this->get_options();
122 $methods = $this->withdraw_methods();
123
124 foreach ($methods as $method_id => $method){
125 $is_enable = (bool) tutor_utils()->avalue_dot($method_id.".enabled", $withdraw_options);
126
127 if ( ! $is_enable){
128 unset($methods[$method_id]);
129 }
130 }
131
132 return $methods;
133 }
134
135 public function get_options(){
136 return (array) maybe_unserialize(get_option('tutor_withdraw_options'));
137 }
138
139 public function withdraw_admin_options(){
140 include tutor()->path.'views/options/withdraw/withdraw_admin_options_generator.php';
141 }
142
143
144 /**
145 * Save Withdraw method
146 *
147 * @since v.1.2.0
148 */
149 public function withdraw_option_save(){
150
151 do_action('tutor_withdraw_options_save_before');
152
153 $option = (array) isset($_POST['tutor_withdraw_options']) ? $_POST['tutor_withdraw_options'] : array();
154 $option = apply_filters('tutor_withdraw_options_input', $option);
155 update_option('tutor_withdraw_options', $option);
156
157 do_action('tutor_withdraw_options_save_after');
158
159
160 }
161
162 /**
163 * Save Withdraw Method Data
164 *
165 * @since v.1.2.0
166 */
167
168 public function tutor_save_withdraw_account(){
169 //Checking nonce
170 tutor_utils()->checking_nonce();
171
172 $user_id = get_current_user_id();
173 $post = $_POST;
174
175 $method = tutor_utils()->avalue_dot('tutor_selected_withdraw_method', $post);
176 if ( ! $method){
177 wp_send_json_error();
178 }
179
180 $method_data = tutor_utils()->avalue_dot("withdraw_method_field.".$method, $post);
181 $available_withdraw_method = tutor_withdrawal_methods();
182
183 if (tutor_utils()->count($method_data)){
184 $saved_data = array();
185 $saved_data['withdraw_method_key'] = $method;
186 $saved_data['withdraw_method_name'] = tutor_utils()->avalue_dot($method.".method_name", $available_withdraw_method);
187
188 foreach ($method_data as $input_name => $value){
189 $saved_data[$input_name]['value'] = sanitize_text_field($value);
190 $saved_data[$input_name]['label'] = tutor_utils()->avalue_dot($method.".form_fields.{$input_name}.label", $available_withdraw_method);
191 }
192
193 update_user_meta($user_id, '_tutor_withdraw_method_data', $saved_data);
194 }
195
196 $msg = apply_filters('tutor_withdraw_method_set_success_msg', __('Withdraw account has been set successfully', 'tutor'));
197 wp_send_json_success(array('msg' => $msg ));
198 }
199
200 public function tutor_make_an_withdraw(){
201 global $wpdb;
202
203 //Checking nonce
204 tutor_utils()->checking_nonce();
205
206 do_action('tutor_withdraw_before');
207
208
209 $user_id = get_current_user_id();
210 $post = $_POST;
211
212 $withdraw_amount = sanitize_text_field(tutor_utils()->avalue_dot('tutor_withdraw_amount', $post));
213
214 $earning_sum = tutor_utils()->get_earning_sum();
215 $min_withdraw = tutor_utils()->get_option('min_withdraw_amount');
216
217 $saved_withdraw_account = tutor_utils()->get_user_withdraw_method();
218 $formatted_balance = tutor_utils()->tutor_price($earning_sum->balance);
219 $formatted_min_withdraw_amount = tutor_utils()->tutor_price($min_withdraw);
220
221
222 if ( ! tutor_utils()->count($saved_withdraw_account)){
223 $no_withdraw_method = apply_filters('tutor_no_withdraw_method_msg', __('Please save withdraw method ', 'tutor') );
224 wp_send_json_error(array('msg' => $no_withdraw_method ));
225 }
226
227 if ($withdraw_amount < $min_withdraw){
228 $required_min_withdraw = apply_filters('tutor_required_min_amount_msg', sprintf(__('Minimum withdraw amount is %s %s %s ', 'tutor') , '<strong>', $formatted_min_withdraw_amount, '</strong>' ) );
229 wp_send_json_error(array('msg' => $required_min_withdraw ));
230 }
231
232 if ($earning_sum->balance < $withdraw_amount){
233 $insufficient_balence = apply_filters('tutor_withdraw_insufficient_balance_msg', sprintf(__('Insufficient balance to withdraw, your balance is %s %s %s ', 'tutor'),'<strong>', $formatted_balance, '</strong>' ) );
234
235 wp_send_json_error(array('msg' => $insufficient_balence ));
236 }
237
238
239 $date = date("Y-m-d H:i:s");
240
241 $withdraw_data = apply_filters('tutor_pre_withdraw_data', array(
242 'user_id' => $user_id,
243 'amount' => $withdraw_amount,
244 'method_data' => maybe_serialize($saved_withdraw_account),
245 'status' => 'pending',
246 'created_at' => $date,
247 ));
248
249 do_action('tutor_insert_withdraw_before', $withdraw_data);
250
251 $wpdb->insert($wpdb->prefix."tutor_withdraws", $withdraw_data);
252 $withdraw_id = $wpdb->insert_id;
253
254 do_action('tutor_insert_withdraw_after', $withdraw_id, $withdraw_data);
255
256
257 /**
258 * Getting earning and balance data again
259 */
260 $earning = tutor_utils()->get_earning_sum();
261 $new_available_balance = tutor_utils()->tutor_price($earning->balance);
262
263
264 do_action('tutor_withdraw_after');
265
266 $withdraw_successfull_msg = apply_filters('tutor_withdraw_successful_msg', __('Withdraw has been successful', 'tutor'));
267 wp_send_json_success(array('msg' => $withdraw_successfull_msg, 'available_balance' => $new_available_balance ));
268 }
269
270
271
272 }