Exemplo n.º 1
0
function watupro_liveresult()
{
    global $wpdb, $user_ID;
    $_watu = new WatuPRO();
    $_question = new WTPQuestion();
    // select exam
    $exam = $wpdb->get_row($wpdb->prepare("SELECT * FROM " . WATUPRO_EXAMS . " WHERE ID=%d", $_POST['quiz_id']));
    $_watu->this_quiz = $exam;
    $advanced_settings = unserialize(stripslashes($exam->advanced_settings));
    if (watupro_intel()) {
        WatuPROIQuestion::$advanced_settings = $advanced_settings;
        WTPQuestion::$advanced_settings = $advanced_settings;
    }
    $questions = watupro_unserialize_questions($_POST['watupro_questions']);
    // find current question
    $ques = null;
    foreach ($questions as $question) {
        if ($question->ID == $_POST['question_id']) {
            $ques = $question;
        }
    }
    if (!is_object($ques)) {
        die(__("Sorry, we couldn't retrieve the answer", 'watupro'));
    }
    $ansArr = is_array($_POST["answer-" . $ques->ID]) ? $_POST["answer-" . $ques->ID] : array();
    list($points, $correct) = WTPQuestion::calc_answer($ques, $ansArr, $ques->q_answers);
    list($answer_text, $current_text, $unresolved_text) = $_question->process($_watu, $_POST['question_num'], $ques->question, $ques, $ansArr, $correct, $points);
    $current_text = apply_filters('watupro_content', $current_text);
    echo $current_text;
    // now save it in the user answers details if user is logged in
    if (is_user_logged_in()) {
        $taking_id = $_watu->add_taking($exam->ID, 1);
        $answer = serialize($_POST['answer-' . $_POST['question_id']]);
        // we need to store the serialized answer here
        $_watu->store_details($exam->ID, $taking_id, $ques->ID, $answer, $points, $ques->question, $correct, $current_text);
    }
    exit;
}
Exemplo n.º 2
0
$exam = $wpdb->get_row($wpdb->prepare("SELECT * FROM " . WATUPRO_EXAMS . " WHERE id=%d", $exam_id));
if (empty($exam->is_active)) {
    printf(__('This %s is currently inactive.', 'watupro'), __('quiz', 'watupro'));
    return true;
}
// passed question IDs in the shortcode?
if (!empty($passed_question_ids)) {
    $exam->passed_question_ids = $passed_question_ids;
}
$_question->exam = $exam;
do_action('watupro_select_show_exam', $exam);
// API Call
$advanced_settings = unserialize(stripslashes($exam->advanced_settings));
if (watupro_intel()) {
    WatuPROIQuestion::$advanced_settings = $advanced_settings;
    WTPQuestion::$advanced_settings = $advanced_settings;
}
// in progress taking of this exam?
$in_progress = null;
$exam->full_time_limit = $exam->time_limit;
// store this for the verify_timer calculations
if (is_user_logged_in()) {
    $in_progress = $wpdb->get_row($wpdb->prepare("SELECT * FROM " . WATUPRO_TAKEN_EXAMS . " \n\t\tWHERE user_id=%d AND exam_id=%d AND in_progress=1 ORDER BY ID DESC LIMIT 1", $user_ID, $exam_id));
    if ($exam->time_limit) {
        $meta_start_time = get_user_meta($user_ID, "start_exam_" . $exam->ID, true);
    }
    if ($exam->time_limit > 0 and (!empty($in_progress->ID) or !empty($meta_start_time))) {
        // recalculate time limit
        $start_time = !empty($in_progress->ID) ? watupro_mktime($in_progress->start_time) : $meta_start_time;
        $limit_in_seconds = intval($exam->time_limit * 60);
        $time_elapsed = current_time('timestamp') - $start_time;