• Модуль: learning
  • Путь к файлу: ~/bitrix/modules/learning/classes/general/testresult.php
  • Класс: CTestResult
  • Вызов: CTestResult::AddResponse
static function AddResponse($TEST_RESULT_ID, $RESPONSE)
{
	global $DB;

	$TEST_RESULT_ID = intval($TEST_RESULT_ID);
	if ($TEST_RESULT_ID < 1) return false;

	$rsTestResult = CTestResult::GetList(Array(), Array("ID" => $TEST_RESULT_ID, 'CHECK_PERMISSIONS' => 'N'));

	if ($arTestResult = $rsTestResult->GetNext())
	{
		if ($arTestResult["QUESTION_TYPE"] == "T")
		{
			$arFields = Array(
				"ANSWERED" => "Y",
				"RESPONSE" => $RESPONSE,
				"POINT"=> 0,
				"CORRECT"=> "N",
			);
		}
		else
		{
			if (!is_array($RESPONSE))
				$RESPONSE = Array($RESPONSE);

			$strSql =
			"SELECT A.ID, Q.POINT ".
			"FROM b_learn_test_result TR ".
			"INNER JOIN b_learn_question Q ON TR.QUESTION_ID = Q.ID ".
			"INNER JOIN b_learn_answer A ON Q.ID = A.QUESTION_ID ".
			"WHERE TR.ID = '".$TEST_RESULT_ID."' ".
			($arTestResult["QUESTION_TYPE"] != "R" ? "AND A.CORRECT = 'Y' " : "").
			"ORDER BY A.SORT ASC, A.ID ASC";

			if (!$res = $DB->Query($strSql, false, "File: ".__FILE__."
Line: ".__LINE__)) return false; $arAnswer = Array(); while ($arRes = $res->Fetch()) { $arAnswer[] = $arRes["ID"]; $str_POINT = $arRes["POINT"]; } if ($arTestResult["QUESTION_TYPE"] == "R") { if ($arAnswer != $RESPONSE) $str_POINT = "0"; } else { $t1 = array_diff($arAnswer,$RESPONSE); $t2 = array_diff($RESPONSE,$arAnswer); if ($t1!=$t2 || $t2 != Array()) $str_POINT = "0"; } //echo "!".$str_POINT."!"; $arFields = Array( "ANSWERED" => "Y", "RESPONSE" => $RESPONSE, "POINT"=> $str_POINT, "CORRECT"=> ($str_POINT == "0" ? "N" : "Y"), ); } $tr = new CTestResult; if (!$res = $tr->Update($TEST_RESULT_ID, $arFields)) return false; return $arFields; } else { return false; } }