PluginProbe ʕ •ᴥ•ʔ
Tutor LMS – eLearning and online course solution / 3.9.4
Tutor LMS – eLearning and online course solution v3.9.4
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 / templates / single / lesson / lesson_sidebar.php
tutor / templates / single / lesson Last commit date
parts 8 months ago comment.php 3 years ago comments-loop.php 3 years ago complete_form.php 2 years ago content.php 8 months ago lesson_sidebar.php 11 months ago required-enroll.php 2 years ago sidebar_question_and_answer.php 3 years ago
lesson_sidebar.php
329 lines
1 <?php
2 /**
3 * Display Topics and Lesson lists for learn
4 *
5 * @package Tutor\Templates
6 * @subpackage Single\Lesson
7 * @author Themeum <support@themeum.com>
8 * @link https://themeum.com
9 * @since 1.0.0
10 */
11
12 use TUTOR\Input;
13 use Tutor\Models\QuizModel;
14 use TUTOR\Quiz;
15
16 if ( ! defined( 'ABSPATH' ) ) {
17 exit;
18 }
19
20 global $post;
21
22 $current_post_id = get_the_ID();
23 if ( ! empty( Input::post( 'lesson_id' ) ) ) {
24 $current_post_id = Input::post( 'lesson_id' );
25 }
26
27 $current_post = $post;
28 $_is_preview = get_post_meta( $current_post_id, '_is_preview', true );
29 $course_id = tutor_utils()->get_course_id_by_subcontent( $post->ID );
30
31 $user_id = get_current_user_id();
32 $enable_qa_for_this_course = get_post_meta( $course_id, '_tutor_enable_qa', true ) == 'yes';
33 $enable_q_and_a_on_course = tutor_utils()->get_option( 'enable_q_and_a_on_course' ) && $enable_qa_for_this_course;
34 $is_enrolled = tutor_utils()->is_enrolled( $course_id );
35 $is_instructor_of_this_course = tutor_utils()->has_user_course_content_access( $user_id, $course_id );
36 $is_user_admin = current_user_can( 'administrator' );
37 $is_public_course = \TUTOR\Course_List::is_public( $course_id );
38 ?>
39
40 <?php do_action( 'tutor_lesson/single/before/lesson_sidebar' ); ?>
41 <div class="tutor-course-single-sidebar-title tutor-d-flex tutor-justify-between">
42 <span class="tutor-fs-6 tutor-fw-medium tutor-color-secondary"><?php esc_html_e( 'Course Content', 'tutor' ); ?></span>
43 <span class="tutor-d-block tutor-d-xl-none">
44 <a href="#" class="tutor-iconic-btn" tutor-hide-course-single-sidebar>
45 <span class="tutor-icon-times" area-hidden="true"></span>
46 </a>
47 </span>
48 </div>
49
50 <?php
51 $topics = tutor_utils()->get_topics( $course_id );
52 if ( $topics->have_posts() ) {
53
54 // Loop through topics.
55 while ( $topics->have_posts() ) {
56 $topics->the_post();
57 $topic_id = get_the_ID();
58 $topic_summery = get_the_content();
59 $total_contents = tutor_utils()->count_completed_contents_by_topic( $topic_id );
60 $lessons = tutor_utils()->get_course_contents_by_topic( get_the_ID(), -1 );
61 $is_topic_active = ! empty(
62 array_filter(
63 $lessons->posts,
64 function ( $content ) use ( $current_post ) {
65 return $content->ID == $current_post->ID;
66 }
67 )
68 );
69 ?>
70 <div class="tutor-course-topic tutor-course-topic-<?php echo esc_attr( $topic_id ); ?>">
71 <div class="tutor-accordion-item-header<?php echo $is_topic_active ? ' is-active' : ''; ?>" tutor-course-single-topic-toggler>
72 <div class="tutor-row tutor-gx-1">
73 <div class="tutor-col">
74 <div class="tutor-course-topic-title">
75 <?php the_title(); ?>
76 <?php if ( true ) : ?>
77 <?php if ( trim( $topic_summery ) ) : ?>
78 <div class="tutor-course-topic-title-info tutor-ml-8">
79 <div class="tooltip-wrap">
80 <i class="tutor-course-topic-title-info-icon tutor-icon-circle-info-o"></i>
81 <span class="tooltip-txt tooltip-bottom">
82 <?php echo esc_textarea( $topic_summery ); ?>
83 </span>
84 </div>
85 </div>
86 <?php endif; ?>
87 <?php endif; ?>
88 </div>
89 </div>
90
91 <div class="tutor-col-auto tutor-align-self-center">
92 <?php if ( isset( $total_contents['contents'] ) && $total_contents['contents'] > 0 ) : ?>
93 <div class="tutor-course-topic-summary tutor-pl-8">
94 <?php echo esc_html( isset( $total_contents['completed'] ) ? $total_contents['completed'] : 0 ); ?>/<?php echo esc_html( isset( $total_contents['contents'] ) ? $total_contents['contents'] : 0 ); ?>
95 </div>
96 <?php endif; ?>
97 </div>
98 </div>
99 </div>
100
101 <div class="tutor-accordion-item-body <?php echo $is_topic_active ? '' : 'tutor-display-none'; ?>">
102 <?php
103 do_action( 'tutor/lesson_list/before/topic', $topic_id );
104
105 // Loop through lesson, quiz, assignment, zoom lesson.
106 while ( $lessons->have_posts() ) {
107 $lessons->the_post();
108
109 $show_permalink = ! $_is_preview || $is_enrolled || get_post_meta( $post->ID, '_is_preview', true ) || $is_public_course || $is_instructor_of_this_course;
110 $show_permalink = apply_filters( 'tutor_course/single/content/show_permalink', $show_permalink, get_the_ID() );
111 $lock_icon = ! $show_permalink;
112 $show_permalink = null === $show_permalink ? true : $show_permalink;
113
114 if ( 'tutor_quiz' === $post->post_type ) {
115 $quiz = $post;
116 ?>
117 <div class="tutor-course-topic-item tutor-course-topic-item-quiz<?php echo ( get_the_ID() == $current_post->ID ) ? ' is-active' : ''; ?>" data-quiz-id="<?php echo esc_attr( $quiz->ID ); ?>">
118 <a href="<?php echo $show_permalink ? esc_url( get_permalink( $quiz->ID ) ) : '#'; ?>" data-quiz-id="<?php echo esc_attr( $quiz->ID ); ?>">
119 <div class="tutor-d-flex tutor-mr-32">
120 <span class="tutor-course-topic-item-icon tutor-icon-quiz-o tutor-mr-8 tutor-mt-2" area-hidden="true"></span>
121 <span class="tutor-course-topic-item-title tutor-fs-7 tutor-fw-medium">
122 <?php echo esc_html( $quiz->post_title ); ?>
123 </span>
124 </div>
125 <div class="tutor-d-flex tutor-ml-auto tutor-flex-shrink-0">
126 <?php
127 $time_limit = (int) tutor_utils()->get_quiz_option( $quiz->ID, 'time_limit.time_value' );
128 $last_attempt = ( new QuizModel() )->get_first_or_last_attempt( $quiz->ID );
129
130 // $attempt_ended = is_object( $last_attempt ) && ( 'attempt_ended' === ( $last_attempt->attempt_status ) || $last_attempt->is_manually_reviewed ) ? true : false;
131
132 $attempt_ended = is_object( $last_attempt ) && QuizModel::ATTEMPT_STARTED !== $last_attempt->attempt_status;
133 $result_class = '';
134
135 $quiz_result = QuizModel::get_quiz_result( $quiz->ID );
136 if ( $attempt_ended && QuizModel::ATTEMPT_STARTED !== $last_attempt->attempt_status ) {
137 if ( 'fail' === $quiz_result ) {
138 $result_class = 'tutor-check-fail';
139 }
140 if ( 'pending' === $quiz_result ) {
141 $result_class = 'tutor-check-pending';
142 }
143 }
144
145 if ( $time_limit ) {
146 $time_type = tutor_utils()->get_quiz_option( $quiz->ID, 'time_limit.time_type' );
147
148 $time_multipliers = array(
149 'minutes' => MINUTE_IN_SECONDS,
150 'hours' => HOUR_IN_SECONDS,
151 'days' => DAY_IN_SECONDS,
152 'weeks' => WEEK_IN_SECONDS,
153 );
154
155 if ( isset( $time_multipliers[ $time_type ] ) ) {
156 $time_limit *= $time_multipliers[ $time_type ];
157 }
158
159 $hours = floor( $time_limit / HOUR_IN_SECONDS );
160 $minutes = floor( ( $time_limit % HOUR_IN_SECONDS ) / MINUTE_IN_SECONDS );
161 $seconds = $time_limit % MINUTE_IN_SECONDS;
162 $formatted_time = sprintf( '%02d:%02d:%02d', $hours, $minutes, $seconds );
163
164 $markup = '<span class="tutor-course-topic-item-duration tutor-fs-7 tutor-fw-medium tutor-color-muted tutor-mr-8">' . $formatted_time . '</span>';
165 echo wp_kses(
166 $markup,
167 array(
168 'span' => array( 'class' => true ),
169 )
170 );
171 }
172 ?>
173
174 <?php if ( ! $lock_icon ) : ?>
175 <input type="checkbox"
176 class="tutor-form-check-input tutor-form-check-circle <?php echo esc_attr( $result_class ); ?>"
177 disabled="disabled"
178 readonly="readonly"
179 <?php echo esc_attr( $attempt_ended ? 'checked="checked"' : '' ); ?> />
180 <?php else : ?>
181 <i class="tutor-icon-lock-line tutor-fs-7 tutor-color-muted tutor-mr-4" area-hidden="true"></i>
182 <?php endif; ?>
183 </div>
184 </a>
185 </div>
186 <?php } elseif ( 'tutor_assignments' === $post->post_type ) { ?>
187 <div class="tutor-course-topic-item tutor-course-topic-item-assignment<?php echo esc_attr( get_the_ID() == $current_post->ID ? ' is-active' : '' ); ?>">
188 <a href="<?php echo $show_permalink ? esc_url( get_permalink( $post->ID ) ) : '#'; ?>" data-assignment-id="<?php echo esc_attr( $post->ID ); ?>">
189 <div class="tutor-d-flex tutor-mr-32">
190 <span class="tutor-course-topic-item-icon tutor-icon-assignment tutor-mr-8" area-hidden="true"></span>
191 <span class="tutor-course-topic-item-title tutor-fs-7 tutor-fw-medium">
192 <?php echo esc_html( $post->post_title ); ?>
193 </span>
194 </div>
195 <div class="tutor-d-flex tutor-ml-auto tutor-flex-shrink-0">
196 <?php if ( $show_permalink ) : ?>
197 <?php do_action( 'tutor/assignment/right_icon_area', $post, $lock_icon ); ?>
198 <?php else : ?>
199 <i class="tutor-icon-lock-line tutor-fs-7 tutor-color-muted tutor-mr-4" area-hidden="true"></i>
200 <?php endif; ?>
201 </div>
202 </a>
203 </div>
204 <?php } elseif ( 'tutor_zoom_meeting' === $post->post_type ) { ?>
205 <div class="tutor-course-topic-item tutor-course-topic-item-zoom<?php echo esc_attr( ( get_the_ID() == $current_post->ID ) ? ' is-active' : '' ); ?>">
206 <a href="<?php echo $show_permalink ? esc_url( get_permalink( $post->ID ) ) : '#'; ?>">
207 <div class="tutor-d-flex tutor-mr-32">
208 <span class="tutor-course-topic-item-icon tutor-icon-brand-zoom-o tutor-mr-8 tutor-mt-2" area-hidden="true"></span>
209 <span class="tutor-course-topic-item-title tutor-fs-7 tutor-fw-medium">
210 <?php echo esc_html( $post->post_title ); ?>
211 </span>
212 </div>
213 <div class="tutor-d-flex tutor-ml-auto tutor-flex-shrink-0">
214 <?php if ( $show_permalink ) : ?>
215 <?php do_action( 'tutor/zoom/right_icon_area', $post->ID, $lock_icon ); ?>
216 <?php else : ?>
217 <i class="tutor-icon-lock-line tutor-fs-7 tutor-color-muted tutor-mr-4" area-hidden="true"></i>
218 <?php endif; ?>
219 </div>
220 </a>
221 </div>
222 <?php } elseif ( 'tutor-google-meet' === $post->post_type ) { ?>
223 <div class="tutor-course-topic-item tutor-course-topic-item-zoom<?php echo esc_attr( get_the_ID() == $current_post->ID ? ' is-active' : '' ); ?>">
224 <a href="<?php echo $show_permalink ? esc_url( get_permalink( $post->ID ) ) : '#'; ?>">
225 <div class="tutor-d-flex tutor-mr-32">
226 <span class="tutor-course-topic-item-icon tutor-icon-brand-google-meet tutor-mr-8 tutor-mt-2" area-hidden="true"></span>
227 <span class="tutor-course-topic-item-title tutor-fs-7 tutor-fw-medium">
228 <?php echo esc_html( $post->post_title ); ?>
229 </span>
230 </div>
231 <div class="tutor-d-flex tutor-ml-auto tutor-flex-shrink-0">
232 <?php if ( $show_permalink ) : ?>
233 <?php do_action( 'tutor/google_meet/right_icon_area', $post->ID, false ); ?>
234 <?php else : ?>
235 <i class="tutor-icon-lock-line tutor-fs-7 tutor-color-muted tutor-mr-4" area-hidden="true"></i>
236 <?php endif; ?>
237 </div>
238 </a>
239 </div>
240 <?php } else { ?>
241 <?php
242 $video = tutor_utils()->get_video_info();
243 $play_time = false;
244 if ( $video ) {
245 $play_time = $video->playtime;
246 }
247 $is_completed_lesson = tutor_utils()->is_completed_lesson();
248 ?>
249 <div class="tutor-course-topic-item tutor-course-topic-item-lesson<?php echo esc_attr( get_the_ID() == $current_post->ID ? ' is-active' : '' ); ?>">
250 <a href="<?php echo $show_permalink ? esc_url( get_the_permalink() ) : '#'; ?>" data-lesson-id="<?php the_ID(); ?>">
251 <div class="tutor-d-flex tutor-mr-32">
252 <?php
253 $tutor_lesson_type_icon = $play_time ? 'brand-youtube-bold' : 'document-text';
254 $markup = '<span class="tutor-course-topic-item-icon tutor-icon-' . $tutor_lesson_type_icon . ' tutor-mr-8 tutor-mt-2" area-hidden="true"></span>';
255 echo wp_kses(
256 $markup,
257 array(
258 'span' => array(
259 'class' => true,
260 'area-hidden' => true,
261 ),
262 )
263 );
264 ?>
265 <span class="tutor-course-topic-item-title tutor-fs-7 tutor-fw-medium">
266 <?php the_title(); ?>
267 </span>
268 </div>
269
270 <div class="tutor-d-flex tutor-ml-auto tutor-flex-shrink-0">
271 <?php
272 if ( $play_time ) {
273 $markup = "<span class='tutor-course-topic-item-duration tutor-fs-7 tutor-fw-medium tutor-color-muted tutor-mr-8'>" . tutor_utils()->get_optimized_duration( $play_time ) . '</span>';
274 echo wp_kses(
275 $markup,
276 array(
277 'span' => array( 'class' => true ),
278 )
279 );
280 }
281
282 $lesson_complete_icon = $is_completed_lesson ? 'checked' : '';
283
284 if ( ! $lock_icon ) {
285 $markup = "<input $lesson_complete_icon type='checkbox' class='tutor-form-check-input tutor-form-check-circle' disabled readonly />";
286 echo wp_kses(
287 $markup,
288 array(
289 'input' => array(
290 'checked' => true,
291 'class' => true,
292 'type' => true,
293 'disabled' => true,
294 'readonly' => true,
295 ),
296 )
297 );
298 } else {
299 $markup = '<i class="tutor-icon-lock-line tutor-fs-7 tutor-color-muted tutor-mr-4" area-hidden="true"></i>';
300 echo wp_kses(
301 $markup,
302 array(
303 'i' => array(
304 'class' => true,
305 'area-hidden' => true,
306 ),
307 )
308 );
309 }
310 ?>
311 </div>
312 </a>
313 </div>
314 <?php
315 }
316 }
317 $lessons->reset_postdata();
318 do_action( 'tutor/lesson_list/after/topic', $topic_id );
319 ?>
320 </div>
321 </div>
322 <?php
323 }
324 $topics->reset_postdata();
325 wp_reset_postdata();
326 }
327 ?>
328 <?php do_action( 'tutor_lesson/single/after/lesson_sidebar' ); ?>
329