- Модуль: controller
- Путь к файлу: ~/bitrix/modules/controller/classes/general/controllermember.php
- Класс: CAllControllerMember
- Вызов: CAllControllerMember::CheckFields
static function CheckFields(&$arFields, $ID = false)
{
/** @global CMain $APPLICATION */
global $APPLICATION;
/** @global CDatabase $DB */
global $DB;
/** @global CUser $USER */
global $USER;
$arMsg = array();
if ($ID > 0)
{
unset($arFields["ID"]);
}
if ($ID === false)
{
if (!array_key_exists("MEMBER_ID", $arFields))
{
$arFields["MEMBER_ID"] = "m".BitrixMainSecurityRandom::getString(31);
}
elseif (array_key_exists("MEMBER_ID", $arFields))
{
if (intval($arFields["MEMBER_ID"]) > 0)
{
$arMsg[] = array(
"id" => "MEMBER_ID",
"text" => GetMessage("CTRLR_MEM_ERR_MEMBER_ID"),
);
}
else
{
$strSqlCheck = "
SELECT 'x'
FROM b_controller_member
WHERE MEMBER_ID = '".$DB->ForSQL($arFields['MEMBER_ID'], 32)."'
AND ID <> ".intval($ID)."
";
$dbrCheck = $DB->Query($strSqlCheck);
if ($dbrCheck->Fetch())
{
$arMsg[] = array(
"id" => "MEMBER_ID",
"text" => GetMessage("CTRLR_MEM_ERR_MEMBER_UID"),
);
}
}
}
}
if (($ID === false || array_key_exists("NAME", $arFields)) && $arFields["NAME"] == '')
{
$arMsg[] = array(
"id" => "NAME",
"text" => GetMessage("CTRLR_MEM_ERR_MEMBER_NAME"),
);
}
if (($ID === false || array_key_exists("URL", $arFields)) && $arFields["URL"] == '')
{
$arMsg[] = array(
"id" => "URL",
"text" => GetMessage("CTRLR_MEM_ERR_MEMBER_URL"),
);
}
if ($ID === false && !array_key_exists("CONTROLLER_GROUP_ID", $arFields))
{
$arFields["CONTROLLER_GROUP_ID"] = COption::GetOptionInt("controller", "default_group", 1);
}
if ($ID === false)
{
$dbEvents = GetModuleEvents("controller", "OnBeforeControllerMemberAdd", true);
}
else
{
$dbEvents = GetModuleEvents("controller", "OnBeforeControllerMemberUpdate", true);
}
$APPLICATION->ResetException();
foreach($dbEvents as $arEvent)
{
$bEventRes = ExecuteModuleEventEx($arEvent, array($ID, &$arFields));
if ($bEventRes === false)
{
$ex = $APPLICATION->GetException();
$arMsg[] = array(
"text" => ($ex? $ex->GetString(): "Unknown error."),
);
}
}
if (!empty($arMsg))
{
$e = new CAdminException($arMsg);
$APPLICATION->ThrowException($e);
return false;
}
if (isset($arFields["URL"]))
{
$arFields["URL"] = CControllerMember::_GoodURL($arFields["URL"]);
}
if (array_key_exists("ACTIVE", $arFields) && $arFields["ACTIVE"] != "Y")
{
$arFields["ACTIVE"] = "N";
}
if (array_key_exists("SHARED_KERNEL", $arFields) && $arFields["SHARED_KERNEL"] != "Y")
{
$arFields["SHARED_KERNEL"] = "N";
}
if (array_key_exists("DISCONNECTED", $arFields) && $arFields["DISCONNECTED"] != "Y" && $arFields["DISCONNECTED"]!="I")
{
$arFields["DISCONNECTED"] = "N";
}
if (!array_key_exists("MODIFIED_BY", $arFields) && is_object($USER))
{
$arFields["MODIFIED_BY"] = $USER->GetID();
}
if ($ID === false && !array_key_exists("CREATED_BY", $arFields) && is_object($USER))
{
$arFields["CREATED_BY"] = $USER->GetID();
}
if ($ID === false && !array_key_exists("DATE_CREATE", $arFields))
{
$arFields["~DATE_CREATE"] = $DB->CurrentTimeFunction();
}
return true;
}