PluginProbe ʕ •ᴥ•ʔ
Tutor LMS – eLearning and online course solution / 2.7.3
Tutor LMS – eLearning and online course solution v2.7.3
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 / content.php
tutor / templates / single / lesson Last commit date
comment.php 3 years ago comments-loop.php 3 years ago complete_form.php 2 years ago content.php 2 years ago lesson_sidebar.php 2 years ago required-enroll.php 2 years ago sidebar_question_and_answer.php 3 years ago
content.php
202 lines
1 <?php
2 /**
3 * Display the content
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\User;
13
14 if ( ! defined( 'ABSPATH' ) ) {
15 exit;
16 }
17
18 global $post;
19 global $previous_id;
20 global $next_id;
21
22 // Get the ID of this content and the corresponding course.
23 $course_content_id = get_the_ID();
24 $course_id = tutor_utils()->get_course_id_by_subcontent( $course_content_id );
25
26 $_is_preview = get_post_meta( $course_content_id, '_is_preview', true );
27 $content_id = tutor_utils()->get_post_id( $course_content_id );
28 $contents = tutor_utils()->get_course_prev_next_contents_by_id( $content_id );
29 $previous_id = $contents->previous_id;
30 $next_id = $contents->next_id;
31
32 $prev_is_preview = get_post_meta( $previous_id, '_is_preview', true );
33 $next_is_preview = get_post_meta( $next_id, '_is_preview', true );
34 $is_enrolled = tutor_utils()->is_enrolled( $course_id );
35 $is_public = get_post_meta( $course_id, '_tutor_is_public_course', true );
36
37 $prev_is_locked = ! ( $is_enrolled || $prev_is_preview || $is_public );
38 $next_is_locked = ! ( $is_enrolled || $next_is_preview || $is_public );
39
40 $json_data = array();
41 $json_data['post_id'] = get_the_ID();
42 $json_data['best_watch_time'] = 0;
43 $json_data['autoload_next_course_content'] = (bool) get_tutor_option( 'autoload_next_course_content' );
44
45 $best_watch_time = tutor_utils()->get_lesson_reading_info( get_the_ID(), 0, 'video_best_watched_time' );
46 if ( $best_watch_time > 0 ) {
47 $json_data['best_watch_time'] = $best_watch_time;
48 }
49
50 $is_comment_enabled = tutor_utils()->get_option( 'enable_comment_for_lesson' ) && comments_open();
51
52 ?>
53
54 <?php do_action( 'tutor_lesson/single/before/content' ); ?>
55
56 <?php
57 tutor_load_template(
58 'single.common.header',
59 array(
60 'course_id' => $course_id,
61 'mark_as_complete' => true,
62 )
63 );
64 ?>
65
66 <div class="tutor-course-topic-single-body">
67 <!-- Load Lesson Video -->
68 <?php
69 $video_info = tutor_utils()->get_video_info();
70 $source_key = is_object( $video_info ) && 'html5' !== $video_info->source ? 'source_' . $video_info->source : null;
71 $has_source = ( is_object( $video_info ) && $video_info->source_video_id ) || ( isset( $source_key ) ? $video_info->$source_key : null );
72 ?>
73 <?php
74 if ( $has_source ) :
75 $completion_mode = tutor_utils()->get_option( 'course_completion_process' );
76 $json_data['strict_mode'] = ( 'strict' === $completion_mode );
77 $json_data['control_video_lesson_completion'] = (bool) tutor_utils()->get_option( 'control_video_lesson_completion', false );
78 $json_data['required_percentage'] = (int) tutor_utils()->get_option( 'required_percentage_to_complete_video_lesson', 80 );
79 $json_data['video_duration'] = $video_info->duration_sec ?? 0;
80 $json_data['lesson_completed'] = tutor_utils()->is_completed_lesson( $content_id, get_current_user_id() ) !== false;
81 $json_data['is_enrolled'] = tutor_utils()->is_enrolled( $course_id, get_current_user_id() ) !== false;
82 ?>
83 <input type="hidden" id="tutor_video_tracking_information" value="<?php echo esc_attr( json_encode( $json_data ) ); ?>">
84 <?php endif; ?>
85 <div class="tutor-video-player-wrapper">
86 <?php echo apply_filters( 'tutor_single_lesson_video', tutor_lesson_video( false ), $video_info, $source_key ); //phpcs:ignore ?>
87 </div>
88
89 <?php
90 $referer_url = wp_get_referer();
91 $referer_comment_id = explode( '#', filter_input( INPUT_SERVER, 'REQUEST_URI' ) ?? '' );
92 $url_components = parse_url( $referer_url );
93 $page_tab = \TUTOR\Input::get( 'page_tab', 'overview' );
94
95 isset( $url_components['query'] ) ? parse_str( $url_components['query'], $output ) : null;
96
97 /**
98 * If lesson has no content, lesson tab will be hidden.
99 * To enable elementor and SCORM, only admin can see lesson tab.
100 *
101 * @since 2.2.2
102 */
103 $has_lesson_content = apply_filters(
104 'tutor_has_lesson_content',
105 User::is_admin() || ! in_array( trim( get_the_content() ), array( null, '', '&nbsp;' ), true ),
106 $course_content_id
107 );
108
109 $has_lesson_attachment = count( tutor_utils()->get_attachments() ) > 0;
110 $has_lesson_comment = (int) get_comments_number( $course_content_id );
111 ?>
112
113 <style>
114 .tutor-actual-comment.viewing {
115 box-shadow: 0 0 10px #cdcfd5;
116 animation: blinkComment 1s infinite;
117 }
118 @keyframes blinkComment { 50% { box-shadow:0 0 0px #ffffff; } }
119 </style>
120
121 <div class="tutor-course-spotlight-wrapper">
122 <ul class="tutor-nav tutor-course-spotlight-nav tutor-justify-center">
123 <?php if ( $has_lesson_content && ( $has_lesson_attachment || $is_comment_enabled ) ) : ?>
124 <li class="tutor-nav-item">
125 <a href="#" class="tutor-nav-link<?php echo 'overview' == $page_tab ? ' is-active' : ''; ?>" data-tutor-nav-target="tutor-course-spotlight-overview" data-tutor-query-variable="page_tab" data-tutor-query-value="overview">
126 <span class="tutor-icon-document-text tutor-mr-8" area-hidden="true"></span>
127 <span><?php esc_html_e( 'Overview', 'tutor' ); ?></span>
128 </a>
129 </li>
130 <?php endif; ?>
131
132 <?php if ( $has_lesson_attachment && ( $has_lesson_content || $is_comment_enabled ) ) : ?>
133 <li class="tutor-nav-item">
134 <a href="#" class="tutor-nav-link<?php echo ( 'files' == $page_tab || false === $has_lesson_content ) ? ' is-active' : ''; ?>" data-tutor-nav-target="tutor-course-spotlight-files" data-tutor-query-variable="page_tab" data-tutor-query-value="files">
135 <span class="tutor-icon-paperclip tutor-mr-8" area-hidden="true"></span>
136 <span><?php esc_html_e( 'Exercise Files', 'tutor' ); ?></span>
137 </a>
138 </li>
139 <?php endif; ?>
140
141 <?php if ( $is_comment_enabled && ( $has_lesson_content || $has_lesson_attachment ) ) : ?>
142 <li class="tutor-nav-item">
143 <a href="#"
144 class="tutor-nav-link<?php echo ( 'comments' == $page_tab || ( false === $has_lesson_content && false === $has_lesson_attachment ) ) ? ' is-active' : ''; ?>"
145 data-tutor-nav-target="tutor-course-spotlight-comments" data-tutor-query-variable="page_tab"
146 data-tutor-query-value="comments">
147
148 <span class="tutor-icon-comment tutor-mr-8" area-hidden="true"></span>
149 <span><?php esc_html_e( 'Comments', 'tutor' ); ?></span>
150 </a>
151 </li>
152 <?php endif; ?>
153 </ul>
154
155 <div class="tutor-tab tutor-course-spotlight-tab">
156 <?php if ( $has_lesson_content ) : ?>
157 <div id="tutor-course-spotlight-overview" class="tutor-tab-item<?php echo 'overview' == $page_tab ? esc_attr( ' is-active' ) : esc_attr( '' ); ?>">
158 <div class="tutor-container">
159 <div class="tutor-row tutor-justify-center">
160 <div class="tutor-col-xl-8">
161 <div class="tutor-fs-5 tutor-fw-medium tutor-color-black tutor-mb-12">
162 <?php esc_html_e( 'About Lesson', 'tutor' ); ?>
163 </div>
164 <div class="tutor-fs-6 tutor-color-secondary tutor-lesson-wrapper">
165 <?php the_content(); ?>
166 </div>
167 </div>
168 </div>
169 </div>
170 </div>
171 <?php endif; ?>
172
173 <?php if ( $has_lesson_attachment ) : ?>
174 <div id="tutor-course-spotlight-files" class="tutor-tab-item<?php echo esc_attr( ( 'files' == $page_tab || false === $has_lesson_content ) ? ' is-active' : '' ); ?>">
175 <div class="tutor-container">
176 <div class="tutor-row tutor-justify-center">
177 <div class="tutor-col-xl-8">
178 <div class="tutor-fs-5 tutor-fw-medium tutor-color-black"><?php esc_html_e( 'Exercise Files', 'tutor' ); ?></div>
179 <?php get_tutor_posts_attachments(); ?>
180 </div>
181 </div>
182 </div>
183 </div>
184 <?php endif; ?>
185
186 <?php if ( $is_comment_enabled ) : ?>
187 <div id="tutor-course-spotlight-comments" class="tutor-tab-item<?php echo esc_attr( ( 'comments' == $page_tab || ( false === $has_lesson_content && false === $has_lesson_attachment ) ) ? ' is-active' : '' ); ?>">
188 <div class="tutor-container">
189 <div class="tutor-course-spotlight-comments">
190 <?php require __DIR__ . '/comment.php'; ?>
191 </div>
192 </div>
193 </div>
194 <?php endif; ?>
195 </div>
196 </div>
197 </div>
198
199 <?php tutor_load_template( 'single.common.footer', array( 'course_id' => $course_id ) ); ?>
200
201 <?php do_action( 'tutor_lesson/single/after/content' ); ?>
202