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