• Модуль: subscribe
  • Путь к файлу: ~/bitrix/modules/subscribe/classes/general/rubric.php
  • Класс: CRubric
  • Вызов: CRubric::CheckFields
function CheckFields($arFields)
{
	global $DB;
	$this->LAST_ERROR = "";
	$aMsg = array();

	if($arFields["NAME"] == '')
		$aMsg[] = array("id"=>"NAME", "text"=>GetMessage("class_rub_err_name"));
	if($arFields["LID"] <> '')
	{
		$r = CLang::GetByID($arFields["LID"]);
		if(!$r->Fetch())
			$aMsg[] = array("id"=>"LID", "text"=>GetMessage("class_rub_err_lang"));
	}
	else
		$aMsg[] = array("id"=>"LID", "text"=>GetMessage("class_rub_err_lang2"));
	if($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("class_rub_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("class_rub_err_dom"));
					break;
				}
			}
			else
			{
				$aMsg[] = array("id"=>"DAYS_OF_MONTH", "text"=>GetMessage("class_rub_err_dom2"));
				break;
			}
		}
	}
	if($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("class_rub_err_dow"));
					break;
				}
			}
			else
			{
				$aMsg[] = array("id"=>"DAYS_OF_WEEK", "text"=>GetMessage("class_rub_err_dow2"));
				break;
			}
		}
	}
	if($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("class_rub_err_tod"));
					break;
				}
			}
			else
			{
				$aMsg[] = array("id"=>"TIMES_OF_DAY", "text"=>GetMessage("class_rub_err_tod2"));
				break;
			}
		}
	}
	if($arFields["TEMPLATE"] <> '' && !CPostingTemplate::IsExists($arFields["TEMPLATE"]))
		$aMsg[] = array("id"=>"TEMPLATE", "text"=>GetMessage("class_rub_err_wrong_templ"));
	if($arFields["AUTO"]=="Y")
	{
		if((mb_strlen($arFields["FROM_FIELD"]) < 3) || !check_email($arFields["FROM_FIELD"]))
			$aMsg[] = array("id"=>"FROM_FIELD", "text"=>GetMessage("class_rub_err_email"));
		if(mb_strlen($arFields["DAYS_OF_MONTH"]) + mb_strlen($arFields["DAYS_OF_WEEK"]) <= 0)
			$aMsg[] = array("id"=>"DAYS_OF_MONTH", "text"=>GetMessage("class_rub_err_days_missing"));
		if($arFields["TIMES_OF_DAY"] == '')
			$aMsg[] = array("id"=>"TIMES_OF_DAY", "text"=>GetMessage("class_rub_err_times_missing"));
		if($arFields["TEMPLATE"] == '')
			$aMsg[] = array("id"=>"TEMPLATE", "text"=>GetMessage("class_rub_err_templ_missing"));
		if(is_set($arFields, "FROM_FIELD") && $arFields["FROM_FIELD"] == '')
			$aMsg[] = array("id"=>"FROM_FIELD", "text"=>GetMessage("class_rub_err_from"));
		if($arFields["LAST_EXECUTED"] == '')
			$aMsg[] = array("id"=>"LAST_EXECUTED", "text"=>GetMessage("class_rub_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("class_rub_err_le_wrong"));
	}

	if(!empty($aMsg))
	{
		$e = new CAdminException($aMsg);
		$GLOBALS["APPLICATION"]->ThrowException($e);
		$this->LAST_ERROR = $e->GetString();
		return false;
	}
	return true;
}