• Модуль: 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;
}