• Модуль: learning
  • Путь к файлу: ~/bitrix/modules/learning/classes/general/test.php
  • Класс: CAllTest
  • Вызов: CAllTest::CheckFields
public function CheckFields(&$arFields, $ID = false)
{
	global $DB;
	$arMsg = array();

	if ( (is_set($arFields, "NAME") || $ID === false) && $arFields["NAME"] == '')
	{
		$arMsg[] = array("id"=>"NAME", "text"=> GetMessage("LEARNING_BAD_NAME"));
	}

	if ($ID===false && !is_set($arFields, "COURSE_ID"))
		$arMsg[] = array("id"=>"COURSE_ID", "text"=> GetMessage("LEARNING_BAD_COURSE_ID"));

	if (is_set($arFields, "COURSE_ID"))
	{
		$r = CCourse::GetByID($arFields["COURSE_ID"]);
		if(!$r->Fetch())
			$arMsg[] = array("id"=>"COURSE_ID", "text"=> GetMessage("LEARNING_BAD_COURSE_ID_EX"));
	}

	if ( $arFields["APPROVED"] == "Y" &&
		is_set($arFields, "COMPLETED_SCORE") &&
		(intval($arFields["COMPLETED_SCORE"]) <= 0 || intval($arFields["COMPLETED_SCORE"]) > 100)
	)
		$arMsg[] = array("id"=>"COMPLETED_SCORE", "text"=> GetMessage("LEARNING_BAD_COMPLETED_SCORE"));

	if (is_set($arFields, "PREVIOUS_TEST_ID") && intval($arFields["PREVIOUS_TEST_ID"]) != 0)
	{
		$r = CTest::GetByID($arFields["PREVIOUS_TEST_ID"]);
		if(!$r->Fetch())
			$arMsg[] = array("id"=>"PREVIOUS_TEST_ID", "text"=> GetMessage("LEARNING_BAD_PREVIOUS_TEST"));
	}

	if ( is_set($arFields, "PREVIOUS_TEST_SCORE") &&
		(intval($arFields["PREVIOUS_TEST_SCORE"]) <= 0 || intval($arFields["PREVIOUS_TEST_SCORE"]) > 100) &&
		intval($arFields["PREVIOUS_TEST_ID"]) != 0
	)
		$arMsg[] = array("id"=>"PREVIOUS_TEST_SCORE", "text"=> GetMessage("LEARNING_BAD_COMPLETED_SCORE"));

	if(!empty($arMsg))
	{
		$e = new CAdminException($arMsg);
		$GLOBALS["APPLICATION"]->ThrowException($e);
		return false;
	}

	//Defaults
	if (is_set($arFields, "QUESTIONS_FROM") && !in_array($arFields["QUESTIONS_FROM"], array("A", "C", "L", "H", "S", 'R')))
		$arFields["QUESTIONS_FROM"] = "A";

	if (is_set($arFields, "QUESTIONS_AMOUNT") && intval($arFields["QUESTIONS_AMOUNT"]) <= 0)
		$arFields["QUESTIONS_AMOUNT"] = "0";

	if (is_set($arFields, "QUESTIONS_FROM_ID") && intval($arFields["QUESTIONS_FROM_ID"]) <= 0)
		$arFields["QUESTIONS_FROM_ID"] = "0";

	if (is_set($arFields, "ACTIVE") && $arFields["ACTIVE"] != "Y")
		$arFields["ACTIVE"] = "N";

	if (is_set($arFields, "APPROVED") && $arFields["APPROVED"] != "Y")
		$arFields["APPROVED"] = "N";

	if($arFields["APPROVED"] == "N")
		$arFields["COMPLETED_SCORE"] = "";

	if (is_set($arFields, "INCLUDE_SELF_TEST") && $arFields["INCLUDE_SELF_TEST"] != "Y")
		$arFields["INCLUDE_SELF_TEST"] = "N";

	if (is_set($arFields, "RANDOM_QUESTIONS") && $arFields["RANDOM_QUESTIONS"] != "Y")
		$arFields["RANDOM_QUESTIONS"] = "N";

	if (is_set($arFields, "RANDOM_ANSWERS") && $arFields["RANDOM_ANSWERS"] != "Y")
		$arFields["RANDOM_ANSWERS"] = "N";

	if (is_set($arFields, "DESCRIPTION_TYPE") && $arFields["DESCRIPTION_TYPE"] != "html")
		$arFields["DESCRIPTION_TYPE"] = "text";

	if (is_set($arFields, "PASSAGE_TYPE") && !in_array($arFields["PASSAGE_TYPE"], Array("0", "1", "2")))
		$arFields["PASSAGE_TYPE"] = "0";

	if (is_set($arFields, "INCORRECT_CONTROL") && $arFields["INCORRECT_CONTROL"] != "Y")
		$arFields["INCORRECT_CONTROL"] = "N";

	if (is_set($arFields, "SHOW_ERRORS") && $arFields["SHOW_ERRORS"] != "Y")
	{
		$arFields["SHOW_ERRORS"] = "N";
		$arFields["NEXT_QUESTION_ON_ERROR"] = "Y";
	}

	if (is_set($arFields, "NEXT_QUESTION_ON_ERROR") && $arFields["NEXT_QUESTION_ON_ERROR"] != "Y")
		$arFields["NEXT_QUESTION_ON_ERROR"] = "N";

	return true;
}