PluginProbe ʕ •ᴥ•ʔ
Tutor LMS – eLearning and online course solution / 2.1.9
Tutor LMS – eLearning and online course solution v2.1.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 / templates / single / lesson / lesson_sidebar.php
tutor / templates / single / lesson Last commit date
comment.php 3 years ago comments-loop.php 3 years ago complete_form.php 3 years ago content.php 3 years ago lesson_sidebar.php 3 years ago required-enroll.php 3 years ago sidebar_question_and_answer.php 3 years ago
lesson_sidebar.php
302 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
15 if ( ! defined( 'ABSPATH' ) ) {
16 exit;
17 }
18
19 global $post;
20
21 $post_id = get_the_ID();
22 if ( ! empty( Input::post( 'lesson_id' ) ) ) {
23 $post_id = Input::post( 'lesson_id' );
24 }
25
26 $currentPost = $post;
27 $_is_preview = get_post_meta( $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 = tutor_utils()->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" area-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 ( $currentPost ) {
64 return $content->ID == $currentPost->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
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() == $currentPost->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 if ( $time_limit ) {
133 $time_type = tutor_utils()->get_quiz_option( $quiz->ID, 'time_limit.time_type' );
134 'minutes' == $time_type ? $time_limit = $time_limit * 60 : 0;
135 'hours' == $time_type ? $time_limit = $time_limit * 3660 : 0;
136 'days' == $time_type ? $time_limit = $time_limit * 86400 : 0;
137 'weeks' == $time_type ? $time_limit = $time_limit * 86400 * 7 : 0;
138
139 // To Fix: If time larger than 24 hours, the hour portion starts from 0 again. Fix later.
140 $markup = '<span class="tutor-course-topic-item-duration tutor-fs-7 tutor-fw-medium tutor-color-muted tutor-mr-8">' . tutor_utils()->course_content_time_format( gmdate( 'H:i:s', $time_limit ) ) . '</span>';
141 echo wp_kses(
142 $markup,
143 array(
144 'span' => array( 'class' => true ),
145 )
146 );
147 }
148 ?>
149
150 <?php if ( ! $lock_icon ) : ?>
151 <input type="checkbox" class="tutor-form-check-input tutor-form-check-circle" disabled="disabled" readonly="readonly" <?php echo esc_attr( $attempt_ended ? 'checked="checked"' : '' ); ?> />
152 <?php else : ?>
153 <i class="tutor-icon-lock-line tutor-fs-7 tutor-color-muted tutor-mr-4" area-hidden="true"></i>
154 <?php endif; ?>
155 </div>
156 </a>
157 </div>
158 <?php } elseif ( 'tutor_assignments' === $post->post_type ) { ?>
159 <div class="tutor-course-topic-item tutor-course-topic-item-assignment<?php echo ( get_the_ID() == $currentPost->ID ) ? ' is-active' : ''; ?>">
160 <a href="<?php echo $show_permalink ? esc_url( get_permalink( $post->ID ) ) : '#'; ?>" data-assignment-id="<?php echo esc_attr( $post->ID ); ?>">
161 <div class="tutor-d-flex tutor-mr-32">
162 <span class="tutor-course-topic-item-icon tutor-icon-assignment tutor-mr-8" area-hidden="true"></span>
163 <span class="tutor-course-topic-item-title tutor-fs-7 tutor-fw-medium">
164 <?php echo esc_html( $post->post_title ); ?>
165 </span>
166 </div>
167 <div class="tutor-d-flex tutor-ml-auto tutor-flex-shrink-0">
168 <?php if ( $show_permalink ) : ?>
169 <?php do_action( 'tutor/assignment/right_icon_area', $post, $lock_icon ); ?>
170 <?php else : ?>
171 <i class="tutor-icon-lock-line tutor-fs-7 tutor-color-muted tutor-mr-4" area-hidden="true"></i>
172 <?php endif; ?>
173 </div>
174 </a>
175 </div>
176 <?php } elseif ( 'tutor_zoom_meeting' === $post->post_type ) { ?>
177 <div class="tutor-course-topic-item tutor-course-topic-item-zoom<?php echo esc_attr( ( get_the_ID() == $currentPost->ID ) ? ' is-active' : '' ); ?>">
178 <a href="<?php echo $show_permalink ? esc_url( get_permalink( $post->ID ) ) : '#'; ?>">
179 <div class="tutor-d-flex tutor-mr-32">
180 <span class="tutor-course-topic-item-icon tutor-icon-brand-zoom-o tutor-mr-8 tutor-mt-2" area-hidden="true"></span>
181 <span class="tutor-course-topic-item-title tutor-fs-7 tutor-fw-medium">
182 <?php echo esc_html( $post->post_title ); ?>
183 </span>
184 </div>
185 <div class="tutor-d-flex tutor-ml-auto tutor-flex-shrink-0">
186 <?php if ( $show_permalink ) : ?>
187 <?php do_action( 'tutor/zoom/right_icon_area', $post->ID, $lock_icon ); ?>
188 <?php else : ?>
189 <i class="tutor-icon-lock-line tutor-fs-7 tutor-color-muted tutor-mr-4" area-hidden="true"></i>
190 <?php endif; ?>
191 </div>
192 </a>
193 </div>
194 <?php } elseif ( 'tutor-google-meet' === $post->post_type ) { ?>
195 <div class="tutor-course-topic-item tutor-course-topic-item-zoom<?php echo esc_attr( get_the_ID() == $currentPost->ID ? ' is-active' : '' ); ?>">
196 <a href="<?php echo $show_permalink ? esc_url( get_permalink( $post->ID ) ) : '#'; ?>">
197 <div class="tutor-d-flex tutor-mr-32">
198 <span class="tutor-course-topic-item-icon tutor-icon-brand-google-meet tutor-mr-8 tutor-mt-2" area-hidden="true"></span>
199 <span class="tutor-course-topic-item-title tutor-fs-7 tutor-fw-medium">
200 <?php echo esc_html( $post->post_title ); ?>
201 </span>
202 </div>
203 <div class="tutor-d-flex tutor-ml-auto tutor-flex-shrink-0">
204 <?php if ( $show_permalink ) : ?>
205 <?php do_action( 'tutor/google_meet/right_icon_area', $post->ID, false ); ?>
206 <?php else : ?>
207 <i class="tutor-icon-lock-line tutor-fs-7 tutor-color-muted tutor-mr-4" area-hidden="true"></i>
208 <?php endif; ?>
209 </div>
210 </a>
211 </div>
212 <?php } else { ?>
213
214 <?php
215 $video = tutor_utils()->get_video_info();
216 $play_time = false;
217 if ( $video ) {
218 $play_time = $video->playtime;
219 }
220 $is_completed_lesson = tutor_utils()->is_completed_lesson();
221 ?>
222 <div class="tutor-course-topic-item tutor-course-topic-item-lesson<?php echo esc_attr( get_the_ID() == $currentPost->ID ? ' is-active' : '' ); ?>">
223 <a href="<?php echo $show_permalink ? esc_url( get_the_permalink() ) : '#'; ?>" data-lesson-id="<?php the_ID(); ?>">
224 <div class="tutor-d-flex tutor-mr-32">
225 <?php
226 $tutor_lesson_type_icon = $play_time ? 'brand-youtube-bold' : 'document-text';
227 $markup = '<span class="tutor-course-topic-item-icon tutor-icon-' . $tutor_lesson_type_icon . ' tutor-mr-8 tutor-mt-2" area-hidden="true"></span>';
228 echo wp_kses(
229 $markup,
230 array(
231 'span' => array(
232 'class' => true,
233 'area-hidden' => true,
234 ),
235 )
236 );
237 ?>
238 <span class="tutor-course-topic-item-title tutor-fs-7 tutor-fw-medium">
239 <?php the_title(); ?>
240 </span>
241 </div>
242
243 <div class="tutor-d-flex tutor-ml-auto tutor-flex-shrink-0">
244 <?php
245 if ( $play_time ) {
246 $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>';
247 echo wp_kses(
248 $markup,
249 array(
250 'span' => array( 'class' => true ),
251 )
252 );
253 }
254
255 $lesson_complete_icon = $is_completed_lesson ? 'checked' : '';
256
257 if ( ! $lock_icon ) {
258 $markup = "<input $lesson_complete_icon type='checkbox' class='tutor-form-check-input tutor-form-check-circle' disabled readonly />";
259 echo wp_kses(
260 $markup,
261 array(
262 'input' => array(
263 'checked' => true,
264 'class' => true,
265 'type' => true,
266 'disabled' => true,
267 'readonly' => true,
268 ),
269 )
270 );
271 } else {
272 $markup = '<i class="tutor-icon-lock-line tutor-fs-7 tutor-color-muted tutor-mr-4" area-hidden="true"></i>';
273 echo wp_kses(
274 $markup,
275 array(
276 'i' => array(
277 'class' => true,
278 'area-hidden' => true,
279 ),
280 )
281 );
282 }
283 ?>
284 </div>
285 </a>
286 </div>
287 <?php
288 }
289 }
290 $lessons->reset_postdata();
291 do_action( 'tutor/lesson_list/after/topic', $topic_id );
292 ?>
293 </div>
294 </div>
295 <?php
296 }
297 $topics->reset_postdata();
298 wp_reset_postdata();
299 }
300 ?>
301 <?php do_action( 'tutor_lesson/single/after/lesson_sidebar' ); ?>
302