PluginProbe ʕ •ᴥ•ʔ
Tutor LMS – eLearning and online course solution / 2.1.2
Tutor LMS – eLearning and online course solution v2.1.2
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 / models / WithdrawModel.php
tutor / models Last commit date
CourseModel.php 3 years ago LessonModel.php 3 years ago QuizModel.php 3 years ago WithdrawModel.php 3 years ago
WithdrawModel.php
193 lines
1 <?php
2 namespace Tutor\Models;
3
4 /**
5 * Class WithdrawModel
6 *
7 * @since 2.0.7
8 */
9 class WithdrawModel {
10 /**
11 * All withdraw status
12 */
13 const STATUS_PENDING = 'pending';
14 const STATUS_APPROVED = 'approved';
15 const STATUS_REJECTED = 'rejected';
16
17 /**
18 * Get withdraw summary info for an user
19 *
20 * @param int $instructor_id
21 * @return array|object|null|void
22 *
23 * @since 2.0.7
24 */
25 public static function get_withdraw_summary( $instructor_id ) {
26 global $wpdb;
27
28 $maturity_days = tutor_utils()->get_option( 'minimum_days_for_balance_to_be_available' );
29
30 $data = $wpdb->get_row(
31 $wpdb->prepare(
32 "SELECT ID, display_name,
33 total_income,total_withdraw,
34 (total_income-total_withdraw) current_balance,
35 total_matured,
36 greatest(0, total_matured - total_withdraw) available_for_withdraw
37
38 FROM (
39 SELECT ID,display_name,
40 COALESCE((SELECT SUM(instructor_amount) FROM {$wpdb->prefix}tutor_earnings WHERE order_status='%s' GROUP BY user_id HAVING user_id=u.ID),0) total_income,
41
42 COALESCE((
43 SELECT sum(amount) total_withdraw FROM {$wpdb->prefix}tutor_withdraws
44 WHERE status='%s'
45 GROUP BY user_id
46 HAVING user_id=u.ID
47 ),0) total_withdraw,
48
49 COALESCE((
50 SELECT SUM(instructor_amount) FROM(
51 SELECT user_id, instructor_amount, created_at, DATEDIFF(NOW(),created_at) AS days_old FROM {$wpdb->prefix}tutor_earnings WHERE order_status='%s'
52 ) a
53 WHERE days_old >= %d
54 GROUP BY user_id
55 HAVING user_id = u.ID
56 ),0) total_matured
57
58 FROM {$wpdb->prefix}users u WHERE u.ID=%d
59
60 ) a",
61 'completed',
62 self::STATUS_APPROVED,
63 'completed',
64 $maturity_days,
65 $instructor_id
66 )
67 );
68
69 return $data;
70 }
71
72 /**
73 * Get withdrawal history
74 *
75 * @param int $user_id | optional.
76 * @param array $filter | ex:
77 * array('status' => '','date' => '', 'order' => '', 'start' => 10, 'per_page' => 10,'search' => '')
78 *
79 * @return object
80 */
81 public static function get_withdrawals_history( $user_id = 0, $filter = array(), $start = 0, $limit = 20 ) {
82 global $wpdb;
83
84 $filter = (array) $filter;
85 extract( $filter );
86
87 $query_by_status_sql = '';
88 $query_by_user_sql = '';
89
90 if ( ! empty( $status ) ) {
91 $status = (array) $status;
92 $status = "'" . implode( "','", $status ) . "'";
93
94 $query_by_status_sql = " AND status IN({$status}) ";
95 }
96
97 if ( $user_id ) {
98 $query_by_user_sql = " AND user_id = {$user_id} ";
99 }
100
101 // Order query @since v2.0.0
102 $order_query = '';
103 if ( isset( $order ) && '' !== $order ) {
104 $order_query = "ORDER BY created_at {$order}";
105 } else {
106 $order_query = 'ORDER BY created_at DESC';
107 }
108
109 // Date query @since v.2.0.0
110 $date_query = '';
111 if ( isset( $date ) && '' !== $date ) {
112 $date_query = "AND DATE(created_at) = CAST( '$date' AS DATE )";
113 }
114
115 // Search query @since v.2.0.0
116 $search_term_raw = empty( $search ) ? '' : $search;
117 $search_query = '%%';
118 if ( ! empty( $search_term_raw ) ) {
119 $search_query = '%' . $wpdb->esc_like( $search_term_raw ) . '%';
120 }
121
122 $count = (int) $wpdb->get_var(
123 $wpdb->prepare(
124 "SELECT COUNT(withdraw_id)
125 FROM {$wpdb->prefix}tutor_withdraws withdraw_tbl
126 INNER JOIN {$wpdb->users} user_tbl
127 ON withdraw_tbl.user_id = user_tbl.ID
128 WHERE 1 = 1
129 {$query_by_user_sql}
130 {$query_by_status_sql}
131 {$date_query}
132 AND (user_tbl.display_name LIKE %s OR user_tbl.user_login LIKE %s OR user_tbl.user_nicename LIKE %s OR user_tbl.user_email = %s)
133 ",
134 $search_query,
135 $search_query,
136 $search_query,
137 $search_term_raw
138 )
139 );
140
141 $results = $wpdb->get_results(
142 $wpdb->prepare(
143 "SELECT withdraw_tbl.*,
144 user_tbl.display_name AS user_name,
145 user_tbl.user_email
146 FROM {$wpdb->prefix}tutor_withdraws withdraw_tbl
147 INNER JOIN {$wpdb->users} user_tbl
148 ON withdraw_tbl.user_id = user_tbl.ID
149 WHERE 1 = 1
150 {$query_by_user_sql}
151 {$query_by_status_sql}
152 {$date_query}
153
154 AND (user_tbl.display_name LIKE %s OR user_tbl.user_login LIKE %s OR user_tbl.user_nicename LIKE %s OR user_tbl.user_email = %s)
155 {$order_query}
156 LIMIT %d, %d
157 ",
158 $search_query,
159 $search_query,
160 $search_query,
161 $search_term_raw,
162 $start,
163 $limit
164 )
165 );
166
167 $withdraw_history = array(
168 'count' => $count ? $count : 0,
169 'results' => is_array( $results ) ? $results : array(),
170 );
171
172 return (object) $withdraw_history;
173 }
174
175 /**
176 * Get withdraw method for a specific
177 *
178 * @param int $user_id
179 *
180 * @return bool|mixed
181 */
182 public static function get_user_withdraw_method( $user_id = 0 ) {
183 $user_id = tutor_utils()->get_user_id( $user_id );
184 $account = get_user_meta( $user_id, '_tutor_withdraw_method_data', true );
185
186 if ( $account ) {
187 return maybe_unserialize( $account );
188 }
189
190 return false;
191 }
192 }
193