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;
}