Bloquea a los alumnos del examen final durante 4 horas después de que hayan fallado.
<?php
/** * LearnDash - Filter Quiz Content * lock students out of the final exam for 4 hours after they fail * * @param $quiz_content - html page content containing the quiz to display to the user * @param $quiz_post - WP_Post Quiz object. * * @return $quiz_content replacement quiz content to display to the user */
add_filter('learndash_quiz_content', function($quiz_content = '', WP_Post $quiz_post) {
// Set this logic to only effect certain Quizzes. Leave blank for all.
$check_quiz_only = array( 107 );
// Set our threshold limit. See https://codex.WordPress.org/Easier_Expression_of_Time_Constants for handy time constants
$time_complete_threshold = 4*HOUR_IN_SECONDS;
if ( ( !empty( $quiz_post ) ) && ( ( empty( $check_quiz_only ) ) || ( in_array( $quiz_post->ID, $check_quiz_only ) === true ) ) ) {
$user_id = get_current_user_id();
$user_quiz_results = get_user_meta( $user_id, '_sfwd-quizzes', true );
if ( !empty( $user_quiz_results ) ) {
// We reverse the user quizzes since newer items are added to the bottom. $user_quiz_results = array_reverse( $user_quiz_results );
// Then we loop newest to oldest...
foreach($user_quiz_results as $user_quiz_result ) {
// ...until we find a match between the result quiz ID and the quiz post ID.
if ( $user_quiz_result['quiz'] == $quiz_post->ID ) {
// Check if the result quiz completed time is within out threshold.
if ( ( $user_quiz_result['completed'] + $time_complete_threshold ) > time() ) {
// If it is we display an alternate quiz content.
$quiz_content = '<p>Too soon. Try again in about '. human_time_diff( ($user_quiz_result['completed'] + $time_complete_threshold), time()) .'.</p>';
}
}
}
}
}
// Always return $quiz_content;
return $quiz_content; }, 10, 2);