Beispiel #1
0
 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;
 }