modals
4 days ago
questions
4 days ago
attempt-details.php
4 days ago
attempt.php
4 days ago
content.php
4 days ago
nav-item.php
4 days ago
progress-bar.php
4 days ago
question-header.php
4 days ago
question.php
4 days ago
content.php
82 lines
| 1 | <?php |
| 2 | /** |
| 3 | * Tutor learning area quiz. |
| 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\Helpers\UrlHelper; |
| 15 | use TUTOR\Quiz; |
| 16 | use TUTOR\Models\QuizModel; |
| 17 | |
| 18 | global $tutor_current_post, $tutor_course_id; |
| 19 | |
| 20 | $quiz = $quiz ?? null; |
| 21 | if ( ! $quiz || ! is_a( $quiz, 'WP_Post' ) ) { |
| 22 | return; |
| 23 | } |
| 24 | |
| 25 | $quiz_id = $quiz->ID; |
| 26 | $total_questions = (int) tutor_utils()->total_questions_for_student_by_quiz( $quiz_id ); |
| 27 | $quiz_options = tutor_utils()->get_quiz_option( $quiz_id ); |
| 28 | $total_marks = Quiz::get_quiz_total_marks( $quiz_id ); |
| 29 | $passing_grade = (int) ( $quiz_options['passing_grade'] ?? 0 ); |
| 30 | $quiz_time = $quiz_options['time_limit'] ?? null; |
| 31 | $has_time_limit = is_array( $quiz_time ) && ! empty( $quiz_time['time_value'] ) && (int) $quiz_time['time_value'] > 0; |
| 32 | $time_units = Quiz::quiz_time_units(); |
| 33 | $quiz_item_readable = $has_time_limit ? $quiz_time['time_value'] . ' ' . $time_units[ $quiz_time['time_type'] ] : null; |
| 34 | $quiz_attempt = ( new QuizModel() )->get_quiz_attempt( $quiz_id, $user_id ?? get_current_user_id() ); |
| 35 | $earned_marks = 0; |
| 36 | |
| 37 | if ( $quiz_attempt && $total_marks > 0 ) { |
| 38 | $earned_marks = (float) $quiz_attempt->earned_marks; |
| 39 | $total = (float) $total_marks; |
| 40 | $earned_marks = number_format( ( $earned_marks / $total_marks ) * 100, 2 ); |
| 41 | } |
| 42 | $limit_attempts = (int) $quiz_options['limit_attempts_allowed'] ?? 0; |
| 43 | $allowed_attempts = $limit_attempts ? $quiz_options['attempts_allowed'] ?? '' : '1'; |
| 44 | ?> |
| 45 | <div class="tutor-quiz"> |
| 46 | <?php ob_start(); ?> |
| 47 | <div class="tutor-quiz-intro"> |
| 48 | <div class="tutor-quiz-intro-overview"> |
| 49 | <!-- Quiz Icon --> |
| 50 | <div class="tutor-quiz-intro-icon"> |
| 51 | <?php tutor_utils()->render_themed_svg( 'images/illustrations/quiz-intro.svg' ); ?> |
| 52 | </div> |
| 53 | |
| 54 | <!-- Quiz Title --> |
| 55 | <h3 class="tutor-quiz-intro-title"> |
| 56 | <?php echo esc_html( $quiz->post_title ); ?> |
| 57 | </h3> |
| 58 | |
| 59 | <?php if ( $quiz->post_content ) : ?> |
| 60 | <!-- Quiz Description --> |
| 61 | <p class="tutor-quiz-intro-description"> |
| 62 | <?php echo wp_kses_post( $quiz->post_content ); ?> |
| 63 | </p> |
| 64 | <?php endif; ?> |
| 65 | </div> |
| 66 | |
| 67 | <!-- Quiz Parameters Table --> |
| 68 | <div class="tutor-table-wrapper tutor-table-bordered tutor-table-column-borders tutor-quiz-intro-params tutor-mb-8 tutor-sm-mb-5"> |
| 69 | <?php |
| 70 | Quiz::render_quiz_summary( $total_questions, $quiz_item_readable, $total_marks, $passing_grade, $earned_marks, (int) $allowed_attempts ); |
| 71 | ?> |
| 72 | </div> |
| 73 | |
| 74 | <!-- Past Attempts Section --> |
| 75 | <?php Quiz::render_quiz_attempts( $quiz_id ); ?> |
| 76 | |
| 77 | <!-- Action Buttons --> |
| 78 | <?php Quiz::render_quiz_actions( $quiz_id ); ?> |
| 79 | </div> |
| 80 | <?php echo apply_filters( 'tutor_learning_area_content', ob_get_clean() ); //phpcs:ignore --already escaped ?> |
| 81 | </div> |
| 82 |