announcements
4 years ago
assignments
4 years ago
earning
4 years ago
enrolled-courses
4 years ago
instructor
4 years ago
my-quiz-attempts
4 years ago
notifications
4 years ago
question-answer
4 years ago
quiz-attempts
4 years ago
reviews
4 years ago
settings
4 years ago
withdraw-method-fields
4 years ago
announcements.php
4 years ago
assignments.php
4 years ago
create-course.php
4 years ago
dashboard.php
4 years ago
earning.php
4 years ago
enrolled-courses.php
4 years ago
index.php
4 years ago
logged-in.php
5 years ago
my-courses.php
4 years ago
my-profile.php
4 years ago
my-quiz-attempts.php
4 years ago
purchase_history.php
4 years ago
question-answer.php
4 years ago
quiz-attempts.php
4 years ago
registration.php
4 years ago
reviews.php
4 years ago
settings.php
4 years ago
wishlist.php
4 years ago
withdraw.php
4 years ago
quiz-attempts.php
123 lines
| 1 | <?php |
| 2 | /** |
| 3 | * Students Quiz Attempts Frontend |
| 4 | * |
| 5 | * @since v.1.4.0 |
| 6 | * |
| 7 | * @author Themeum |
| 8 | * @url https://themeum.com |
| 9 | * |
| 10 | * @package TutorLMS/Templates |
| 11 | * @version 1.6.4 |
| 12 | */ |
| 13 | |
| 14 | $per_page = 20; |
| 15 | $current_page = max( 1, tutils()->array_get( 'current_page', tutor_sanitize_data($_GET) ) ); |
| 16 | $offset = ( $current_page - 1 ) * $per_page; |
| 17 | ?> |
| 18 | |
| 19 | <h3><?php _e( 'Quiz Attempts', 'tutor' ); ?></h3> |
| 20 | <?php |
| 21 | $course_id = tutor_utils()->get_assigned_courses_ids_by_instructors(); |
| 22 | $quiz_attempts = tutor_utils()->get_quiz_attempts_by_course_ids( $offset, $per_page, $course_id ); |
| 23 | $quiz_attempts_count = tutor_utils()->get_total_quiz_attempts_by_course_ids( $course_id ); |
| 24 | |
| 25 | if ( $quiz_attempts_count ) { |
| 26 | ?> |
| 27 | <div class="tutor-dashboard-content tutor-quiz-attempt-history"> |
| 28 | <table class="tutor-table"> |
| 29 | <tr> |
| 30 | <th><?php _e( 'Course Info', 'tutor' ); ?></th> |
| 31 | <th><?php _e( 'Student', 'tutor' ); ?></th> |
| 32 | <th><?php _e( 'Correct Answer', 'tutor' ); ?></th> |
| 33 | <th><?php _e( 'Incorrect Answer', 'tutor' ); ?></th> |
| 34 | <th><?php _e( 'Earned Mark', 'tutor' ); ?></th> |
| 35 | <th><?php _e( 'Result', 'tutor' ); ?></th> |
| 36 | <th></th> |
| 37 | <?php do_action( 'tutor_quiz/student_attempts/table/thead/col' ); ?> |
| 38 | </tr> |
| 39 | <?php |
| 40 | foreach ( $quiz_attempts as $attempt ) { |
| 41 | $attempt_action = tutor_utils()->get_tutor_dashboard_page_permalink( 'quiz-attempts/quiz-reviews/?attempt_id=' . $attempt->attempt_id ); |
| 42 | $earned_percentage = $attempt->earned_marks > 0 ? ( number_format( ( $attempt->earned_marks * 100 ) / $attempt->total_marks ) ) : 0; |
| 43 | $passing_grade = tutor_utils()->get_quiz_option( $attempt->quiz_id, 'passing_grade', 0 ); |
| 44 | $answers = tutor_utils()->get_quiz_answers_by_attempt_id( $attempt->attempt_id ); |
| 45 | ?> |
| 46 | <tr> |
| 47 | <td> |
| 48 | <div class="course"> |
| 49 | <a href="<?php echo esc_url( get_the_permalink( $attempt->course_id ) ); ?>" target="_blank"><?php echo get_the_title( $attempt->course_id ); ?></a> |
| 50 | </div> |
| 51 | <div class="course-meta"> |
| 52 | <span><?php echo date_i18n( get_option( 'date_format' ) . ' ' . get_option( 'time_format' ), strtotime( $attempt->attempt_ended_at ) ); ?></span> |
| 53 | <span><?php _e( 'Question: ', 'tutor' ); ?><strong><?php echo esc_attr( count( $answers ) ); ?></strong></span> |
| 54 | <span><?php _e( 'Total Marks: ', 'tutor' ); ?><strong><?php echo esc_attr( $attempt->total_marks ); ?></strong></span> |
| 55 | </div> |
| 56 | </td> |
| 57 | <td> |
| 58 | <div class="student"> |
| 59 | <?php echo esc_attr( $attempt->display_name ); ?></span> |
| 60 | </div> |
| 61 | <div class="student-meta"> |
| 62 | <span><?php echo esc_attr( $attempt->user_email ); ?></span> |
| 63 | </div> |
| 64 | </td> |
| 65 | <td> |
| 66 | <?php |
| 67 | $correct = 0; |
| 68 | $incorrect = 0; |
| 69 | if ( is_array( $answers ) && count( $answers ) > 0 ) { |
| 70 | foreach ( $answers as $answer ) { |
| 71 | if ( (bool) isset( $answer->is_correct ) ? $answer->is_correct : '' ) { |
| 72 | $correct++; |
| 73 | } else { |
| 74 | if ( $answer->question_type === 'open_ended' || $answer->question_type === 'short_answer' ) { |
| 75 | } else { |
| 76 | $incorrect++; |
| 77 | } |
| 78 | } |
| 79 | } |
| 80 | } |
| 81 | echo $correct; |
| 82 | ?> |
| 83 | </td> |
| 84 | <td> |
| 85 | <?php echo $incorrect; ?> |
| 86 | </td> |
| 87 | <td> |
| 88 | <?php echo $attempt->earned_marks . ' (' . $earned_percentage . '%)'; ?> |
| 89 | </td> |
| 90 | <td> |
| 91 | <?php |
| 92 | if ( $attempt->attempt_status === 'review_required' ) { |
| 93 | echo '<span class="result-review-required">' . __( 'Under Review', 'tutor' ) . '</span>'; |
| 94 | } else { |
| 95 | echo $earned_percentage >= $passing_grade ? |
| 96 | '<span class="result-pass">' . __( 'Pass', 'tutor' ) . '</span>' : |
| 97 | '<span class="result-fail">' . __( 'Fail', 'tutor' ) . '</span>'; |
| 98 | } |
| 99 | ?> |
| 100 | </td> |
| 101 | <td><a href="<?php echo esc_url( $attempt_action ); ?>"><?php _e( 'Details', 'tutor' ); ?></a></td> |
| 102 | <?php do_action( 'tutor_quiz/student_attempts/table/tbody/col', $attempt ); ?> |
| 103 | </tr> |
| 104 | <?php |
| 105 | } |
| 106 | ?> |
| 107 | </table> |
| 108 | </div> |
| 109 | <div class="tutor-pagination"> |
| 110 | <?php |
| 111 | echo paginate_links( |
| 112 | array( |
| 113 | 'format' => '?current_page=%#%', |
| 114 | 'current' => $current_page, |
| 115 | 'total' => ceil( $quiz_attempts_count / $per_page ), |
| 116 | ) |
| 117 | ); |
| 118 | ?> |
| 119 | </div> |
| 120 | <?php } else { |
| 121 | _e( 'No quiz attempt yet.', 'tutor' ); |
| 122 | } ?> |
| 123 |