PluginProbe ʕ •ᴥ•ʔ
Tutor LMS – eLearning and online course solution / 4.0.0
Tutor LMS – eLearning and online course solution v4.0.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 / learning-area / lesson / content.php
tutor / templates / learning-area / lesson Last commit date
comment-card.php 1 day ago comment-form.php 1 day ago comment-list.php 1 day ago comment-replies.php 1 day ago comments.php 1 day ago content.php 1 day ago exercise-files.php 1 day ago footer.php 1 day ago nav-item.php 1 day ago overview.php 1 day ago
content.php
129 lines
1 <?php
2 /**
3 * Tutor learning area lesson.
4 *
5 * @package Tutor\Templates
6 * @subpackage LearningArea
7 * @author Themeum <support@themeum.com>
8 * @link https://themeum.com
9 * @since 4.0.0
10 */
11
12 defined( 'ABSPATH' ) || exit;
13
14 use TUTOR\Input;
15 use TUTOR\Lesson;
16 use Tutor\Models\EnrollmentModel;
17
18 $lesson = $lesson ?? null;
19 if ( ! $lesson || ! is_a( $lesson, 'WP_Post' ) ) {
20 return;
21 }
22
23 global $tutor_course_id, $tutor_current_content_id, $tutor_completion_mode, $post;
24
25 $tabs_data = Lesson::get_nav_items( $lesson->ID );
26
27 $active_tab = Input::get( 'tab', 'overview' );
28 $valid_tabs = wp_list_pluck( $tabs_data, 'id' );
29 if ( ! in_array( $active_tab, $valid_tabs, true ) && ! empty( $tabs_data ) ) {
30 $active_tab = $tabs_data[0]['id'];
31 }
32
33 $json_data = array();
34 $json_data['post_id'] = $tutor_current_content_id;
35 $json_data['best_watch_time'] = 0;
36 $json_data['autoload_next_course_content'] = (bool) get_tutor_option( 'autoload_next_course_content' );
37
38 $best_watch_time = tutor_utils()->get_lesson_reading_info( $tutor_current_content_id, 0, 'video_best_watched_time' );
39 if ( $best_watch_time > 0 ) {
40 $json_data['best_watch_time'] = $best_watch_time;
41 }
42
43 $video_info = tutor_utils()->get_video_info();
44 $source_key = is_object( $video_info ) && 'html5' !== $video_info->source ? 'source_' . $video_info->source : null;
45 $has_source = ( is_object( $video_info ) && $video_info->source_video_id ) || ( isset( $source_key ) ? $video_info->$source_key : null );
46
47 $feature_image = get_post_meta( get_the_ID(), '_thumbnail_id', true );
48 $feature_url = $feature_image ? wp_get_attachment_url( $feature_image ) : null;
49
50 ?>
51 <div class="tutor-lesson-content">
52 <?php ob_start(); ?>
53 <div
54 x-data='tutorTabs({
55 tabs: <?php echo wp_json_encode( $tabs_data ); ?>,
56 defaultTab: "<?php echo esc_html( $active_tab ); ?>",
57 urlParams: {
58 paramName: "page_tab",
59 }
60 })'
61 class="tutor-lesson-content-tab"
62 >
63 <!-- Load Lesson Video -->
64 <?php if ( $has_source ) : ?>
65 <div class="tutor-lesson-video-wrapper tutor-border-b">
66 <?php
67 $json_data['strict_mode'] = ( 'strict' === $tutor_completion_mode );
68 $json_data['control_video_lesson_completion'] = (bool) tutor_utils()->get_option( 'control_video_lesson_completion', false );
69 $json_data['required_percentage'] = (int) tutor_utils()->get_option( 'required_percentage_to_complete_video_lesson', 80 );
70 $json_data['video_duration'] = $video_info->duration_sec ?? 0;
71 $json_data['lesson_completed'] = tutor_utils()->is_completed_lesson( $lesson->ID, get_current_user_id() ) !== false;
72 $json_data['is_enrolled'] = EnrollmentModel::is_enrolled( $tutor_course_id, get_current_user_id() ) !== false;
73 ?>
74 <input type="hidden" id="tutor_video_tracking_information" value="<?php echo esc_attr( json_encode( $json_data ) ); ?>">
75 <?php echo apply_filters( 'tutor_single_lesson_video', tutor_lesson_video( false ), $video_info, $source_key ); //phpcs:ignore ?>
76 </div>
77 <?php elseif ( $feature_url ) : ?>
78 <div class="tutor-lesson-image-wrapper">
79 <img class="tutor-lesson-feature-image" src="<?php echo esc_url( $feature_url ); ?>" alt="<?php echo esc_attr( get_the_title( $lesson->ID ) ); ?>">
80 </div>
81 <?php endif; ?>
82
83 <?php if ( count( $tabs_data ) > 1 ) : ?>
84 <div x-ref="tablist" class="tutor-tabs-nav tutor-px-6 tutor-py-5 tutor-border-b" role="tablist" aria-orientation="horizontal">
85 <template x-for="tab in tabs" :key="tab.id">
86 <button
87 type="button"
88 role="tab"
89 :class='getTabClass(tab)'
90 x-bind:aria-selected="isActive(tab.id)"
91 :disabled="tab.disabled ? true : false"
92 @click="selectTab(tab.id)"
93 >
94 <span x-data="TutorCore.icon({ name: tab.icon, width: 20, height: 20})"></span>
95 <span x-text="tab.label"></span>
96 </button>
97 </template>
98
99 <?php do_action( 'tutor_lesson_single_after_nav_items', $lesson->ID, $active_tab ); ?>
100 </div>
101 <?php endif; ?>
102
103 <?php if ( ! empty( $tabs_data ) ) : ?>
104 <div class="tutor-tabs-content">
105 <?php
106 foreach ( $tabs_data as $key => $content ) {
107 $is_pro = isset( $content['is_pro'] ) && true === $content['is_pro'];
108 tutor_load_template(
109 $content['template'],
110 array(
111 'is_active' => $content['id'] === $active_tab,
112 'post' => $post,
113 'course_id' => $tutor_course_id,
114 'lesson_id' => $lesson->ID,
115 ),
116 $is_pro
117 );
118 }
119 ?>
120 </div>
121 <?php endif; ?>
122 </div>
123 <?php
124 do_action( 'tutor_lesson/single/before/content' );
125 echo apply_filters( 'tutor_learning_area_content', ob_get_clean() ); //phpcs:ignore --already escaped
126 tutor_load_template( 'learning-area.lesson.footer' );
127 ?>
128 </div>
129