• Модуль: vote
  • Путь к файлу: ~/bitrix/modules/vote/classes/general/question.php
  • Класс: CAllVoteQuestion
  • Вызов: CAllVoteQuestion::CheckFields
static function CheckFields($ACTION, &$arFields, $ID = 0)
{
	$aMsg = array();
	$ID = intval($ID);
	$ACTION = ($ACTION == "UPDATE" ? "UPDATE" : "ADD");
	$arQuestion = array();
	if ($ID > 0 && $ACTION == "UPDATE"):
		$db_res = CVoteQuestion::GetByID($ID);
		if (!($db_res && $arQuestion = $db_res->Fetch())):
			$aMsg[] = array(
				"id" => "ID",
				"text" => GetMessage("VOTE_QUESTION_NOT_FOUND"));
		endif;
	endif;

	unset($arFields["ID"]);
	if (is_set($arFields, "VOTE_ID") || $ACTION == "ADD")
	{
		$arFields["VOTE_ID"] = intval($arFields["VOTE_ID"]);
		if ($arFields["VOTE_ID"] <= 0):
			$aMsg[] = array(
				"id" => "VOTE_ID",
				"text" => GetMessage("VOTE_FORGOT_VOTE_ID"));
		endif;
	}

	if (isset($arFields["QUESTION"]) || $ACTION == "ADD")
	{
		$arFields["QUESTION"] = trim($arFields["QUESTION"]);

		global $USER;
		if (!$USER || $USER->CanDoOperation('edit_php') !== true)
		{
			$arFields["QUESTION"] = VoteInnerSanitizer::cleanText($arFields["QUESTION"]);
		}
		if ($arFields["QUESTION"] === "")
		{
			$aMsg[] = ["id" => "QUESTION", "text" => GetMessage("VOTE_FORGOT_QUESTION")];
		}
	}

	if (is_set($arFields, "IMAGE_ID") && $arFields["IMAGE_ID"]["name"] == '' && $arFields["IMAGE_ID"]["del"] == '')
	{
		unset($arFields["IMAGE_ID"]);
	}
	elseif (is_set($arFields, "IMAGE_ID"))
	{
		if ($str = CFile::CheckImageFile($arFields["IMAGE_ID"])):
			$aMsg[] = array(
				"id" => "IMAGE_ID",
				"text" => $str);
		else:
			$arFields["IMAGE_ID"]["MODULE_ID"] = "vote";
			if (!empty($arQuestion)):
				$arFields["IMAGE_ID"]["old_file"] = $arQuestion["IMAGE_ID"];
			endif;
		endif;
	}

	if (isset($arFields['ACTIVE']) || $ACTION == 'ADD') $arFields['ACTIVE'] = ($arFields['ACTIVE'] ?? 'Y') === 'N' ? 'N' : 'Y';
	if (isset($arFields['FIELD_TYPE']) || $ACTION == 'ADD') $arFields['FIELD_TYPE'] = intval($arFields['FIELD_TYPE'] ?? 0);
	unset($arFields['TIMESTAMP_X']);
	if (isset($arFields['C_SORT']) || $ACTION == 'ADD') $arFields['C_SORT'] = intval($arFields['C_SORT'] ?? 100);
	if (isset($arFields['COUNTER']) || $ACTION == 'ADD') $arFields['COUNTER'] = intval($arFields['COUNTER'] ?? 0);
	if (isset($arFields['QUESTION_TYPE']) || $ACTION == 'ADD') $arFields['QUESTION_TYPE'] = (($arFields['QUESTION_TYPE'] ?? 'text') == 'html' ? 'html' : 'text');
	if (isset($arFields['DIAGRAM']) || $ACTION == 'ADD') $arFields['DIAGRAM'] = (($arFields['DIAGRAM'] ?? 'Y') === 'N' ? 'N' : 'Y');
	if (isset($arFields['DIAGRAM_TYPE']) && (empty($arFields['DIAGRAM_TYPE']) || in_array($arFields['DIAGRAM_TYPE'], GetVoteDiagramArray()))):
		$arFields['DIAGRAM_TYPE'] = VOTE_DEFAULT_DIAGRAM_TYPE;
	endif;
	if (isset($arFields['TEMPLATE'])) $arFields['TEMPLATE'] = mb_substr(trim($arFields['TEMPLATE']), 0, 255);
	if (isset($arFields['TEMPLATE_NEW'])) $arFields['TEMPLATE_NEW'] = mb_substr(trim($arFields['TEMPLATE_NEW']), 0, 255);

	if ((isset($arFields['TEMPLATE']) || isset($arFields['TEMPLATE_NEW']))
		&& COption::GetOptionString("vote", "VOTE_COMPATIBLE_OLD_TEMPLATE", "N") == "Y")
	{
		$old_module_version = CVote::IsOldVersion();
		if ($old_module_version != "Y")
			unset($arFields["TEMPLATE"]);
		else
			unset($arFields["TEMPLATE_NEW"]);
	}

	if(!empty($aMsg))
	{
		global $APPLICATION;
		$e = new CAdminException(array_reverse($aMsg));
		$APPLICATION->ThrowException($e);
		return false;
	}
	return true;
}