• Модуль: vote
  • Путь к файлу: ~/bitrix/modules/vote/classes/general/vote.php
  • Класс: CAllVote
  • Вызов: CAllVote::CheckFields
static function CheckFields($ACTION, &$arFields, $ID = 0)
{
	$aMsg = array();
	$ID = intval($ID);
	$arVote = array();
	if ($ID > 0):
		$db_res = CVote::GetByID($ID);
		if ($db_res && $res = $db_res->Fetch()):
			$arVote = $res;
		endif;
	endif;

	unset($arFields["ID"]);
	if (is_set($arFields, "CHANNEL_ID") || $ACTION == "ADD")
	{
		$arFields["CHANNEL_ID"] = intval($arFields["CHANNEL_ID"]);
		if ($arFields["CHANNEL_ID"] <= 0):
			$aMsg[] = array(
				"id" => "CHANNEL_ID",
				"text" => GetMessage("VOTE_EMPTY_CHANNEL_ID"));
		else:
			$rChannel = CVoteChannel::GetList('', '', array('ID' => intval($arFields['CHANNEL_ID'])));
			if (! ($rChannel && $arChannel = $rChannel->Fetch()))
			{
				$aMsg[] = array(
					"id" => "CHANNEL_ID",
					"text" => GetMessage("VOTE_WRONG_CHANNEL_ID"));
			}
		endif;
	}

	if (is_set($arFields, "C_SORT")) $arFields["C_SORT"] = intval($arFields["C_SORT"]);
	if (is_set($arFields, "ACTIVE") || $ACTION == "ADD") $arFields["ACTIVE"] = ($arFields["ACTIVE"] == "N" ? "N" : "Y");

	unset($arFields["TIMESTAMP_X"]);
	$date_start = false;
	if (is_set($arFields, "DATE_START") || $ACTION == "ADD")
	{
		$arFields["DATE_START"] = trim($arFields["DATE_START"]);
		$date_start = MakeTimeStamp($arFields["DATE_START"]);
		if (!$date_start):
			$aMsg[] = array(
				"id" => "DATE_START",
				"text" => GetMessage("VOTE_WRONG_DATE_START"));
		endif;
	}

	if (is_set($arFields, "DATE_END") || $ACTION == "ADD")
	{
		$arFields["DATE_END"] = trim($arFields["DATE_END"]);
		if ($arFields["DATE_END"] == ''):
			if ($date_start != false):
				$date_end = $date_start + 2592000;
				$arFields["DATE_END"] = GetTime($date_end, "FULL");
			else:
				$date_end = 1924984799; // '31.12.2030 23:59:59'
				$arFields["DATE_END"] = GetTime($date_end, "FULL");
			endif;
		else:
			$date_end = MakeTimeStamp($arFields["DATE_END"]);
		endif;
		if (!$date_end):
			$aMsg[] = array(
				"id" => "DATE_END",
				"text" => GetMessage("VOTE_WRONG_DATE_END"));
		elseif ($date_start >= $date_end && !empty($arFields["DATE_START"])):
			$aMsg[] = array(
				"id" => "DATE_END",
				"text" => GetMessage("VOTE_WRONG_DATE_TILL"));
		endif;
	}
	if (empty($aMsg) && (is_set($arFields, "DATE_START") || is_set($arFields, "DATE_END") || is_set($arFields, "CHANNEL_ID") || is_set($arFields, "ACTIVE")))
	{
		$vid = 0;
		if ($ACTION == "ADD" && $arFields["ACTIVE"] == "Y")
		{
			$vid = CVote::WrongDateInterval(0, $arFields["DATE_START"], $arFields["DATE_END"], $arFields["CHANNEL_ID"]);
		}
		elseif ($ACTION != "ADD" && !(is_set($arFields, "ACTIVE") && $arFields["ACTIVE"] != "Y"))
		{
			$res = array(
				"DATE_START" => (is_set($arFields, "DATE_START") ? $arFields["DATE_START"] : false),
				"DATE_END" => (is_set($arFields, "DATE_END") ? $arFields["DATE_END"] : false),
				"CHANNEL_ID" => (is_set($arFields, "CHANNEL_ID") ? $arFields["CHANNEL_ID"] : false));
			$vid = CVote::WrongDateInterval($ID, $res["DATE_START"], $res["DATE_END"], $res["CHANNEL_ID"]);
		}
		if (intval($vid) > 0):
			$aMsg[] = array(
				"id" => "DATE_START",
				"text" => str_replace("#ID#", $vid, GetMessage("VOTE_WRONG_INTERVAL")));
		endif;
	}
	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($arVote)):
				$arFields["IMAGE_ID"]["old_file"] = $arVote["IMAGE_ID"];
			endif;
		endif;
	}

	if (is_set($arFields, "COUNTER")) $arFields["COUNTER"] = intval($arFields["COUNTER"]);
	if (is_set($arFields, "TITLE")) $arFields["TITLE"] = trim($arFields["TITLE"]);
	if (is_set($arFields, "DESCRIPTION")) $arFields["DESCRIPTION"] = trim($arFields["DESCRIPTION"]);
	if (is_set($arFields, "DESCRIPTION_TYPE") || $ACTION == "ADD") $arFields["DESCRIPTION_TYPE"] = ($arFields["DESCRIPTION_TYPE"] == "html" ? "html" : "text");

	if (is_set($arFields, "EVENT1")) $arFields["EVENT1"] = trim($arFields["EVENT1"]);
	if (is_set($arFields, "EVENT2")) $arFields["EVENT2"] = trim($arFields["EVENT2"]);
	if (is_set($arFields, "EVENT3")) $arFields["EVENT3"] = trim($arFields["EVENT3"]);
	if (is_set($arFields, "UNIQUE_TYPE")) $arFields["UNIQUE_TYPE"] = intval($arFields["UNIQUE_TYPE"]);
	if (is_set($arFields, "OPTIONS"))
	{

		$arFields["OPTIONS"] = intval($arFields["OPTIONS"]);
	}

	if (is_set($arFields, "DELAY") && array_key_exists("DELAY_TYPE", $arFields))
	{
		$arFields["DELAY"] = intval($arFields["DELAY"]);
		$type = in_array($arFields["DELAY_TYPE"], array("S", "M", "H", "D")) ? $arFields["DELAY_TYPE"] : "D";
		$typeMultiplier = array(
			"S" => 1,
			"M" => 60,
			"H" => 3600,
			"D" => 86400
		);
		$arFields["KEEP_IP_SEC"] = $arFields["DELAY"] * $typeMultiplier[$type];
	}
	else if (array_key_exists("KEEP_IP_SEC", $arFields) || $ACTION == "ADD")
	{
		$arFields["KEEP_IP_SEC"] = intval($arFields["KEEP_IP_SEC"]);
	}
	unset ($arFields["DELAY"]);
	unset ($arFields["DELAY_TYPE"]);

	if (CVote::IsOldVersion() != "Y")
	{
		unset($arFields["TEMPLATE"]);
		unset($arFields["RESULT_TEMPLATE"]);
	}

	if (is_set($arFields, "TEMPLATE")) $arFields["TEMPLATE"] = trim($arFields["TEMPLATE"]);
	if (is_set($arFields, "RESULT_TEMPLATE")) $arFields["RESULT_TEMPLATE"] = trim($arFields["RESULT_TEMPLATE"]);
	if (is_set($arFields, "NOTIFY")) $arFields["NOTIFY"] = (in_array($arFields["NOTIFY"], array("Y", "N", "I")) ? $arFields["NOTIFY"] : "N");
	if (is_set($arFields, "REQUIRED")) $arFields["REQUIRED"] = ($arFields["REQUIRED"] == "Y" ? "Y" : "N");
	if (is_set($arFields, "AUTHOR_ID")) $arFields["AUTHOR_ID"] = intval($arFields["AUTHOR_ID"]);

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