function saveManualUserReport($id_user, $id_test, $id_track) { require_once $GLOBALS['where_lms'] . '/class.module/track.test.php'; list($title, $mod_doanswer, $point_type, $point_required, $question_random_number, $show_score, $show_score_cat, $show_doanswer, $show_solution, $show_only_status, $order_type) = sql_fetch_row(sql_query("\r\n\tSELECT title, mod_doanswer, point_type, point_required, question_random_number, \r\n\t\t\tshow_score, show_score_cat, show_doanswer, \r\n\t\t\tshow_solution, show_only_status, order_type\r\n\tFROM " . $GLOBALS['prefix_lms'] . "_test \r\n\tWHERE idTest = '" . (int) $id_test . "'")); list($score, $bonus_score, $date_attempt, $date_attempt_mod, $score_status) = sql_fetch_row(sql_query("\r\n\tSELECT score, bonus_score, date_attempt, date_attempt_mod, score_status \r\n\tFROM " . $GLOBALS['prefix_lms'] . "_testtrack \r\n\tWHERE idTrack = '" . (int) $id_track . "'")); if ($order_type >= 2) { $re_visu_quest = sql_query("SELECT idQuest \r\n\t\tFROM " . $GLOBALS['prefix_lms'] . "_testtrack_quest \r\n\t\tWHERE idTrack = '" . (int) $id_track . "' "); while (list($id_q) = sql_fetch_row($re_visu_quest)) { $quest_see[] = $id_q; } $query_question = "\r\n\t\tSELECT q.idQuest, q.type_quest, t.type_file, t.type_class, q.idCategory \r\n\t\tFROM " . $GLOBALS['prefix_lms'] . "_testquest AS q JOIN " . $GLOBALS['prefix_lms'] . "_quest_type AS t \r\n\t\tWHERE q.idTest = '" . $id_test . "' AND q.type_quest = t.type_quest AND q.idQuest IN (" . implode($quest_see, ',') . ") \r\n\t\tORDER BY q.sequence"; } else { $query_question = "\r\n\t\tSELECT q.idQuest, q.type_quest, t.type_file, t.type_class, q.idCategory \r\n\t\tFROM " . $GLOBALS['prefix_lms'] . "_testquest AS q JOIN " . $GLOBALS['prefix_lms'] . "_quest_type AS t \r\n\t\tWHERE q.idTest = '" . $id_test . "' AND q.type_quest = t.type_quest \r\n\t\tORDER BY q.sequence"; } $point_do = 0; $reQuest = sql_query($query_question); while (list($id_quest, $type_quest, $type_file, $type_class, $id_cat) = sql_fetch_row($reQuest)) { // instance question class require_once $GLOBALS['where_lms'] . '/modules/question/' . $type_file; $quest_obj = eval("return new {$type_class}( {$id_quest} );"); // check score if ($type_quest != 'title' && $type_quest != 'break_page') { $quest_max_score = $quest_obj->getMaxScore(); if (isset($_POST['new_user_score'][$id_quest]) && $_POST['new_user_score'][$id_quest] != '') { if (!$quest_obj->setUserScore($id_track, $id_quest, $_POST['new_user_score'][$id_quest])) { $quest_point_do = $quest_obj->userScore($id_track); } else { $quest_point_do = $_POST['new_user_score'][$id_quest]; } } else { $quest_point_do = $quest_obj->userScore($id_track); } // end else $point_do = round($point_do + $quest_point_do, 2); $max_score = round($max_score + $quest_max_score, 2); } // end if } if ($point_type != '1') { $save_score = $point_do; } else { $save_score = round(round($point_do / $max_score, 2) * 100, 2); } //if($score_status == 'valid') { $query_scores = "\r\n\tUPDATE " . $GLOBALS['prefix_lms'] . "_testtrack\r\n\tSET score = '" . $save_score . "',\r\n\t\tbonus_score = '" . $_POST['bonus_score'] . "'\r\n\tWHERE idTest = '" . $id_test . "' AND idUser = '******'"; $re &= sql_query($query_scores); // update status in lesson if ($point_do >= $point_required) { $next_status = 'passed'; } else { $next_status = 'failed'; } $test_track = new Track_Test($id_track); $test_track->setDate(date('Y-m-d H:i:s')); $test_track->status = $score_status; $test_track->update(); //} }
/** * @param int $id_test the id of the test to manage * @param array $id_user filter for user * * @return bool true if success false otherwise */ function roundTestScore($id_test, $id_users = FALSE) { require_once $GLOBALS['where_lms'] . '/class.module/track.test.php'; $query_test = "\r\n\t\tSELECT point_required, show_only_status \r\n\t\tFROM " . $GLOBALS['prefix_lms'] . "_test \r\n\t\tWHERE idTest = '" . $id_test . "'"; $re_test = sql_query($query_test); list($point_required, $show_only_status) = sql_fetch_row($re_test); $re = true; $query_scores = "\r\n\t\tSELECT idTrack, idUser, score, score_status, bonus_score \r\n\t\tFROM " . $GLOBALS['prefix_lms'] . "_testtrack\r\n\t\tWHERE idTest = " . $id_test . ""; if ($id_users !== FALSE) { $query_scores .= " AND idUser IN ( " . implode(',', $id_users) . " ) "; } $re_scores = sql_query($query_scores); while (list($id_track, $user, $score, $score_status, $bonus_score) = sql_fetch_row($re_scores)) { $new_score = round($score + $bonus_score); if ($score_status == 'valid') { $query_scores = "\r\n\t\t\t\tUPDATE " . $GLOBALS['prefix_lms'] . "_testtrack\r\n\t\t\t\tSET bonus_score = '" . ($new_score - $score) . "'\r\n\t\t\t\tWHERE idTest = '" . $id_test . "' AND idUser = '******'"; $re &= sql_query($query_scores); // update status in lesson if ($new_score >= $point_required) { $test_track = new Track_Test($id_track); $test_track->setDate(date('Y-m-d H:i:s')); $test_track->status = 'passed'; $test_track->update(); } } if (($score_status == 'passed' || $score_status == 'not_passed') && $show_only_status == 1 && $score < $point_required && $new_score >= $point_required) { $query_scores = "\r\n\t\t\t\tUPDATE " . $GLOBALS['prefix_lms'] . "_testtrack\r\n\t\t\t\tSET bonus_store = '" . $new_score . "',\r\n\t\t\t\t\tscore_status = 'passed'\r\n\t\t\t\tWHERE idTest = '" . $id_test . "' AND idUser = '******'"; $re &= sql_query($query_scores); // update status in lesson $test_track = new Track_Test($id_track); $test_track->setDate(date('Y-m-d H:i:s')); $test_track->status = 'passed'; $test_track->update(); } } return $re; }