PluginProbe ʕ •ᴥ•ʔ
Tutor LMS – eLearning and online course solution / 1.6.8
Tutor LMS – eLearning and online course solution v1.6.8
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 5 years ago Admin.php 5 years ago Ajax.php 5 years ago Assets.php 5 years ago Course.php 5 years ago Course_Settings_Tabs.php 5 years ago Course_Widget.php 5 years ago Dashboard.php 5 years ago Email.php 5 years ago FormHandler.php 5 years ago Frontend.php 5 years ago Gutenberg.php 5 years ago Instructor.php 5 years ago Instructors_List.php 5 years ago Lesson.php 5 years ago Options.php 5 years ago Post_types.php 5 years ago Q_and_A.php 5 years ago Question_Answers_List.php 5 years ago Quiz.php 5 years ago Quiz_Attempts_List.php 5 years ago RestAPI.php 5 years ago Rewrite_Rules.php 5 years ago Shortcode.php 5 years ago Student.php 5 years ago Students_List.php 5 years ago Taxonomies.php 5 years ago Template.php 5 years ago Theme_Compatibility.php 5 years ago Tools.php 5 years ago Tutor.php 5 years ago TutorEDD.php 5 years ago Tutor_Base.php 5 years ago Tutor_List_Table.php 5 years ago Tutor_Setup.php 5 years ago Upgrader.php 5 years ago User.php 5 years ago Utils.php 5 years ago Video_Stream.php 5 years ago Withdraw.php 5 years ago Withdraw_Requests_List.php 5 years ago WooCommerce.php 5 years ago
Template.php
424 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 $is_administrator = current_user_can('administrator');
154 $is_instructor = tutor_utils()->is_instructor_of_this_course();
155 if ( tutor_utils()->is_enrolled() ) {
156 $template = tutor_get_template( 'single-course-enrolled' );
157 } else if ( $is_administrator || $is_instructor ) {
158 $template = tutor_get_template( 'single-course-instructor' );
159 }
160 }
161 }else{
162 //If Course Subpage Exists
163 if ( is_user_logged_in() ) {
164 $course_subpage = $wp_query->query_vars['course_subpage'];
165 $template = tutor_get_template_path( 'single-course-enrolled-' . $course_subpage );
166 if ( ! file_exists( $template ) ) {
167 $template = tutor_get_template( 'single-course-enrolled-subpage' );
168 }
169 }else{
170 $template = tutor_get_template('login');
171 }
172 }
173 return $template;
174 }
175 return $template;
176 }
177
178 /**
179 * @param $template
180 *
181 * @return bool|string
182 *
183 * Load lesson template
184 *
185 * @since v.1.0.0
186 */
187
188 public function load_single_lesson_template($template){
189 global $wp_query;
190
191 if ($wp_query->is_single && ! empty($wp_query->query_vars['post_type']) && $wp_query->query_vars['post_type'] === $this->lesson_post_type){
192 $page_id = get_the_ID();
193
194 do_action('tutor_lesson_load_before', $template);
195
196 setup_postdata($page_id);
197
198 if (is_user_logged_in()){
199 $is_course_enrolled = tutor_utils()->is_course_enrolled_by_lesson();
200
201 if ($is_course_enrolled) {
202 $template = tutor_get_template( 'single-lesson' );
203 }else{
204 //You need to enroll first
205 $template = tutor_get_template( 'single.lesson.required-enroll' );
206
207 //Check Lesson edit access to support page builders
208 if(current_user_can(tutor()->instructor_role) && tutils()->has_lesson_edit_access()){
209 $template = tutor_get_template( 'single-lesson' );
210 }
211 }
212 }else{
213 $template = tutor_get_template('login');
214 }
215 wp_reset_postdata();
216
217 return apply_filters('tutor_lesson_template', $template);
218 }
219 return $template;
220 }
221
222 /**
223 * @param $template
224 *
225 * @return mixed
226 *
227 * Play the video in this url.
228 */
229 public function play_private_video($template){
230 global $wp_query;
231
232 if ($wp_query->is_single && ! empty($wp_query->query_vars['lesson_video']) && $wp_query->query_vars['lesson_video'] === 'true') {
233
234 $isPublicVideo = apply_filters('tutor_video_stream_is_public', false, get_the_ID());
235 if ($isPublicVideo){
236 $video_info = tutor_utils()->get_video_info();
237 if ( $video_info ) {
238 $stream = new Video_Stream( $video_info->path );
239 $stream->start();
240 }
241 exit();
242 }
243
244 if (tutor_utils()->is_course_enrolled_by_lesson()) {
245 $video_info = tutor_utils()->get_video_info();
246 if ( $video_info ) {
247 $stream = new Video_Stream( $video_info->path );
248 $stream->start();
249 }
250 }else{
251 _e('Permission denied', 'tutor');
252 }
253 exit();
254 }
255
256 return $template;
257 }
258
259 /**
260 * @param $content
261 *
262 * @return mixed
263 *
264 * Tutor Dashboard Page, Responsible to show dashboard stuffs
265 *
266 * @since v.1.0.0
267 */
268 public function convert_static_page_to_template($content){
269 //Dashboard Page
270 $student_dashboard_page_id = (int) tutor_utils()->get_option('tutor_dashboard_page_id');
271 if ($student_dashboard_page_id === get_the_ID()){
272 $shortcode = new Shortcode();
273 return $shortcode->tutor_dashboard();
274 }
275
276 //Instructor Registration Page
277 $instructor_register_page_page_id = (int) tutor_utils()->get_option('instructor_register_page');
278 if ($instructor_register_page_page_id === get_the_ID()){
279 $shortcode = new Shortcode();
280 return $shortcode->instructor_registration_form();
281 }
282
283 $student_register_page_id = (int) tutor_utils()->get_option('student_register_page');
284 if ($student_register_page_id === get_the_ID()){
285 $shortcode = new Shortcode();
286 return $shortcode->student_registration_form();
287 }
288
289 return $content;
290 }
291
292 public function tutor_dashboard($template){
293 global $wp_query;
294
295 if ($wp_query->is_page) {
296 $student_dashboard_page_id = (int) tutor_utils()->get_option('tutor_dashboard_page_id');
297 if ($student_dashboard_page_id === get_the_ID()) {
298 /**
299 * Handle if logout URL
300 * @since v.1.1.2
301 */
302 if (tutor_utils()->array_get('tutor_dashboard_page', $wp_query->query_vars) === 'logout'){
303 $redirect = get_permalink($student_dashboard_page_id);
304 wp_logout();
305 wp_redirect($redirect);
306 die();
307 }
308
309
310 $dashboard_page = tutor_utils()->array_get('tutor_dashboard_page', $wp_query->query_vars);
311 $get_dashboard_config = tutils()->tutor_dashboard_permalinks();
312 $target_dashboard_page = tutils()->array_get($dashboard_page, $get_dashboard_config);
313
314 if (isset($target_dashboard_page['login_require']) && $target_dashboard_page['login_require'] === false){
315 $template = tutor_load_template_part( "template-part.{$dashboard_page}" );
316 }else{
317
318 /**
319 * Load view page based on dashboard Endpoint
320 */
321 if (is_user_logged_in()) {
322 $template = tutor_get_template( 'dashboard' );
323 /**
324 * Check page page permission
325 *
326 * @since v.1.3.4
327 */
328 $query_var = tutor_utils()->array_get('tutor_dashboard_page', $wp_query->query_vars);
329 $dashboard_pages = tutor_utils()->tutor_dashboard_pages();
330 $dashboard_page_item = tutor_utils()->array_get($query_var, $dashboard_pages);
331 $auth_cap = tutor_utils()->array_get('auth_cap', $dashboard_page_item);
332 if ($auth_cap && ! current_user_can($auth_cap) ){
333 wp_die(__('Permission Denied', 'tutor'));
334 }
335
336 }else{
337 $template = tutor_get_template( 'login' );
338 }
339
340 }
341
342 }
343 }
344
345 return $template;
346 }
347
348 /**
349 * @param $template
350 *
351 * @return bool|string
352 *
353 * @since v.1.0.0
354 */
355 public function load_quiz_template($template){
356 global $wp_query;
357
358 if ($wp_query->is_single && ! empty($wp_query->query_vars['post_type']) && $wp_query->query_vars['post_type'] === 'tutor_quiz'){
359 if (is_user_logged_in()){
360 $template = tutor_get_template( 'single-quiz' );
361 }else{
362 $template = tutor_get_template('login');
363 }
364 return $template;
365 }
366 return $template;
367 }
368
369 public function load_assignment_template($template){
370 global $wp_query;
371
372 if ($wp_query->is_single && ! empty($wp_query->query_vars['post_type']) && $wp_query->query_vars['post_type'] === 'tutor_assignments'){
373 if (is_user_logged_in()){
374 $template = tutor_get_template( 'single-assignment' );
375 }else{
376 $template = tutor_get_template('login');
377 }
378 return $template;
379 }
380
381 return $template;
382 }
383
384 /**
385 * @param $template
386 *
387 * @return bool|string
388 *
389 * @since v.1.0.0
390 */
391 public function student_public_profile($template){
392 global $wp_query;
393
394 if ( ! empty($wp_query->query['tutor_student_username'])){
395 $template = tutor_get_template( 'student-public-profile' );
396 }
397
398 return $template;
399 }
400
401 /**
402 * @return string
403 * Show student Profile
404 *
405 * @since v.1.0.0
406 */
407 public function student_public_profile_title(){
408 global $wp_query;
409
410 if ( ! empty($wp_query->query['tutor_student_username'])){
411 global $wpdb;
412
413 $user_name = sanitize_text_field($wp_query->query['tutor_student_username']);
414 $user = $wpdb->get_row("select display_name from {$wpdb->users} WHERE user_login = '{$user_name}' limit 1; ");
415
416 if ( ! empty($user->display_name)){
417 return sprintf("%s's Profile page ", $user->display_name );
418 }
419 }
420 return '';
421 }
422
423
424 }