- Модуль: main
- Путь к файлу: ~/bitrix/modules/main/classes/general/site.php
- Класс: CAllSite
- Вызов: CAllSite::CheckFields
public function CheckFields($arFields, $ID=false)
{
/** @global CMain $APPLICATION */
global $APPLICATION, $DB;
$this->LAST_ERROR = "";
$arMsg = array();
if(isset($arFields["NAME"]) && mb_strlen($arFields["NAME"]) < 2)
{
$this->LAST_ERROR .= GetMessage("BAD_SITE_NAME")." ";
$arMsg[] = array("id"=>"NAME", "text"=> GetMessage("BAD_SITE_NAME"));
}
if(($ID===false || isset($arFields["LID"])) && mb_strlen($arFields["LID"]) <> 2)
{
$this->LAST_ERROR .= GetMessage("BAD_SITE_LID")." ";
$arMsg[] = array("id"=>"LID", "text"=> GetMessage("BAD_SITE_LID"));
}
if(isset($arFields["LID"]) && preg_match("/[^a-z0-9_]/i", $arFields["LID"]))
{
$this->LAST_ERROR .= GetMessage("MAIN_SITE_LATIN")." ";
$arMsg[] = array("id"=>"LID", "text"=> GetMessage("MAIN_SITE_LATIN"));
}
if(isset($arFields["DIR"]) && $arFields["DIR"] == '')
{
$this->LAST_ERROR .= GetMessage("BAD_LANG_DIR")." ";
$arMsg[] = array("id"=>"DIR", "text"=> GetMessage("BAD_LANG_DIR"));
}
if($ID===false && !isset($arFields["LANGUAGE_ID"]))
{
$this->LAST_ERROR .= GetMessage("MAIN_BAD_LANGUAGE_ID")." ";
$arMsg[] = array("id"=>"LANGUAGE_ID", "text"=> GetMessage("MAIN_BAD_LANGUAGE_ID"));
}
if(isset($arFields["LANGUAGE_ID"]))
{
$dbl_check = CLanguage::GetByID($arFields["LANGUAGE_ID"]);
if(!$dbl_check->Fetch())
{
$this->LAST_ERROR .= GetMessage("MAIN_BAD_LANGUAGE_ID_BAD")." ";
$arMsg[] = array("id"=>"LANGUAGE_ID", "text"=> GetMessage("MAIN_BAD_LANGUAGE_ID_BAD"));
}
}
if($ID === false && !isset($arFields["CULTURE_ID"]))
{
$this->LAST_ERROR .= GetMessage("lang_check_culture_not_set")." ";
$arMsg[] = array("id"=>"CULTURE_ID", "text"=> GetMessage("lang_check_culture_not_set"));
}
if(isset($arFields["CULTURE_ID"]))
{
if(CultureTable::getRowById($arFields["CULTURE_ID"]) === null)
{
$this->LAST_ERROR .= GetMessage("lang_check_culture_incorrect")." ";
$arMsg[] = array("id"=>"CULTURE_ID", "text"=> GetMessage("lang_check_culture_incorrect"));
}
}
if(isset($arFields["SORT"]) && $arFields["SORT"] == '')
{
$this->LAST_ERROR .= GetMessage("BAD_SORT")." ";
$arMsg[] = array("id"=>"SORT", "text"=> GetMessage("BAD_SORT"));
}
if(isset($arFields["TEMPLATE"]))
{
$isOK = false;
$check_templ = array();
$dupError = "";
foreach($arFields["TEMPLATE"] as $val)
{
if($val["TEMPLATE"] <> '' && getLocalPath("templates/".$val["TEMPLATE"], BX_PERSONAL_ROOT) !== false)
{
if(in_array($val["TEMPLATE"].", ".$val["CONDITION"], $check_templ))
{
$dupError = " ".GetMessage("MAIN_BAD_TEMPLATE_DUP");
$isOK = false;
break;
}
$check_templ[] = $val["TEMPLATE"].", ".$val["CONDITION"];
$isOK = true;
}
}
if(!$isOK)
{
$this->LAST_ERROR .= GetMessage("MAIN_BAD_TEMPLATE").$dupError;
$arMsg[] = array("id"=>"SITE_TEMPLATE", "text"=> GetMessage("MAIN_BAD_TEMPLATE").$dupError);
}
}
if($ID===false)
$events = GetModuleEvents("main", "OnBeforeSiteAdd", true);
else
$events = GetModuleEvents("main", "OnBeforeSiteUpdate", true);
foreach($events as $arEvent)
{
$bEventRes = ExecuteModuleEventEx($arEvent, array(&$arFields));
if($bEventRes===false)
{
if($err = $APPLICATION->GetException())
{
$this->LAST_ERROR .= $err->GetString()." ";
$arMsg[] = array("id"=>"EVENT_ERROR", "text"=> $err->GetString());
}
else
{
$this->LAST_ERROR .= "Unknown error. ";
$arMsg[] = array("id"=>"EVENT_ERROR", "text"=> "Unknown error. ");
}
break;
}
}
if(!empty($arMsg))
{
$e = new CAdminException($arMsg);
$APPLICATION->ThrowException($e);
}
if($this->LAST_ERROR <> '')
return false;
if($ID===false)
{
$r = $DB->Query("SELECT 'x' FROM b_lang WHERE LID='".$DB->ForSQL($arFields["LID"], 2)."'");
if($r->Fetch())
{
$this->LAST_ERROR .= GetMessage("BAD_SITE_DUP")." ";
$e = new CAdminException(array(array("id" => "LID", "text" => GetMessage("BAD_SITE_DUP"))));
$APPLICATION->ThrowException($e);
return false;
}
}
return true;
}