- Модуль: controller
- Путь к файлу: ~/bitrix/modules/controller/classes/general/controllertask.php
- Класс: CControllerTask
- Вызов: CControllerTask::CheckFields
static function CheckFields(&$arFields, $ID = false)
{
/** @global CMain $APPLICATION */
global $APPLICATION, $DB;
$arMsg = array();
if ($ID > 0)
{
unset($arFields["ID"]);
}
if (($ID === false || is_set($arFields, "TASK_ID")) && $arFields["TASK_ID"] == '')
{
$arMsg[] = array("id"=>"TASK_ID", "text"=> GetMessage("CTRLR_TASK_ERR_ID"));
}
elseif (is_set($arFields, "TASK_ID"))
{
$arTaskID = CControllerTask::GetTaskArray();
if (!isset($arTaskID[$arFields['TASK_ID']]))
$arMsg[] = array("id"=>"TASK_ID", "text"=> GetMessage("CTRLR_TASK_ERR_BAD_ID"));
}
if (($ID === false || is_set($arFields, "CONTROLLER_MEMBER_ID")) && intval($arFields["CONTROLLER_MEMBER_ID"]) <= 0)
{
$arMsg[] = array("id"=>"CONTROLLER_MEMBER_ID", "text"=> GetMessage("CTRLR_TASK_ERR_CLIENTID"));
}
if (isset($arFields["INIT_EXECUTE"]))
{
$arFields["INIT_CRC"] = crc32($arFields["INIT_EXECUTE"]);
}
if (!$arMsg && $ID === false)
{
$strSql = "
SELECT INIT_EXECUTE
FROM b_controller_task
WHERE CONTROLLER_MEMBER_ID='".intval($arFields["CONTROLLER_MEMBER_ID"])."'
AND TASK_ID='".$DB->ForSQL($arFields["TASK_ID"], 255)."'
AND DATE_EXECUTE IS NULL
";
$dbr = $DB->Query($strSql);
while($ar = $dbr->Fetch())
{
if ($ar["INIT_EXECUTE"] == $arFields["INIT_EXECUTE"])
{
$arMsg[] = array("id"=>"TASK_ID", "text"=> GetMessage("CTRLR_TASK_ERR_ALREADY")." [".intval($arFields["CONTROLLER_MEMBER_ID"])."].");
break;
}
}
}
$APPLICATION->ResetException();
if ($ID === false)
{
foreach (GetModuleEvents("controller", "OnBeforeTaskAdd", true) as $arEvent)
{
$bEventRes = ExecuteModuleEventEx($arEvent, array($arFields));
if ($bEventRes === false)
{
if ($err = $APPLICATION->GetException())
{
$arMsg[] = array(
"id" => "ID",
"text" => $err->GetString()." [".intval($arFields["CONTROLLER_MEMBER_ID"])."].",
);
}
else
{
$arMsg[] = array(
"id" => "ID",
"text" => "Unknown error."." [".intval($arFields["CONTROLLER_MEMBER_ID"])."].",
);
}
break;
}
}
}
if ($arMsg)
{
$e = new CAdminException($arMsg);
$APPLICATION->ThrowException($e);
return false;
}
if ($ID === false && !is_set($arFields, "DATE_CREATE"))
{
$arFields["~DATE_CREATE"] = $DB->CurrentTimeFunction();
}
if ($ID === false && !is_set($arFields, "RETRY_COUNT"))
{
$arFields["RETRY_COUNT"] = COption::GetOptionInt("controller", "task_retry_count");
}
if ($ID === false && !is_set($arFields, "RETRY_TIMEOUT"))
{
$arFields["RETRY_TIMEOUT"] = COption::GetOptionInt("controller", "task_retry_timeout");
}
return true;
}