Diff: STRATO-apps/wordpress_03/app/wp-content/plugins/tutor/templates/single/course/course-topics.php

Keine Baseline-Datei – Diff nur gegen leer.
Zur Liste
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 +