PluginProbe ʕ •ᴥ•ʔ
Tutor LMS – eLearning and online course solution / 4.0.2
Tutor LMS – eLearning and online course solution v4.0.2
4.0.7 4.0.6 4.0.5 4.0.4 4.0.3 4.0.2 4.0.1 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 / shared / components / quiz / attempt-details / questions-sidebar.php
tutor / templates / shared / components / quiz / attempt-details Last commit date
questions 1 month ago question-header.php 1 month ago question.php 1 month ago questions-sidebar.php 1 month ago review-answers.php 1 month ago summary.php 1 month ago
questions-sidebar.php
99 lines
1 <?php
2 /**
3 * Tutor quiz attempt details sidebar.
4 *
5 * @package Tutor\Templates
6 * @author Themeum <support@themeum.com>
7 * @link https://themeum.com
8 * @since 4.0.0
9 */
10
11 defined( 'ABSPATH' ) || exit;
12
13 use Tutor\Models\QuizModel;
14
15 if ( ! isset( $quiz_id ) ) {
16 return;
17 }
18
19 $quiz_id = (int) $quiz_id;
20
21 if ( ! $quiz_id ) {
22 return;
23 }
24
25 $question_status_map = array();
26 $default_item_status = ( isset( $attempt_data ) && is_object( $attempt_data ) ) ? 'incorrect' : '';
27 $status_priority = array(
28 'correct' => 1,
29 'incorrect' => 2,
30 'pending' => 3,
31 );
32
33 if ( isset( $attempt_data ) && is_object( $attempt_data ) && ! empty( $attempt_data->attempt_id ) ) {
34 $questions = isset( $questions ) ? $questions : QuizModel::get_quiz_answers_by_attempt_id( (int) $attempt_data->attempt_id );
35 $questions = QuizModel::filter_attempt_answers_for_details( $questions, ! empty( $is_instructor_review ) );
36
37 foreach ( $questions as $answer_row ) {
38 $question_id = (int) ( $answer_row->question_id ?? 0 );
39 if ( ! $question_id ) {
40 continue;
41 }
42
43 $answer_status = QuizModel::get_attempt_answer_status( $answer_row );
44 $item_status = 'correct' === $answer_status ? 'correct' : ( 'pending' === $answer_status ? 'pending' : 'incorrect' );
45 $current = $question_status_map[ $question_id ] ?? '';
46
47 if ( ! $current || $status_priority[ $item_status ] > $status_priority[ $current ] ) {
48 $question_status_map[ $question_id ] = $item_status;
49 }
50 }
51 } else {
52 $questions = tutor_utils()->get_questions_by_quiz( $quiz_id );
53 }
54
55 $first_question_id = is_array( $questions ) && ! empty( $questions ) ? (int) ( $questions[0]->question_id ?? 0 ) : 0;
56 $first_question_id = $first_question_id > 0 ? $first_question_id : '';
57 ?>
58
59 <div
60 class="tutor-quiz-summary-sidebar"
61 x-data="tutorQuizSummarySidebar({
62 firstQuestionId: '<?php echo esc_js( (string) $first_question_id ); ?>'
63 })"
64 >
65 <h3 class="tutor-h3 tutor-mb-10">
66 <?php esc_html_e( 'Quiz questions', 'tutor' ); ?>
67 </h3>
68
69 <div class="tutor-quiz-sidebar-questions">
70 <?php if ( is_array( $questions ) ) : ?>
71 <?php foreach ( $questions as $index => $question ) : ?>
72 <?php
73 $question_id = (int) ( $question->question_id ?? 0 );
74 $item_status_class = '';
75
76 $item_status_class = $question_status_map[ $question_id ] ?? $default_item_status;
77
78 $classes = array( 'tutor-quiz-sidebar-question-item' );
79 if ( $item_status_class ) {
80 $classes[] = $item_status_class;
81 }
82 ?>
83 <a
84 href="#question-<?php echo esc_attr( $question_id ); ?>"
85 class="<?php echo esc_attr( implode( ' ', $classes ) ); ?>"
86 data-question-id="<?php echo esc_attr( $question_id ); ?>"
87 :class="{ 'active': String(activeQuestionId) === '<?php echo esc_attr( $question_id ); ?>' }"
88 @click.prevent="setActiveQuestion('<?php echo esc_attr( $question_id ); ?>')"
89 >
90 <div class="tutor-question-number"><?php echo esc_html( (int) $index + 1 ); ?>.</div>
91 <div class="tutor-question-content">
92 <?php echo esc_html( wp_strip_all_tags( wp_unslash( (string) ( $question->question_title ?? '' ) ) ) ); ?>
93 </div>
94 </a>
95 <?php endforeach; ?>
96 <?php endif; ?>
97 </div>
98 </div>
99