<?php
/**
 * Displays a quiz.
 *
 * Available Variables:
 *
 * $course_id       : (int) ID of the course
 * $course      : (object) Post object of the course
 * $course_settings : (array) Settings specific to current course
 * $course_status   : Course Status
 * $has_access  : User has access to course or is enrolled.
 *
 * $courses_options : Options/Settings as configured on Course Options page
 * $lessons_options : Options/Settings as configured on Lessons Options page
 * $quizzes_options : Options/Settings as configured on Quiz Options page
 *
 * $user_id         : (object) Current User ID
 * $logged_in       : (true/false) User is logged in
 * $current_user    : (object) Currently logged in user object
 * $post            : (object) The quiz post object () (Deprecated in LD 3.1. User $quiz_post instead).
 * $quiz_post       : (object) The quiz post object ().
 * $lesson_progression_enabled  : (true/false)
 * $show_content    : (true/false) true if user is logged in and lesson progression is disabled or if previous lesson and topic is completed.
 * $attempts_left   : (true/false)
 * $attempts_count : (integer) No of attempts already made
 * $quiz_settings   : (array)
 *
 * Note:
 *
 * To get lesson/topic post object under which the quiz is added:
 * $lesson_post = !empty($quiz_settings["lesson"])? get_post($quiz_settings["lesson"]):null;
 *
 * @since 2.1.0
 *
 * @package LearnDash\Templates\Legacy\Quiz
 */

if ( ! defined( 'ABSPATH' ) ) {
	exit;
}

if ( ( ! isset( $quiz_post ) ) || ( ! is_a( $quiz_post, 'WP_Post' ) ) ) {
	return;
}

if ( ! empty( $lesson_progression_enabled ) ) {

	$last_incomplete_step = learndash_is_quiz_accessable( null, $quiz_post, true, $course_id );
	if ( 1 !== $last_incomplete_step ) {
		if ( is_a( $last_incomplete_step, 'WP_Post' ) ) {
			if ( $last_incomplete_step->post_type === learndash_get_post_type_slug( 'topic' ) ) {
				echo sprintf(
					// translators: placeholder: topic URL.
					esc_html_x( 'Please go back and complete the previous %s.', 'placeholder: topic URL', 'learndash' ),
					'<a class="learndash-link-previous-incomplete" href="' . learndash_get_step_permalink( $last_incomplete_step->ID, $course_id ) . '">' . learndash_get_custom_label_lower( 'topic' ) . '</a>'
				);
			} elseif ( $last_incomplete_step->post_type === learndash_get_post_type_slug( 'lesson' ) ) {
				echo sprintf(
					// translators: placeholder: lesson URL.
					esc_html_x( 'Please go back and complete the previous %s.', 'placeholder: lesson URL', 'learndash' ),
					'<a class="learndash-link-previous-incomplete" href="' . learndash_get_step_permalink( $last_incomplete_step->ID, $course_id ) . '">' . learndash_get_custom_label_lower( 'lesson' ) . '</a>'
				);
			} elseif ( $last_incomplete_step->post_type === learndash_get_post_type_slug( 'quiz' ) ) {
				echo sprintf(
					// translators: placeholder: quiz URL.
					esc_html_x( 'Please go back and complete the previous %s.', 'placeholder: quiz URL', 'learndash' ),
					'<a class="learndash-link-previous-incomplete" href="' . learndash_get_step_permalink( $last_incomplete_step->ID, $course_id ) . '">' . learndash_get_custom_label_lower( 'quiz' ) . '</a>'
				);
			} else {
				echo esc_html__( 'Please go back and complete the previous step.', 'learndash' );
			}
		}
	}
}

if ( $show_content ) {
	if ( ( isset( $materials ) ) && ( ! empty( $materials ) ) ) :
		?>
		<div id="learndash_quiz_materials" class="learndash_quiz_materials">
			<h4>
			<?php
			// translators: placeholder: Quiz.
			printf( esc_html_x( '%s Materials', 'placeholder: Quiz', 'learndash' ), LearnDash_Custom_Label::get_label( 'quiz' ) );
			?>
			</h4>
			<p><?php echo $materials; ?></p>
		</div>
		<?php
	endif;

	echo $content;
	if ( $attempts_left ) {
		echo $quiz_content;
	} else {
		?>
			<p id="learndash_already_taken">
			<?php
			echo sprintf(
				// translators: placeholders: quiz, attempts count.
				esc_html_x( 'You have already taken this %1$s %2$d time(s) and may not take it again.', 'placeholders: quiz, attempts count', 'learndash' ),
				learndash_get_custom_label_lower( 'quiz' ),
				$attempts_count
			);
			?>
			</p>
		<?php
	}
}
