PluginProbe ʕ •ᴥ•ʔ
Tutor LMS – eLearning and online course solution / 3.7.0
Tutor LMS – eLearning and online course solution v3.7.0
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 / templates / ecommerce / checkout-details.php
tutor / templates / ecommerce Last commit date
billing-form-fields.php 1 year ago billing.php 1 year ago cart.php 11 months ago checkout-details.php 11 months ago checkout.php 11 months ago order-placement-failed.php 1 year ago order-placement-success.php 1 year ago
checkout-details.php
231 lines
1 <?php
2 /**
3 * Checkout info template
4 *
5 * @package Tutor\Views
6 * @author Themeum <support@themeum.com>
7 * @link https://themeum.com
8 * @since 3.0.0
9 */
10
11 use TUTOR\Input;
12 use Tutor\Ecommerce\Tax;
13 use Tutor\Models\OrderModel;
14 use Tutor\Ecommerce\Settings;
15 use Tutor\Models\CouponModel;
16 use Tutor\Ecommerce\CartController;
17 use Tutor\Ecommerce\CheckoutController;
18
19 /**
20 * User ID is required.
21 * Renders this view only (excluding checkout.php) when the country or state changes via AJAX.
22 */
23 $user_id = apply_filters( 'tutor_checkout_user_id', get_current_user_id() );
24
25 $coupon_model = new CouponModel();
26 $cart_controller = new CartController( false );
27 $checkout_controller = new CheckoutController( false );
28 $get_cart = $cart_controller->get_cart_items();
29 $courses = $get_cart['courses'];
30 $total_count = $courses['total_count'];
31 $course_id = (int) Input::sanitize_request_data( 'course_id', 0 );
32 $course_list = Settings::is_buy_now_enabled() && $course_id ? array( get_post( $course_id ) ) : $courses['results'];
33
34 $plan_id = (int) Input::sanitize_request_data( 'plan' );
35 $plan_info = apply_filters( 'tutor_get_plan_info', null, $plan_id );
36 $has_plan_info = $plan_id && $plan_info;
37
38 // Contains Course/Bundle/Plan ids.
39 $object_ids = array();
40 $item_ids = $has_plan_info ? array( $plan_info->id ) : array_column( $course_list, 'ID' );
41 $order_type = $has_plan_info ? OrderModel::TYPE_SUBSCRIPTION : OrderModel::TYPE_SINGLE_ORDER;
42
43 $coupon_code = apply_filters( 'tutor_checkout_coupon_code', Input::sanitize_request_data( 'coupon_code', '' ), $order_type, $item_ids );
44 $has_manual_coupon_code = ! empty( $coupon_code );
45
46 $should_calculate_tax = Tax::should_calculate_tax();
47 $is_tax_included_in_price = Tax::is_tax_included_in_price();
48 $tax_rate = Tax::get_user_tax_rate( $user_id );
49
50 $checkout_data = $checkout_controller->prepare_checkout_items( $item_ids, $order_type, $coupon_code );
51 $show_coupon_box = Settings::is_coupon_usage_enabled() && ! $checkout_data->is_coupon_applied;
52 ?>
53
54 <div class="tutor-checkout-details">
55
56 <?php do_action( 'tutor_before_checkout_order_details', $course_list ); ?>
57
58 <div class="tutor-checkout-details-inner">
59 <h5 class="tutor-fs-5 tutor-fw-medium tutor-color-black tutor-border-bottom tutor-pb-8">
60 <?php esc_html_e( 'Order Details', 'tutor' ); ?>
61 </h5>
62 <div class="tutor-checkout-detail-item">
63 <div class="tutor-checkout-courses">
64 <?php
65 // Subscription plan checkout item.
66 if ( $plan_info ) {
67 $plan_item_template = apply_filters( 'tutor_checkout_plan_item_template', null, $plan_info );
68 if ( file_exists( $plan_item_template ) ) {
69 require $plan_item_template;
70 }
71 } else {
72 /**
73 * Course and bundle checkout items.
74 */
75 if ( is_array( $course_list ) && count( $course_list ) ) :
76 ?>
77 <?php
78 foreach ( $checkout_data->items as $item ) :
79 $course = get_post( $item->item_id );
80 $course_thumbnail = get_tutor_course_thumbnail_src( 'post-thumbnail', $course->ID );
81 array_push( $object_ids, $item->item_id );
82 ?>
83 <div class="tutor-checkout-course-item" data-course-id="<?php echo esc_attr( $item->item_id ); ?>">
84 <?php if ( tutor()->has_pro && 'course-bundle' === $course->post_type ) : ?>
85 <div class="tutor-checkout-course-bundle-badge">
86 <?php
87 $bundle_model = new \TutorPro\CourseBundle\Models\BundleModel();
88 $bundle_course_ids = $bundle_model::get_bundle_course_ids( $course->ID );
89 // translators: %d: Number of courses in the cart.
90 echo esc_html( sprintf( __( '%d Course bundle', 'tutor' ), count( $bundle_course_ids ) ) );
91 ?>
92 </div>
93 <?php endif; ?>
94 <div class="tutor-checkout-course-content">
95 <div class="tutor-d-flex tutor-flex-column tutor-gap-1">
96 <div class="tutor-checkout-course-thumb-title">
97 <img src="<?php echo esc_url( $course_thumbnail ); ?>" alt="<?php echo esc_attr( $course->post_title ); ?>" />
98 <h6 class="tutor-checkout-course-title">
99 <a href="<?php echo esc_url( get_the_permalink( $course ) ); ?>">
100 <?php echo esc_html( $course->post_title ); ?>
101 </a>
102 </h6>
103 </div>
104 <div class="tutor-checkout-coupon-badge <?php echo esc_attr( $item->is_coupon_applied ? '' : 'tutor-d-none' ); ?>">
105 <i class="tutor-icon-tag" area-hidden="true"></i>
106 <span><?php echo esc_html( $item->is_coupon_applied ? $checkout_data->coupon_title : '' ); ?></span>
107 </div>
108 </div>
109 <div class="tutor-text-right">
110 <div class="tutor-fw-bold">
111 <?php tutor_print_formatted_price( $item->display_price ); ?>
112 </div>
113 <?php if ( $item->sale_price || $item->discount_price ) : ?>
114 <div class="tutor-checkout-discount-price">
115 <?php tutor_print_formatted_price( $item->regular_price ); ?>
116 </div>
117 <?php endif; ?>
118 <?php if ( $checkout_data->total_items > 1 && $item->tax_amount > 0 && $item->tax_collection ) : ?>
119 <div class="tutor-fs-8 tutor-color-muted tutor-checkout-incl-tax-label">
120 <?php echo esc_html( $item->tax_amount_readable ); ?>
121 </div>
122 <?php endif; ?>
123 </div>
124 </div>
125 </div>
126 <?php endforeach; ?>
127 <?php else : ?>
128 <?php tutor_utils()->tutor_empty_state( tutor_utils()->not_found_text() ); ?>
129 <?php endif; ?>
130 <?php } ?>
131 </div>
132 </div>
133
134 <div class="tutor-checkout-detail-item tutor-checkout-summary">
135 <div class="tutor-checkout-summary-item">
136 <div class="tutor-fw-medium"><?php esc_html_e( 'Subtotal', 'tutor' ); ?></div>
137 <div class="tutor-fw-bold">
138 <?php tutor_print_formatted_price( $checkout_data->subtotal_price ); ?>
139 </div>
140 </div>
141
142 <?php if ( $checkout_data->sale_discount > 0 ) : ?>
143 <div class="tutor-checkout-summary-item">
144 <div>
145 <?php
146 $sale_discount_label = apply_filters( 'tutor_checkout_sale_discount_label', __( 'Sale discount', 'tutor' ) );
147 echo esc_html( $sale_discount_label );
148 ?>
149 </div>
150 <div class="tutor-fw-bold">
151 - <?php tutor_print_formatted_price( $checkout_data->sale_discount ); ?>
152 </div>
153 </div>
154 <?php endif ?>
155
156 <?php if ( $show_coupon_box ) : ?>
157 <div class="tutor-checkout-summary-item tutor-have-a-coupon">
158 <div><?php esc_html_e( 'Have a coupon?', 'tutor' ); ?></div>
159 <button type="button" id="tutor-toggle-coupon-button" class="tutor-btn tutor-btn-link">
160 <?php esc_html_e( 'Click here', 'tutor' ); ?>
161 </button>
162 </div>
163 <div class="tutor-apply-coupon-form tutor-d-none">
164 <input type="text" name="coupon_code"
165 <?php if ( 'manual' === $checkout_data->coupon_type && $checkout_data->is_coupon_applied ) : ?>
166 value="<?php echo esc_attr( $coupon_code ); ?>"
167 <?php endif; ?>
168 placeholder="<?php esc_html_e( 'Add coupon code', 'tutor' ); ?>">
169 <button type="button" id="tutor-apply-coupon-button" class="tutor-btn tutor-btn-secondary" data-object-ids="<?php echo esc_attr( implode( ',', $object_ids ) ); ?>"><?php esc_html_e( 'Apply', 'tutor' ); ?></button>
170 </div>
171 <?php endif; ?>
172
173 <div class="tutor-checkout-summary-item tutor-checkout-coupon-wrapper <?php echo esc_attr( $checkout_data->is_coupon_applied ? '' : 'tutor-d-none' ); ?>">
174 <div class="tutor-checkout-coupon-badge tutor-has-delete-button">
175 <i class="tutor-icon-tag" area-hidden="true"></i>
176 <span><?php echo esc_html( $checkout_data->coupon_title ); ?></span>
177
178 <?php if ( $checkout_data->is_coupon_applied ) : ?>
179 <button type="button" id="tutor-checkout-remove-coupon" class="tutor-btn">
180 <i class="tutor-icon-times" area-hidden="true"></i>
181 </button>
182 <?php endif; ?>
183 </div>
184 <div class="tutor-fw-bold tutor-discount-amount">-<?php tutor_print_formatted_price( $checkout_data->coupon_discount ); ?></div>
185 </div>
186
187 <?php if ( $checkout_data->tax_amount > 0 && ! $is_tax_included_in_price ) : ?>
188 <div class="tutor-checkout-summary-item tutor-checkout-tax-amount">
189 <div><?php esc_html_e( 'Tax', 'tutor' ); ?></div>
190 <div class="tutor-fw-bold"><?php tutor_print_formatted_price( $checkout_data->tax_amount ); ?></div>
191 </div>
192 <?php endif; ?>
193 </div>
194
195 <div class="tutor-pt-12 tutor-pb-20">
196 <div class="tutor-checkout-summary-item">
197 <div class="tutor-fw-medium"><?php esc_html_e( 'Grand Total', 'tutor' ); ?></div>
198 <div class="tutor-fs-5 tutor-fw-bold tutor-checkout-grand-total">
199 <?php tutor_print_formatted_price( $checkout_data->total_price ); ?>
200 </div>
201 </div>
202 <div class="tutor-checkout-summary-item tutor-checkout-incl-tax-label">
203 <div></div>
204 <?php if ( $checkout_data->tax_amount > 0 && $is_tax_included_in_price ) : ?>
205 <div class="tutor-fs-7 tutor-color-muted">
206 <?php
207 /* translators: %s: tax amount */
208 echo esc_html( sprintf( __( '(Incl. Tax %s)', 'tutor' ), tutor_get_formatted_price( $checkout_data->tax_amount ) ) );
209 ?>
210 </div>
211 <?php endif ?>
212 </div>
213
214 <input type="hidden" name="coupon_code" value="<?php echo esc_attr( $coupon_code ); ?>">
215 <input type="hidden" name="object_ids" value="<?php echo esc_attr( implode( ',', $object_ids ) ); ?>">
216 <input type="hidden" name="order_type" value="<?php echo esc_attr( $order_type ); ?>">
217 </div>
218
219 <?php
220 $is_zero_price = empty( $checkout_data->total_price ) && OrderModel::TYPE_SINGLE_ORDER === $checkout_data->order_type;
221 $pay_now_btn_text = $is_zero_price ? __( 'Enroll Now', 'tutor' ) : __( 'Pay Now', 'tutor' );
222 $pay_now_btn_text = apply_filters( 'tutor_checkout_pay_now_btn_text', $pay_now_btn_text, $checkout_data );
223 $show_payment_methods = apply_filters( 'tutor_checkout_show_payment_methods', ! $is_zero_price, $checkout_data );
224
225 $checkout_data->pay_now_btn_text = $pay_now_btn_text;
226 $checkout_data->payment_method_required = $show_payment_methods;
227 ?>
228 <input type="hidden" id="checkout_data" value="<?php echo esc_attr( wp_json_encode( $checkout_data ) ); ?>">
229 </div>
230 </div>
231