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