PluginProbe ʕ •ᴥ•ʔ
Tutor LMS – eLearning and online course solution / 1.6.0
Tutor LMS – eLearning and online course solution v1.6.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 / Template.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_Settings_Tabs.php 6 years ago Course_Widget.php 6 years ago Dashboard.php 6 years ago Email.php 6 years ago FormHandler.php 6 years ago Frontend.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_Answers_List.php 6 years ago Quiz.php 6 years ago Quiz_Attempts_List.php 6 years ago RestAPI.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 Tutor_Setup.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
Template.php
420 lines
1 <?php
2 /**
3 * Template Class
4 *
5 * @since: v.1.0.0
6 */
7 namespace TUTOR;
8
9
10 if ( ! defined( 'ABSPATH' ) )
11 exit;
12
13
14 class Template extends Tutor_Base {
15
16 public function __construct() {
17 parent::__construct();
18
19 add_action( 'pre_get_posts', array($this, 'limit_course_query_archive'), 99 );
20
21
22 /**
23 * Should Load Template Override
24 * Integration for specially oxygen builder
25 * If we found false of below filter, then we will not use this file
26 */
27
28 $template_override = apply_filters('tutor_lms_should_template_override', true);
29 if ( ! $template_override){
30 return;
31 }
32
33 add_filter( 'template_include', array($this, 'load_course_archive_template'), 99 );
34 add_filter( 'template_include', array($this, 'load_single_course_template'), 99 );
35 add_filter( 'template_include', array($this, 'load_single_lesson_template'), 99 );
36 add_filter( 'template_include', array($this, 'play_private_video'), 99 );
37 add_filter( 'template_include', array($this, 'load_quiz_template'), 99 );
38 add_filter( 'template_include', array($this, 'load_assignment_template'), 99 );
39
40 add_filter( 'template_include', array($this, 'student_public_profile'), 99 );
41 add_filter( 'template_include', array($this, 'tutor_dashboard'), 99 );
42 add_filter( 'pre_get_document_title', array($this, 'student_public_profile_title') );
43
44 add_filter( 'the_content', array($this, 'convert_static_page_to_template'));
45 }
46
47 /**
48 * @param $template
49 *
50 * @return bool|string
51 *
52 * Load default template for course
53 *
54 * @since v.1.0.0
55 *
56 */
57 public function load_course_archive_template($template){
58 global $wp_query;
59
60 $post_type = get_query_var('post_type');
61 $course_category = get_query_var('course-category');
62
63 if ( ($post_type === $this->course_post_type || ! empty($course_category) ) && $wp_query->is_archive){
64 $template = tutor_get_template('archive-course');
65 return $template;
66 }
67
68 return $template;
69 }
70
71 /**
72 * @param $query
73 *
74 * limit for course archive listing
75 *
76 * Make a page to archive listing for courses
77 */
78 public function limit_course_query_archive($query){
79 $courses_per_page = (int) tutor_utils()->get_option('courses_per_page', 10);
80
81 if ($query->is_main_query() && ! $query->is_feed() && ! is_admin() && is_page() ){
82 $queried_object = get_queried_object();
83 if ($queried_object instanceof \WP_Post){
84 $page_id = $queried_object->ID;
85 $selected_archive_page = (int) tutor_utils()->get_option('course_archive_page');
86
87 if ($page_id === $selected_archive_page){
88 $paged = ( get_query_var( 'paged' ) ) ? absint( get_query_var( 'paged' ) ) : 1;
89 $search_query = get_search_query();
90 query_posts(array('post_type' => $this->course_post_type, 'paged' => $paged, 's' => $search_query, 'posts_per_page' => $courses_per_page ));
91 }
92 }
93 }
94
95 if ( $query->is_archive && $query->is_main_query() && ! $query->is_feed() && ! is_admin() ){
96 $post_type = get_query_var('post_type');
97 $course_category = get_query_var('course-category');
98 if ( ($post_type === $this->course_post_type || ! empty($course_category) )){
99 $query->set('posts_per_page', $courses_per_page);
100
101 $course_filter = 'newest_first';
102 if ( ! empty($_GET['tutor_course_filter'])){
103 $course_filter = sanitize_text_field($_GET['tutor_course_filter']);
104 }
105 switch ($course_filter){
106 case 'newest_first':
107 $query->set('orderby', 'ID');
108 $query->set('order', 'desc');
109 break;
110 case 'oldest_first':
111 $query->set('orderby', 'ID');
112 $query->set('order', 'asc');
113 break;
114 case 'course_title_az':
115 $query->set('orderby', 'post_title');
116 $query->set('order', 'asc');
117 break;
118 case 'course_title_za':
119 $query->set('orderby', 'post_title');
120 $query->set('order', 'desc');
121 break;
122 }
123
124 }
125 }
126 }
127
128 /**
129 * @param $template
130 *
131 * @return bool|string
132 *
133 * Load Single Course Template
134 *
135 * @since v.1.0.0
136 * @updated v.1.3.5
137 */
138 public function load_single_course_template($template){
139 global $wp_query;
140
141 if ($wp_query->is_single && ! empty($wp_query->query_vars['post_type']) && $wp_query->query_vars['post_type'] === $this->course_post_type){
142 $student_must_login_to_view_course = tutor_utils()->get_option('student_must_login_to_view_course');
143 if ($student_must_login_to_view_course){
144 if ( ! is_user_logged_in() ) {
145 return tutor_get_template( 'login' );
146 }
147 }
148
149 wp_reset_query();
150 if (empty( $wp_query->query_vars['course_subpage'])) {
151 $template = tutor_get_template( 'single-course' );
152 if ( is_user_logged_in() ) {
153 if ( tutor_utils()->is_enrolled() ) {
154 $template = tutor_get_template( 'single-course-enrolled' );
155 }
156 }
157 }else{
158 //If Course Subpage Exists
159 if ( is_user_logged_in() ) {
160 $course_subpage = $wp_query->query_vars['course_subpage'];
161 $template = tutor_get_template_path( 'single-course-enrolled-' . $course_subpage );
162 if ( ! file_exists( $template ) ) {
163 $template = tutor_get_template( 'single-course-enrolled-subpage' );
164 }
165 }else{
166 $template = tutor_get_template('login');
167 }
168 }
169 return $template;
170 }
171 return $template;
172 }
173
174 /**
175 * @param $template
176 *
177 * @return bool|string
178 *
179 * Load lesson template
180 *
181 * @since v.1.0.0
182 */
183
184 public function load_single_lesson_template($template){
185 global $wp_query;
186
187 if ($wp_query->is_single && ! empty($wp_query->query_vars['post_type']) && $wp_query->query_vars['post_type'] === $this->lesson_post_type){
188 $page_id = get_the_ID();
189
190 do_action('tutor_lesson_load_before', $template);
191
192 setup_postdata($page_id);
193
194 if (is_user_logged_in()){
195 $is_course_enrolled = tutor_utils()->is_course_enrolled_by_lesson();
196
197 if ($is_course_enrolled) {
198 $template = tutor_get_template( 'single-lesson' );
199 }else{
200 //You need to enroll first
201 $template = tutor_get_template( 'single.lesson.required-enroll' );
202
203 //Check Lesson edit access to support page builders
204 if(current_user_can(tutor()->instructor_role) && tutils()->has_lesson_edit_access()){
205 $template = tutor_get_template( 'single-lesson' );
206 }
207 }
208 }else{
209 $template = tutor_get_template('login');
210 }
211 wp_reset_postdata();
212
213 return apply_filters('tutor_lesson_template', $template);
214 }
215 return $template;
216 }
217
218 /**
219 * @param $template
220 *
221 * @return mixed
222 *
223 * Play the video in this url.
224 */
225 public function play_private_video($template){
226 global $wp_query;
227
228 if ($wp_query->is_single && ! empty($wp_query->query_vars['lesson_video']) && $wp_query->query_vars['lesson_video'] === 'true') {
229
230 $isPublicVideo = apply_filters('tutor_video_stream_is_public', false, get_the_ID());
231 if ($isPublicVideo){
232 $video_info = tutor_utils()->get_video_info();
233 if ( $video_info ) {
234 $stream = new Video_Stream( $video_info->path );
235 $stream->start();
236 }
237 exit();
238 }
239
240 if (tutor_utils()->is_course_enrolled_by_lesson()) {
241 $video_info = tutor_utils()->get_video_info();
242 if ( $video_info ) {
243 $stream = new Video_Stream( $video_info->path );
244 $stream->start();
245 }
246 }else{
247 _e('Permission denied', 'tutor');
248 }
249 exit();
250 }
251
252 return $template;
253 }
254
255 /**
256 * @param $content
257 *
258 * @return mixed
259 *
260 * Tutor Dashboard Page, Responsible to show dashboard stuffs
261 *
262 * @since v.1.0.0
263 */
264 public function convert_static_page_to_template($content){
265 //Dashboard Page
266 $student_dashboard_page_id = (int) tutor_utils()->get_option('tutor_dashboard_page_id');
267 if ($student_dashboard_page_id === get_the_ID()){
268 $shortcode = new Shortcode();
269 return $shortcode->tutor_dashboard();
270 }
271
272 //Instructor Registration Page
273 $instructor_register_page_page_id = (int) tutor_utils()->get_option('instructor_register_page');
274 if ($instructor_register_page_page_id === get_the_ID()){
275 $shortcode = new Shortcode();
276 return $shortcode->instructor_registration_form();
277 }
278
279 $student_register_page_id = (int) tutor_utils()->get_option('student_register_page');
280 if ($student_register_page_id === get_the_ID()){
281 $shortcode = new Shortcode();
282 return $shortcode->student_registration_form();
283 }
284
285 return $content;
286 }
287
288 public function tutor_dashboard($template){
289 global $wp_query;
290
291 if ($wp_query->is_page) {
292 $student_dashboard_page_id = (int) tutor_utils()->get_option('tutor_dashboard_page_id');
293 if ($student_dashboard_page_id === get_the_ID()) {
294 /**
295 * Handle if logout URL
296 * @since v.1.1.2
297 */
298 if (tutor_utils()->array_get('tutor_dashboard_page', $wp_query->query_vars) === 'logout'){
299 $redirect = get_permalink($student_dashboard_page_id);
300 wp_logout();
301 wp_redirect($redirect);
302 die();
303 }
304
305
306 $dashboard_page = tutor_utils()->array_get('tutor_dashboard_page', $wp_query->query_vars);
307 $get_dashboard_config = tutils()->tutor_dashboard_permalinks();
308 $target_dashboard_page = tutils()->array_get($dashboard_page, $get_dashboard_config);
309
310 if (isset($target_dashboard_page['login_require']) && $target_dashboard_page['login_require'] === false){
311 $template = tutor_load_template_part( "template-part.{$dashboard_page}" );
312 }else{
313
314 /**
315 * Load view page based on dashboard Endpoint
316 */
317 if (is_user_logged_in()) {
318 $template = tutor_get_template( 'dashboard' );
319 /**
320 * Check page page permission
321 *
322 * @since v.1.3.4
323 */
324 $query_var = tutor_utils()->array_get('tutor_dashboard_page', $wp_query->query_vars);
325 $dashboard_pages = tutor_utils()->tutor_dashboard_pages();
326 $dashboard_page_item = tutor_utils()->array_get($query_var, $dashboard_pages);
327 $auth_cap = tutor_utils()->array_get('auth_cap', $dashboard_page_item);
328 if ($auth_cap && ! current_user_can($auth_cap) ){
329 wp_die(__('Permission Denied', 'tutor'));
330 }
331
332 }else{
333 $template = tutor_get_template( 'login' );
334 }
335
336 }
337
338 }
339 }
340
341 return $template;
342 }
343
344 /**
345 * @param $template
346 *
347 * @return bool|string
348 *
349 * @since v.1.0.0
350 */
351 public function load_quiz_template($template){
352 global $wp_query;
353
354 if ($wp_query->is_single && ! empty($wp_query->query_vars['post_type']) && $wp_query->query_vars['post_type'] === 'tutor_quiz'){
355 if (is_user_logged_in()){
356 $template = tutor_get_template( 'single-quiz' );
357 }else{
358 $template = tutor_get_template('login');
359 }
360 return $template;
361 }
362 return $template;
363 }
364
365 public function load_assignment_template($template){
366 global $wp_query;
367
368 if ($wp_query->is_single && ! empty($wp_query->query_vars['post_type']) && $wp_query->query_vars['post_type'] === 'tutor_assignments'){
369 if (is_user_logged_in()){
370 $template = tutor_get_template( 'single-assignment' );
371 }else{
372 $template = tutor_get_template('login');
373 }
374 return $template;
375 }
376
377 return $template;
378 }
379
380 /**
381 * @param $template
382 *
383 * @return bool|string
384 *
385 * @since v.1.0.0
386 */
387 public function student_public_profile($template){
388 global $wp_query;
389
390 if ( ! empty($wp_query->query['tutor_student_username'])){
391 $template = tutor_get_template( 'student-public-profile' );
392 }
393
394 return $template;
395 }
396
397 /**
398 * @return string
399 * Show student Profile
400 *
401 * @since v.1.0.0
402 */
403 public function student_public_profile_title(){
404 global $wp_query;
405
406 if ( ! empty($wp_query->query['tutor_student_username'])){
407 global $wpdb;
408
409 $user_name = sanitize_text_field($wp_query->query['tutor_student_username']);
410 $user = $wpdb->get_row("select display_name from {$wpdb->users} WHERE user_login = '{$user_name}' limit 1; ");
411
412 if ( ! empty($user->display_name)){
413 return sprintf("%s's Profile page ", $user->display_name );
414 }
415 }
416 return '';
417 }
418
419
420 }