Skip to content

Instantly share code, notes, and snippets.

@99pragya
Created April 17, 2019 10:55
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save 99pragya/ed599a4ce9d5d4b52f4e8d408ad1fa89 to your computer and use it in GitHub Desktop.
Save 99pragya/ed599a4ce9d5d4b52f4e8d408ad1fa89 to your computer and use it in GitHub Desktop.
add_action('wplms_submit_quiz',function($quiz_id,$user_id,$answers){
$course_id = get_post_meta($quiz_id,'vibe_quiz_course',true);
if(!empty($course_id)){
$marks = get_post_meta($quiz_id,$user_id,true);
$passing_marks = get_post_meta($quiz_id,'vibe_quiz_passing_score',true);
if($marks > $passing_marks)
return;
$curriculum = bp_course_get_curriculum_units($course_id);
if(!empty($curriculum)){
$last = end($curriculum);
if(is_numeric($last) && $last == $quiz_id){
$status = bp_course_get_user_course_status($user_id,$course_id);
if(isset($status) && is_numeric($status)){ // Necessary for continue course
do_action('wplms_student_course_reset',$course_id,$user_id);
if(function_exists('bp_course_update_user_course_status'))
bp_course_update_user_course_status($user_id,$course_id,0); // New function
$course_curriculum = array();
if(function_Exists('bp_course_get_curriculum'))
$course_curriculum = bp_course_get_curriculum($course_id);
foreach($course_curriculum as $c){
if(is_numeric($c)){
if(get_post_type($c) == 'quiz'){
if(function_exists('bp_course_get_quiz_questions')){
bp_course_remove_quiz_questions($c,$user_id);
}
bp_course_remove_user_quiz_status($user_id,$c);
bp_course_reset_quiz_retakes($quiz_id,$user_id);
}
if(get_post_type($c) == 'unit'){
if(function_exists('bp_course_reset_unit')){
bp_course_reset_unit($user_id,$c,$course_id);
}
}
}
}
/* Reset Badges and CErtificates on Course Reset */
$user_badges = vibe_sanitize(get_user_meta($user_id,'badges',false));
$user_certifications = vibe_sanitize(get_user_meta($user_id,'certificates',false));
if(isset($user_badges) && is_Array($user_badges) && in_array($course_id,$user_badges)){
$key=array_search($course_id,$user_badges);
unset($user_badges[$key]);
$user_badges = array_values($user_badges);
update_user_meta($user_id,'badges',$user_badges);
}
if(isset($user_certifications) && is_Array($user_certifications) && in_array($course_id,$user_certifications)){
$key=array_search($course_id,$user_certifications);
unset($user_certifications[$key]);
$user_certifications = array_values($user_certifications);
update_user_meta($user_id,'certificates',$user_certifications);
}
bp_course_update_user_progress($user_id,$course_id,0);
/*==== End Fix ======*/
do_action('wplms_course_retake',$course_id,$user_id);
echo "<script>jQuery(document).ready(function($){ $.removeCookie('course_progress$course_id', { path: '/' }); });</script>";
}
}
}
}
},10,3);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment