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