Restrict user from completing the course without passing the Quiz

We have now added two filters for this : wplms_finish_course_check and wplms_unfinished_unit_quiz_message

NOTE : This tip is no longer required for WPLMS versions 1.9.4 as it is inbuilt in WP Admin – LMS – Settings section

1. Add following code in WP Admin -> Plugins -> Editor -> WPLMS Customizer -> wplms-customizer.php
or

Add this code in child theme->functions.php

add_action('init','wplms_custom_hooks');
function wplms_custom_hooks(){
add_filter('wplms_finish_course_check','custom_wplms_finish_course_check',10,2);
add_filter('wplms_unfinished_unit_quiz_message','custom_wplms_unfinished_unit_quiz_message',10,2);  
}
        // ADD custom Code in class
function custom_wplms_finish_course_check($flag,$course_curriculum){
  
if(isset($course_curriculum) && count($course_curriculum)){
  $user_id = get_current_user_id();
        foreach($course_curriculum as $id){
            if(is_numeric($id) && get_post_type($id) == 'quiz'){
                $marks=get_post_meta($id,$user_id,true);
               $passing_score = get_post_meta($id,'quiz_passing_score',true);
                if(isset($marks) && is_numeric($marks) && isset($passing_score) && is_numeric($passing_score) && $marks < $passing_score){
                    return $id;
                }
            }
        }
    }
return $flag;
}
  
function custom_wplms_unfinished_unit_quiz_message($message,$quiz_id){
if(get_post_type($quiz_id) == 'quiz'){
$user_id = get_current_user_id();
              $marks=get_post_meta($quiz_id,$user_id,true);
               $passing_score = get_post_meta($quiz_id,'quiz_passing_score',true);
              if(isset($marks) && is_numeric($marks) && isset($passing_score) && is_numeric($passing_score) && $marks < $passing_score){
    $message = 'You need to get marks more than '.$passing_score.' in quiz to finish the course, please retake the quiz :'.get_the_title($quiz_id);
              }
}
return $message;
}

You need to add a Custom field in quiz for each quiz you want to enable this feature, which is used in above code, quiz_passing_score