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