function submit_quiz() { $quiz_id = $_POST['quiz_id']; $user_id = get_current_user_id(); $access = get_user_meta($user_id, $quiz_id, true); if (!isset($access) || !is_numeric($access)) { _e('Invalid submission time.', 'vibe'); die; } $get_questions = vibe_sanitize(get_post_meta($quiz_id, 'quiz_questions' . $user_id, false)); if (!is_array($get_questions) || !is_array($get_questions['ques']) || !is_array($get_questions['marks'])) { _e('Questions not set.', 'vibe'); die; } $answers = json_decode(stripslashes($_POST['answers'])); $flag = apply_filters('bp_course_quiz_insert_query', 1, $quiz_id, $answers); if ($flag && !empty($answers)) { $values = ''; foreach ($answers as $answer) { $values .= "(" . $answer->id . ",'" . $answer->value . "'," . $user_id . ",1),"; } $finalvalues = rtrim($values, ','); global $wpdb; $wpdb->query("INSERT INTO {$wpdb->comments}(comment_post_ID,comment_content,user_id,comment_approved) VALUES {$finalvalues}"); } update_user_meta($user_id, $quiz_id, time()); update_post_meta($quiz_id, $user_id, 0); do_action('wplms_submit_quiz', $quiz_id, $user_id); $course_id = get_post_meta($quiz_id, 'vibe_quiz_course', true); if (!empty($course_id)) { // Course progressbar fix for single quiz $curriculum = bp_course_get_curriculum_units($course_id); $per = round(100 / count($curriculum), 2); $progress = bp_course_get_user_progress($user_id, $course_id); if (empty($progress)) { $progress = 0; } $new_progress = $progress + $per; if ($new_progress > 100) { $new_progress = 100; } bp_course_update_user_progress($user_id, $course_id, $new_progress); } bp_course_quiz_auto_submit($quiz_id, $user_id); die; }
function auto_progress($progress, $course_id) { $vibe_course_auto_progress = get_post_meta($course_id, 'vibe_course_auto_progress', true); if (vibe_validate($vibe_course_auto_progress)) { $course_duration_parameter = apply_filters('vibe_course_duration_parameter', 86400, $course_id); $user_id = get_current_user_id(); if (bp_course_is_member($course_id, $user_id)) { $end_time = apply_filters('bp_course_auto_progress_user_start_time', get_user_meta($user_id, $course_id, true)); if (empty($end_time)) { $end_time = time(); } } else { $start_date = get_post_meta($course_id, 'vibe_start_date', true); if (empty($start_date)) { $start_date = get_post_field('post_date', $course_id); $start_time = strtotime($start_date); } else { $start_time = strtotime($start_date); } } } else { if (is_user_logged_in()) { $user_id = get_current_user_id(); if (bp_course_is_member($course_id, $user_id)) { $progress = bp_course_get_user_progress($user_id, $course_id); if (!empty($progress)) { return $progress; } else { return 0; } } } } if (isset($end_time)) { if ($end_time < time()) { $progress = 100; } else { $elapsed = ($end_time - time()) / $course_duration_parameter; $total = get_post_meta($course_id, 'vibe_duration', true); $progress = 100 - round($elapsed / $total, 2) * 100; } } else { if (isset($start_time)) { $elapsed = (time() - $start_time) / $course_duration_parameter; $total = get_post_meta($course_id, 'vibe_duration', true); $progress = 100 - round($elapsed / $total, 2) * 100; } } if ($progress < 0) { $progress = 0; } if ($progress > 100) { $progress = 100; } return $progress; }