Diff: STRATO-apps/wordpress_03/app/wp-content/plugins/tutor/templates/single/course/course-topics.php
Keine Baseline-Datei – Diff nur gegen leer.
1
-
1
+
<?php
2
+
/**
3
+
* Template for displaying single course
4
+
*
5
+
* @package Tutor\Templates
6
+
* @subpackage Single\Course
7
+
* @author Themeum <support@themeum.com>
8
+
* @link https://themeum.com
9
+
* @since 1.0.0
10
+
*/
11
+
12
+
if ( ! defined( 'ABSPATH' ) ) {
13
+
exit;
14
+
}
15
+
16
+
global $is_enrolled;
17
+
18
+
$topics = apply_filters( 'tutor_get_course_topics', tutor_utils()->get_topics() );
19
+
$course_id = get_the_ID();
20
+
$index = 0;
21
+
22
+
/**
23
+
* $is_enrolled getting null for Addons plugin like Elementor addons
24
+
*
25
+
* @since 2.1.8
26
+
*/
27
+
if ( is_null( $is_enrolled ) ) {
28
+
$is_enrolled = tutor_utils()->is_enrolled( $course_id );
29
+
}
30
+
31
+
do_action( 'tutor_course/single/before/topics' );
32
+
?>
33
+
<div class="tutor-mt-40">
34
+
<?php if ( $topics->have_posts() ) : ?>
35
+
36
+
<h3 class="tutor-fs-5 tutor-fw-bold tutor-color-black tutor-mb-24 tutor-course-content-title">
37
+
<?php
38
+
echo esc_html( apply_filters( 'tutor_course_topics_title', __( 'Course Content', 'tutor' ) ) );
39
+
?>
40
+
</h3>
41
+
42
+
<div class="tutor-accordion tutor-mt-24">
43
+
<?php while ( $topics->have_posts() ) : ?>
44
+
<?php
45
+
$topics->the_post();
46
+
$topic_summery = get_the_content();
47
+
$index++;
48
+
?>
49
+
<div class="tutor-accordion-item">
50
+
<h4 class="tutor-accordion-item-header<?php echo 1 == $index ? ' is-active' : ''; ?>">
51
+
<?php the_title(); ?>
52
+
<?php if ( ! empty( $topic_summery ) ) : ?>
53
+
<div class="tooltip-wrap tooltip-icon">
54
+
<span class="tooltip-txt tooltip-right"><?php echo esc_attr( $topic_summery ); ?></span>
55
+
</div>
56
+
<?php endif; ?>
57
+
</h4>
58
+
59
+
<?php $topic_contents = tutor_utils()->get_course_contents_by_topic( get_the_ID(), -1 ); ?>
60
+
<?php if ( $topic_contents->have_posts() ) : ?>
61
+
<div class="tutor-accordion-item-body" style="<?php echo 1 != $index ? 'display: none;' : ''; ?>">
62
+
<div class="tutor-accordion-item-body-content">
63
+
<ul class="tutor-course-content-list">
64
+
<?php while ( $topic_contents->have_posts() ) : ?>
65
+
<?php
66
+
$topic_contents->the_post();
67
+
global $post;
68
+
69
+
// Get Lesson video information if any.
70
+
$video = tutor_utils()->get_video_info();
71
+
$play_time = $video ? $video->playtime : false;
72
+
$is_preview = get_post_meta( $post->ID, '_is_preview', true );
73
+
74
+
// Determine topic content icon based on lesson, video, quiz etc.
75
+
$topic_content_icon = $play_time ? 'tutor-icon-brand-youtube-bold' : 'tutor-icon-document-text';
76
+
'tutor_quiz' === $post->post_type ? $topic_content_icon = 'tutor-icon-circle-question-mark' : 0;
77
+
'tutor_assignments' === $post->post_type ? $topic_content_icon = 'tutor-icon-document-text' : 0;
78
+
'tutor_zoom_meeting' === $post->post_type ? $topic_content_icon = 'tutor-icon-brand-zoom' : 0;
79
+
'tutor-google-meet' === $post->post_type ? $topic_content_icon = 'tutor-icon-brand-google-meet' : 0;
80
+
81
+
$is_public_course = \TUTOR\Course_List::is_public( $course_id );
82
+
$is_locked = ! ( $is_enrolled || $is_preview || $is_public_course );
83
+
?>
84
+
<li class="tutor-course-content-list-item">
85
+
<div class="tutor-d-flex">
86
+
<span class="tutor-course-content-list-item-icon <?php echo esc_attr( $topic_content_icon ); ?> tutor-mr-12 tutor-mt-4"></span>
87
+
<h5 class="tutor-course-content-list-item-title">
88
+
<?php
89
+
$lesson_title = '';
90
+
$title_tag_allow = array(
91
+
'a' => array(
92
+
'href' => true,
93
+
'class' => true,
94
+
),
95
+
'span' => array( 'class' => true ),
96
+
'div' => array(
97
+
'class' => true,
98
+
'data-timer' => array(),
99
+
'data-timezone' => array(),
100
+
),
101
+
);
102
+
103
+
// Add zoom meeting countdown info.
104
+
$countdown = '';
105
+
if ( 'tutor_zoom_meeting' === $post->post_type ) {
106
+
$zoom_meeting = tutor_zoom_meeting_data( $post->ID );
107
+
$countdown = '<div class="tutor-zoom-lesson-countdown tutor-lesson-duration" data-timer="' . $zoom_meeting->countdown_date . '" data-timezone="' . $zoom_meeting->timezone . '"></div>';
108
+
}
109
+
110
+
/**
111
+
* Show clickable content if enrolled.
112
+
* Or if it is public and not paid, then show content forcefully.
113
+
*/
114
+
if ( $is_enrolled || ( get_post_meta( $course_id, '_tutor_is_public_course', true ) == 'yes' && ! tutor_utils()->is_course_purchasable( $course_id ) ) ) {
115
+
$lesson_title .= "<a href='" . get_the_permalink() . "'> " . get_the_title() . ' </a>';
116
+
117
+
if ( $countdown ) {
118
+
if ( $zoom_meeting->is_expired ) {
119
+
$lesson_title .= '<span class="tutor-zoom-label">' . __( 'Expired', 'tutor' ) . '</span>';
120
+
} elseif ( $zoom_meeting->is_started ) {
121
+
$lesson_title .= '<span class="tutor-zoom-label tutor-zoom-live-label">' . __( 'Live', 'tutor' ) . '</span>';
122
+
}
123
+
$lesson_title .= $countdown;
124
+
}
125
+
126
+
echo wp_kses(
127
+
$lesson_title,
128
+
$title_tag_allow
129
+
);
130
+
} else {
131
+
$lesson_title .= get_the_title();
132
+
echo wp_kses( apply_filters( 'tutor_course/contents/lesson/title', $lesson_title, get_the_ID() ), $title_tag_allow );
133
+
}
134
+
?>
135
+
</h5>
136
+
</div>
137
+
138
+
<div class="tutor-d-flex tutor-align-center tutor-flex-shrink-0 tutor-mt-2">
139
+
<span class="tutor-course-content-list-item-duration tutor-fs-7 tutor-color-muted">
140
+
<?php echo esc_html( $play_time ? tutor_utils()->get_optimized_duration( $play_time ) : '' ); ?>
141
+
</span>
142
+
<span class="tutor-course-content-list-item-status <?php echo $is_locked ? 'tutor-icon-lock-line' : 'tutor-icon-eye-line'; ?> tutor-color-muted tutor-ml-20" area-hidden="true"></span>
143
+
</div>
144
+
</li>
145
+
<?php endwhile; ?>
146
+
</ul>
147
+
</div>
148
+
</div>
149
+
<?php $topic_contents->reset_postdata(); ?>
150
+
<?php endif; ?>
151
+
</div>
152
+
<?php endwhile; ?>
153
+
</div>
154
+
<?php endif; ?>
155
+
</div>
156
+
157
+
<?php do_action( 'tutor_course/single/after/topics', $course_id ); ?>
158
+