PluginProbe ʕ •ᴥ•ʔ
Tutor LMS – eLearning and online course solution / 1.3.3
Tutor LMS – eLearning and online course solution v1.3.3
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 6 years ago Admin.php 6 years ago Ajax.php 6 years ago Assets.php 6 years ago Course.php 6 years ago Course_Widget.php 6 years ago Gutenberg.php 6 years ago Instructor.php 6 years ago Instructors_List.php 6 years ago Lesson.php 6 years ago Options.php 6 years ago Post_types.php 6 years ago Q_and_A.php 6 years ago Question.php 6 years ago Question_Answers_List.php 6 years ago Quiz.php 6 years ago Quiz_Attempts_List.php 6 years ago Rewrite_Rules.php 6 years ago Shortcode.php 6 years ago Student.php 6 years ago Students_List.php 6 years ago Taxonomies.php 6 years ago Template.php 6 years ago Theme_Compatibility.php 6 years ago Tools.php 6 years ago Tutor.php 6 years ago TutorEDD.php 6 years ago Tutor_Base.php 6 years ago Tutor_List_Table.php 6 years ago Upgrader.php 6 years ago User.php 6 years ago Utils.php 6 years ago Video_Stream.php 6 years ago Withdraw.php 6 years ago Withdraw_Requests_List.php 6 years ago WooCommerce.php 6 years ago
Withdraw.php
271 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 if ( ! defined( 'ABSPATH' ) )
14 exit;
15
16 class Withdraw {
17
18 public $available_withdraw_methods;
19 public $get_options;
20 protected $withdraw_methods;
21
22 public function __construct() {
23
24 $this->get_options = $this->get_options();
25 $this->withdraw_methods = $this->withdraw_methods();
26 $this->available_withdraw_methods = $this->available_withdraw_methods();
27
28 add_action('tutor_options_tutor_withdraw_withdraw_methods_before', array($this, 'withdraw_admin_options'));
29 add_action('tutor_option_save_after', array($this, 'withdraw_option_save'));
30
31
32 add_action('wp_ajax_tutor_save_withdraw_account', array($this, 'tutor_save_withdraw_account'));
33 add_action('wp_ajax_tutor_make_an_withdraw', array($this, 'tutor_make_an_withdraw'));
34
35
36 }
37
38
39
40 public function withdraw_methods(){
41
42 $methods = array(
43 'bank_transfer_withdraw' => array(
44 'method_name' => __('Bank Transfer', 'tutor'),
45 'desc' => __('Get your payment directly into your bank account', 'tutor'),
46
47 'admin_form_fields' => array(
48 'instruction' => array(
49 'type' => 'textarea',
50 'label' => __('Instruction', 'tutor'),
51 'desc' => __('Write instruction for the instructor to fill bank information', 'tutor'),
52 ),
53 ),
54
55 'form_fields' => array(
56 'account_name' => array(
57 'type' => 'text',
58 'label' => __('Account Name', 'tutor'),
59 ),
60
61 'account_number' => array(
62 'type' => 'text',
63 'label' => __('Account Number', 'tutor'),
64 ),
65
66 'bank_name' => array(
67 'type' => 'text',
68 'label' => __('Bank Name', 'tutor'),
69 ),
70 'iban' => array(
71 'type' => 'text',
72 'label' => __('IBAN', 'tutor'),
73 ),
74 'swift' => array(
75 'type' => 'text',
76 'label' => __('BIC / SWIFT', 'tutor'),
77 ),
78
79 ),
80 ),
81
82 'echeck_withdraw' => array(
83 'method_name' => __('ECHECK', 'tutor'),
84
85 'form_fields' => array(
86 'physical_address' => array(
87 'type' => 'textarea',
88 'label' => __('Your Physical Address', 'tutor'),
89 'desc' => __('We will send you an ECHECK to this address directly.', 'tutor'),
90 ),
91 ),
92 ),
93
94 'paypal_withdraw' => array(
95 'method_name' => __('PayPal Payment', 'tutor'),
96
97 'form_fields' => array(
98 'paypal_email' => array(
99 'type' => 'email',
100 'label' => __('PayPal E-Mail Address', 'tutor'),
101 'desc' => __('Write your paypal email address to get payout directly to your paypal account', 'tutor'),
102 ),
103
104 ),
105 ),
106
107 );
108
109 $withdraw_methods = apply_filters('tutor_withdraw_methods', $methods);
110
111 return $withdraw_methods;
112 }
113
114 /**
115 * @return mixed|array
116 *
117 * Return only enabled methods
118 */
119 public function available_withdraw_methods(){
120 $withdraw_options = $this->get_options();
121 $methods = $this->withdraw_methods();
122
123 foreach ($methods as $method_id => $method){
124 $is_enable = (bool) tutor_utils()->avalue_dot($method_id.".enabled", $withdraw_options);
125
126 if ( ! $is_enable){
127 unset($methods[$method_id]);
128 }
129 }
130
131 return $methods;
132 }
133
134 public function get_options(){
135 return (array) maybe_unserialize(get_option('tutor_withdraw_options'));
136 }
137
138 public function withdraw_admin_options(){
139 include tutor()->path.'views/options/withdraw/withdraw_admin_options_generator.php';
140 }
141
142
143 /**
144 * Save Withdraw method
145 *
146 * @since v.1.2.0
147 */
148 public function withdraw_option_save(){
149
150 do_action('tutor_withdraw_options_save_before');
151
152 $option = (array) isset($_POST['tutor_withdraw_options']) ? $_POST['tutor_withdraw_options'] : array();
153 $option = apply_filters('tutor_withdraw_options_input', $option);
154 update_option('tutor_withdraw_options', $option);
155
156 do_action('tutor_withdraw_options_save_after');
157
158
159 }
160
161 /**
162 * Save Withdraw Method Data
163 *
164 * @since v.1.2.0
165 */
166
167 public function tutor_save_withdraw_account(){
168 //Checking nonce
169 tutor_utils()->checking_nonce();
170
171 $user_id = get_current_user_id();
172 $post = $_POST;
173
174 $method = tutor_utils()->avalue_dot('tutor_selected_withdraw_method', $post);
175 if ( ! $method){
176 wp_send_json_error();
177 }
178
179 $method_data = tutor_utils()->avalue_dot("withdraw_method_field.".$method, $post);
180 $available_withdraw_method = tutor_withdrawal_methods();
181
182 if (tutor_utils()->count($method_data)){
183 $saved_data = array();
184 $saved_data['withdraw_method_key'] = $method;
185 $saved_data['withdraw_method_name'] = tutor_utils()->avalue_dot($method.".method_name", $available_withdraw_method);
186
187 foreach ($method_data as $input_name => $value){
188 $saved_data[$input_name]['value'] = sanitize_text_field($value);
189 $saved_data[$input_name]['label'] = tutor_utils()->avalue_dot($method.".form_fields.{$input_name}.label", $available_withdraw_method);
190 }
191
192 update_user_meta($user_id, '_tutor_withdraw_method_data', $saved_data);
193 }
194
195 $msg = apply_filters('tutor_withdraw_method_set_success_msg', __('Withdraw account has been set successfully', 'tutor'));
196 wp_send_json_success(array('msg' => $msg ));
197 }
198
199 public function tutor_make_an_withdraw(){
200 global $wpdb;
201
202 //Checking nonce
203 tutor_utils()->checking_nonce();
204
205 do_action('tutor_withdraw_before');
206
207
208 $user_id = get_current_user_id();
209 $post = $_POST;
210
211 $withdraw_amount = sanitize_text_field(tutor_utils()->avalue_dot('tutor_withdraw_amount', $post));
212
213 $earning_sum = tutor_utils()->get_earning_sum();
214 $min_withdraw = tutor_utils()->get_option('min_withdraw_amount');
215
216 $saved_withdraw_account = tutor_utils()->get_user_withdraw_method();
217 $formatted_balance = tutor_utils()->tutor_price($earning_sum->balance);
218 $formatted_min_withdraw_amount = tutor_utils()->tutor_price($min_withdraw);
219
220
221 if ( ! tutor_utils()->count($saved_withdraw_account)){
222 $no_withdraw_method = apply_filters('tutor_no_withdraw_method_msg', __('Please save withdraw method ', 'tutor') );
223 wp_send_json_error(array('msg' => $no_withdraw_method ));
224 }
225
226 if ($withdraw_amount < $min_withdraw){
227 $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>' ) );
228 wp_send_json_error(array('msg' => $required_min_withdraw ));
229 }
230
231 if ($earning_sum->balance < $withdraw_amount){
232 $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>' ) );
233
234 wp_send_json_error(array('msg' => $insufficient_balence ));
235 }
236
237
238 $date = date("Y-m-d H:i:s");
239
240 $withdraw_data = apply_filters('tutor_pre_withdraw_data', array(
241 'user_id' => $user_id,
242 'amount' => $withdraw_amount,
243 'method_data' => maybe_serialize($saved_withdraw_account),
244 'status' => 'pending',
245 'created_at' => $date,
246 ));
247
248 do_action('tutor_insert_withdraw_before', $withdraw_data);
249
250 $wpdb->insert($wpdb->prefix."tutor_withdraws", $withdraw_data);
251 $withdraw_id = $wpdb->insert_id;
252
253 do_action('tutor_insert_withdraw_after', $withdraw_id, $withdraw_data);
254
255
256 /**
257 * Getting earning and balance data again
258 */
259 $earning = tutor_utils()->get_earning_sum();
260 $new_available_balance = tutor_utils()->tutor_price($earning->balance);
261
262
263 do_action('tutor_withdraw_after');
264
265 $withdraw_successfull_msg = apply_filters('tutor_withdraw_successful_msg', __('Withdraw has been successful', 'tutor'));
266 wp_send_json_success(array('msg' => $withdraw_successfull_msg, 'available_balance' => $new_available_balance ));
267 }
268
269
270
271 }