PluginProbe ʕ •ᴥ•ʔ
Tutor LMS – eLearning and online course solution / 3.7.0
Tutor LMS – eLearning and online course solution v3.7.0
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 / 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 1 year ago lesson_sidebar.php 11 months ago required-enroll.php 2 years ago sidebar_question_and_answer.php 3 years ago
content.php
200 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() && is_user_logged_in();
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 <?php do_action( 'tutor_lesson_before_the_content', $post, $course_id ); ?>
162 <div class="tutor-fs-6 tutor-color-secondary tutor-lesson-wrapper">
163 <?php the_content(); ?>
164 </div>
165 </div>
166 </div>
167 </div>
168 </div>
169 <?php endif; ?>
170
171 <?php if ( $has_lesson_attachment ) : ?>
172 <div id="tutor-course-spotlight-files" class="tutor-tab-item<?php echo esc_attr( ( 'files' == $page_tab || false === $has_lesson_content ) ? ' is-active' : '' ); ?>">
173 <div class="tutor-container">
174 <div class="tutor-row tutor-justify-center">
175 <div class="tutor-col-xl-8">
176 <div class="tutor-fs-5 tutor-fw-medium tutor-color-black"><?php esc_html_e( 'Exercise Files', 'tutor' ); ?></div>
177 <?php get_tutor_posts_attachments(); ?>
178 </div>
179 </div>
180 </div>
181 </div>
182 <?php endif; ?>
183
184 <?php if ( $is_comment_enabled ) : ?>
185 <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' : '' ); ?>">
186 <div class="tutor-container">
187 <div class="tutor-course-spotlight-comments">
188 <?php require __DIR__ . '/comment.php'; ?>
189 </div>
190 </div>
191 </div>
192 <?php endif; ?>
193 </div>
194 </div>
195 </div>
196
197 <?php tutor_load_template( 'single.common.footer', array( 'course_id' => $course_id ) ); ?>
198
199 <?php do_action( 'tutor_lesson/single/after/content' ); ?>
200