コード例 #1
0
ファイル: do.test.php プロジェクト: abhinay100/forma_app
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();
    //}
}
コード例 #2
0
ファイル: lib.test.php プロジェクト: abhinay100/forma_app
 /**
  * @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;
 }