- Модуль: main
- Путь к файлу: ~/bitrix/modules/main/classes/general/user.php
- Класс: CAllUser
- Вызов: CAllUser::CheckFields
public function CheckFields(&$arFields, $ID = false)
{
/**
* @global CMain $APPLICATION
* @global CUserTypeManager $USER_FIELD_MANAGER
*/
global $DB, $APPLICATION, $USER_FIELD_MANAGER;
$this->LAST_ERROR = '';
$bInternal = true;
if (is_set($arFields, "EXTERNAL_AUTH_ID"))
{
if (trim($arFields["EXTERNAL_AUTH_ID"]) != '')
{
$bInternal = false;
}
}
else
{
if ($ID > 0)
{
$dbr = $DB->Query("SELECT EXTERNAL_AUTH_ID FROM b_user WHERE ID=" . intval($ID));
if (($ar = $dbr->Fetch()))
{
if ($ar['EXTERNAL_AUTH_ID'] != '')
{
$bInternal = false;
}
}
}
}
if ($bInternal)
{
$this->LAST_ERROR .= static::CheckInternalFields($arFields, $ID);
}
else
{
if (is_set($arFields, "EMAIL"))
{
if ($arFields["EMAIL"] != '' && !check_email($arFields["EMAIL"], true))
{
$this->LAST_ERROR .= GetMessage("WRONG_EMAIL") . "
";
}
}
}
if (
is_set($arFields, "PERSONAL_PHOTO")
&& (!isset($arFields["PERSONAL_PHOTO"]["name"]) || $arFields["PERSONAL_PHOTO"]["name"] == '')
&& (!isset($arFields["PERSONAL_PHOTO"]["del"]) || $arFields["PERSONAL_PHOTO"]["del"] == '')
)
{
unset($arFields["PERSONAL_PHOTO"]);
}
$maxWidth = (int)Option::get('main', 'profile_image_width', 0);
$maxHeight = (int)Option::get('main', 'profile_image_height', 0);
$maxSize = (int)Option::get('main', 'profile_image_size', 0);
if (is_set($arFields, "PERSONAL_PHOTO"))
{
$res = CFile::CheckImageFile($arFields["PERSONAL_PHOTO"], $maxSize, $maxWidth, $maxHeight);
if ($res != '')
{
$this->LAST_ERROR .= $res . "
";
}
}
if (is_set($arFields, "PERSONAL_BIRTHDAY") && $arFields["PERSONAL_BIRTHDAY"] != '' && !CheckDateTime($arFields["PERSONAL_BIRTHDAY"]))
{
$this->LAST_ERROR .= GetMessage("WRONG_PERSONAL_BIRTHDAY") . "
";
}
if (
is_set($arFields, "WORK_LOGO")
&& (!isset($arFields["WORK_LOGO"]["name"]) || $arFields["WORK_LOGO"]["name"] == '')
&& (!isset($arFields["WORK_LOGO"]["del"]) || $arFields["WORK_LOGO"]["del"] == '')
)
{
unset($arFields["WORK_LOGO"]);
}
if (is_set($arFields, "WORK_LOGO"))
{
$res = CFile::CheckImageFile($arFields["WORK_LOGO"], $maxSize, $maxWidth, $maxHeight);
if ($res != '')
{
$this->LAST_ERROR .= $res . "
";
}
}
if (is_set($arFields, 'LOGIN'))
{
$res = $DB->Query(
"SELECT 'x' FROM b_user "
. "WHERE LOGIN = '{$DB->ForSql($arFields["LOGIN"], 50)}' "
. ($ID === false ? '' : ' AND ID <> ' . (int)$ID)
. (
!$bInternal
? " AND EXTERNAL_AUTH_ID = '{$DB->ForSql($arFields["EXTERNAL_AUTH_ID"])}' "
: " AND (EXTERNAL_AUTH_ID IS NULL OR {$DB->Length("EXTERNAL_AUTH_ID")} <= 0)"
)
);
if ($res->Fetch())
{
$this->LAST_ERROR .= str_replace('#LOGIN#', htmlspecialcharsbx($arFields['LOGIN']), GetMessage('USER_EXIST')) . '
';
}
}
if (is_object($APPLICATION))
{
$APPLICATION->ResetException();
if ($ID === false)
{
$events = GetModuleEvents('main', 'OnBeforeUserAdd', true);
}
else
{
$arFields["ID"] = $ID;
$events = GetModuleEvents('main', 'OnBeforeUserUpdate', true);
}
foreach ($events as $arEvent)
{
$bEventRes = ExecuteModuleEventEx($arEvent, [&$arFields]);
if ($bEventRes === false)
{
if ($err = $APPLICATION->GetException())
{
$this->LAST_ERROR .= $err->GetString() . ' ';
}
else
{
$APPLICATION->ThrowException("Unknown error");
$this->LAST_ERROR .= "Unknown error. ";
}
break;
}
}
}
if (is_object($APPLICATION))
{
$APPLICATION->ResetException();
}
if (!$USER_FIELD_MANAGER->CheckFields("USER", $ID, $arFields))
{
if (is_object($APPLICATION) && $APPLICATION->GetException())
{
$e = $APPLICATION->GetException();
$this->LAST_ERROR .= $e->GetString();
$APPLICATION->ResetException();
}
else
{
$this->LAST_ERROR .= "Unknown error. ";
}
}
if ($this->LAST_ERROR != '')
{
return false;
}
return true;
}