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