PluginProbe ʕ •ᴥ•ʔ
Tutor LMS – eLearning and online course solution / 4.0.3
Tutor LMS – eLearning and online course solution v4.0.3
4.0.3 4.0.2 4.0.1 4.0.0 3.9.15 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 / BillingModel.php
tutor / models Last commit date
BaseModel.php 10 months ago BillingModel.php 6 days ago CartItemModel.php 10 months ago CartModel.php 3 weeks ago CouponModel.php 3 weeks ago CourseModel.php 6 days ago EnrollmentModel.php 6 days ago LessonModel.php 10 months ago OrderActivitiesModel.php 1 year ago OrderItemMetaModel.php 10 months ago OrderItemModel.php 10 months ago OrderMetaModel.php 1 year ago OrderModel.php 3 weeks ago QuizModel.php 6 days ago UserModel.php 1 year ago WithdrawModel.php 3 weeks ago
BillingModel.php
179 lines
1 <?php
2 /**
3 * Billing Model
4 *
5 * @package Tutor\Models
6 * @author Themeum <support@themeum.com>
7 * @link https://themeum.com
8 * @since 3.0.0
9 */
10
11 namespace Tutor\Models;
12
13 use Tutor\Helpers\QueryHelper;
14
15 /**
16 * Billing model class for performing billing functionalities
17 */
18 class BillingModel {
19
20 /**
21 * Fillable fields
22 *
23 * @var array
24 */
25 private $fillable_fields = array(
26 'billing_first_name',
27 'billing_last_name',
28 'billing_email',
29 'billing_phone',
30 'billing_zip_code',
31 'billing_address',
32 'billing_country',
33 'billing_state',
34 'billing_city',
35 );
36
37 /**
38 * Required fields
39 *
40 * @var array
41 */
42 private $required_fields = array(
43 'billing_first_name',
44 'billing_last_name',
45 'billing_email',
46 'billing_phone',
47 'billing_zip_code',
48 'billing_address',
49 'billing_country',
50 'billing_state',
51 'billing_city',
52 );
53
54 /**
55 * Get fillable fields
56 *
57 * @return array
58 */
59 public function get_fillable_fields() {
60 return $this->fillable_fields;
61 }
62
63 /**
64 * Get required fields
65 *
66 * @return array
67 */
68 public function get_required_fields() {
69 return $this->required_fields;
70 }
71
72 /**
73 * Insert billing info
74 *
75 * @param array $data Bulling info data.
76 *
77 * @return int The ID of the inserted row on success, or 0 on failure.
78 */
79 public function insert( $data ) {
80 global $wpdb;
81
82 return QueryHelper::insert(
83 "{$wpdb->prefix}tutor_customers",
84 $data,
85 );
86 }
87
88 /**
89 * Update billing info
90 *
91 * @param array $data Bulling info data.
92 * @param array $where Where condition.
93 *
94 * @return bool True on success, false on failure.
95 */
96 public function update( $data, $where ) {
97 global $wpdb;
98
99 return QueryHelper::update(
100 "{$wpdb->prefix}tutor_customers",
101 $data,
102 $where,
103 );
104 }
105
106 /**
107 * Get billing info
108 *
109 * @param int $user_id User ID.
110 *
111 * @return object|false The billing info as an object if found, or false if not found.
112 */
113 public function get_info( $user_id ) {
114 global $wpdb;
115
116 $billing_info = QueryHelper::get_row(
117 "{$wpdb->prefix}tutor_customers",
118 array(
119 'user_id' => $user_id,
120 ),
121 'id'
122 );
123 return $billing_info;
124 }
125
126 /**
127 * Check if billing info has all required fields.
128 *
129 * @since 4.0.2
130 *
131 * @param array $data Billing data to check.
132 *
133 * @return bool
134 */
135 public function has_complete_billing_info( array $data ) {
136 foreach ( $this->get_required_fields() as $field ) {
137 if ( empty( $data[ $field ] ) ) {
138 return false;
139 }
140 }
141
142 return true;
143 }
144
145 /**
146 * Get formatted billing display data.
147 *
148 * @since 4.0.2
149 *
150 * @param array $data Billing data.
151 * @param array $country_options Country options list.
152 *
153 * @return array
154 */
155 public function get_formatted_billing_display_data( array $data, array $country_options ) {
156 $billing_country = $data['billing_country'] ?? '';
157 $full_name = trim( ( $data['billing_first_name'] ?? '' ) . ' ' . ( $data['billing_last_name'] ?? '' ) );
158 $address_parts = array_filter(
159 array(
160 $data['billing_address'] ?? '',
161 $data['billing_city'] ?? '',
162 $data['billing_state'] ?? '',
163 $data['billing_zip_code'] ?? '',
164 $country_options[ $billing_country ] ?? $billing_country,
165 )
166 );
167 $address_line = implode( ', ', $address_parts );
168
169 return array_filter(
170 array(
171 'name' => $full_name,
172 'email' => $data['billing_email'] ?? '',
173 'address' => $address_line,
174 'phone' => $data['billing_phone'] ?? '',
175 )
176 );
177 }
178 }
179