function CheckFields($action, &$arFields)
{
global $DB;
$this->LAST_ERROR = "";
$aMsg = array();
if((($action == "update" && array_key_exists("TYPE", $arFields)) || $action == "add") && $arFields["TYPE"] == '')
$aMsg[] = array("id"=>"TYPE", "text"=>GetMessage("LFP_CLASS_SCHEME_ERR_TYPE"));
if((($action == "update" && array_key_exists("ENTITY_TYPE", $arFields)) || $action == "add") && $arFields["ENTITY_TYPE"] == '')
$aMsg[] = array("id"=>"ENTITY_TYPE", "text"=>GetMessage("LFP_CLASS_SCHEME_ERR_ENTITY_TYPE"));
if((($action == "update" && array_key_exists("EVENT_ID", $arFields)) || $action == "add") && $arFields["EVENT_ID"] == '')
$aMsg[] = array("id"=>"EVENT_ID", "text"=>GetMessage("LFP_CLASS_SCHEME_ERR_EVENT_ID"));
if((($action == "update" && array_key_exists("NAME", $arFields)) || $action == "add") && $arFields["NAME"] == '')
$aMsg[] = array("id"=>"NAME", "text"=>GetMessage("LFP_CLASS_SCHEME_ERR_NAME"));
if($arFields["LID"] <> '')
{
$r = CLang::GetByID($arFields["LID"]);
if(!$r->Fetch())
$aMsg[] = array("id"=>"LID", "text"=>GetMessage("LFP_CLASS_SCHEME_ERR_SITE"));
}
elseif (($action == "update" && array_key_exists("LID", $arFields)) || $action == "add")
$aMsg[] = array("id"=>"LID", "text"=>GetMessage("LFP_CLASS_SCHEME_ERR_SITE2"));
if(
($action == "add" && $arFields["TYPE"] == "POST" && (!array_key_exists("HASH", $arFields) || $arFields["HASH"] == ''))
|| ($action == "update" && $arFields["TYPE"] == "POST" && array_key_exists("HASH", $arFields) && $arFields["HASH"] == '')
)
$arFields["HASH"] = md5(randString(20));
if(
($action == "add" && (!array_key_exists("ENABLE_COMMENTS", $arFields) || !in_array($arFields["ENABLE_COMMENTS"], array("Y", "N"))))
|| ($action == "update" && array_key_exists("ENABLE_COMMENTS", $arFields) && !in_array($arFields["ENABLE_COMMENTS"], array("Y", "N")))
)
$arFields["ENABLE_COMMENTS"] = "Y";
if((($action == "update" && array_key_exists("DAYS_OF_MONTH", $arFields)) || $action == "add") && $arFields["DAYS_OF_MONTH"] <> '')
{
$arDoM = explode(",", $arFields["DAYS_OF_MONTH"]);
$arFound = array();
foreach($arDoM as $strDoM)
{
if(preg_match("/^(d{1,2})$/", trim($strDoM), $arFound))
{
if(intval($arFound[1]) < 1 || intval($arFound[1]) > 31)
{
$aMsg[] = array("id"=>"DAYS_OF_MONTH", "text"=>GetMessage("LFP_CLASS_SCHEME_ERR_DOM"));
break;
}
}
elseif(preg_match("/^(d{1,2})-(d{1,2})$/", trim($strDoM), $arFound))
{
if(intval($arFound[1]) < 1 || intval($arFound[1]) > 31 || intval($arFound[2]) < 1 || intval($arFound[2]) > 31 || intval($arFound[1]) >= intval($arFound[2]))
{
$aMsg[] = array("id"=>"DAYS_OF_MONTH", "text"=>GetMessage("LFP_CLASS_SCHEME_ERR_DOM"));
break;
}
}
else
{
$aMsg[] = array("id"=>"DAYS_OF_MONTH", "text"=>GetMessage("LFP_CLASS_SCHEME_ERR_DOM2"));
break;
}
}
}
if((($action == "update" && array_key_exists("DAYS_OF_WEEK", $arFields)) || $action == "add") && $arFields["DAYS_OF_WEEK"] <> '')
{
$arDoW = explode(",", $arFields["DAYS_OF_WEEK"]);
$arFound = array();
foreach($arDoW as $strDoW)
{
if(preg_match("/^(d)$/", trim($strDoW), $arFound))
{
if(intval($arFound[1]) < 1 || intval($arFound[1]) > 7)
{
$aMsg[] = array("id"=>"DAYS_OF_WEEK", "text"=>GetMessage("LFP_CLASS_SCHEME_ERR_DOW"));
break;
}
}
else
{
$aMsg[] = array("id"=>"DAYS_OF_WEEK", "text"=>GetMessage("LFP_CLASS_SCHEME_ERR_DOW2"));
break;
}
}
}
if((($action == "update" && array_key_exists("TIMES_OF_DAY", $arFields)) || $action == "add") && $arFields["TIMES_OF_DAY"] <> '')
{
$arToD = explode(",", $arFields["TIMES_OF_DAY"]);
$arFound = array();
foreach($arToD as $strToD)
{
if(preg_match("/^(d{1,2}):(d{1,2})$/", trim($strToD), $arFound))
{
if(intval($arFound[1]) > 23 || intval($arFound[2]) > 59)
{
$aMsg[] = array("id"=>"TIMES_OF_DAY", "text"=>GetMessage("LFP_CLASS_SCHEME_ERR_TOD"));
break;
}
}
else
{
$aMsg[] = array("id"=>"TIMES_OF_DAY", "text"=>GetMessage("LFP_CLASS_SCHEME_ERR_TOD2"));
break;
}
}
}
if (!array_key_exists("AUTO", $arFields))
{
if (array_key_exists("TYPE", $arFields))
{
if (in_array($arFields["TYPE"], array("XML", "RSS")))
$arFields["AUTO"] = "Y";
else
$arFields["AUTO"] = "N";
}
}
elseif (!in_array($arFields["AUTO"], array("Y", "N")))
$arFields["AUTO"] = "N";
if (
array_key_exists("IS_HTML", $arFields)
&& !in_array($arFields["IS_HTML"], array("Y", "N"))
)
{
$arFields["IS_HTML"] = "N";
}
if (array_key_exists("URI", $arFields))
{
$arURI = parse_url($arFields["URI"]);
if (
array_key_exists("TYPE", $arFields)
&& in_array($arFields["TYPE"], array("XML", "RSS"))
)
{
if($arURI["host"] == '')
{
$aMsg[] = array(
"id" => "URI",
"text" => GetMessage("LFP_CLASS_SCHEME_ERR_URI_HOST")
);
}
else
{
$arFields["HOST"] = $arURI["host"];
}
if($arURI["port"] <> '')
{
$arFields["PORT"] = $arURI["port"];
}
if($arURI["path"] <> '')
{
$arFields["PAGE"] = $arURI["path"];
}
}
if (
array_key_exists("TYPE", $arFields)
&& $arFields["TYPE"] == "RSS"
&& $arURI["query"] <> ''
)
{
$arFields["PARAMS"] = $arURI["query"];
}
if ($arFields["TYPE"] != "RSS")
{
unset($arFields["URI"]);
}
}
elseif (array_key_exists("HOST", $arFields))
{
if (array_key_exists("TYPE", $arFields) && in_array($arFields["TYPE"], array("XML")))
{
if (mb_strpos($arFields["HOST"], "://") === false)
$arFields["HOST"] = "http://".$arFields["HOST"];
$arURI = parse_url($arFields["HOST"]);
if($arURI["host"] == '')
$aMsg[] = array("id"=>"HOST", "text"=>GetMessage("LFP_CLASS_SCHEME_ERR_URI_HOST"));
else
$arFields["HOST"] = $arURI["host"];
if($arURI["port"] <> '')
$arFields["PORT"] = $arURI["port"];
}
}
if($arFields["AUTO"]=="Y")
{
if(mb_strlen($arFields["DAYS_OF_MONTH"]) + mb_strlen($arFields["DAYS_OF_WEEK"]) <= 0)
$aMsg[] = array("id"=>"DAYS_OF_MONTH", "text"=>GetMessage("LFP_CLASS_SCHEME_ERR_DAYS_MISSING"));
if($arFields["TIMES_OF_DAY"] == '')
$aMsg[] = array("id"=>"TIMES_OF_DAY", "text"=>GetMessage("LFP_CLASS_SCHEME_ERR_TIMES_MISSING"));
if($arFields["LAST_EXECUTED"] == '')
$aMsg[] = array("id"=>"LAST_EXECUTED", "text"=>GetMessage("LFP_CLASS_SCHEME_ERR_LE_MISSING"));
elseif(is_set($arFields, "LAST_EXECUTED") && $arFields["LAST_EXECUTED"]!==false && $DB->IsDate($arFields["LAST_EXECUTED"], false, false, "FULL")!==true)
$aMsg[] = array("id"=>"LAST_EXECUTED", "text"=>GetMessage("LFP_CLASS_SCHEME_ERR_LE_WRONG"));
}
if(!empty($aMsg))
{
$e = new CAdminException($aMsg);
$GLOBALS["APPLICATION"]->ThrowException($e);
$this->LAST_ERROR = $e->GetString();
return false;
}
return true;
}