• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/classes/general/user.php
  • Класс: CAllUser
  • Вызов: CAllUser::CheckInternalFields
static function CheckInternalFields($arFields, $ID = false)
{
	global $DB;

	$resultError = '';

	$emailRequired = (Option::get('main', 'new_user_email_required', 'Y') != 'N');
	$phoneRequired = (Option::get('main', 'new_user_phone_required', 'N') == 'Y');

	if ($ID === false)
	{
		if (!isset($arFields["LOGIN"]))
		{
			$resultError .= GetMessage("user_login_not_set") . "
"; } if (!isset($arFields["PASSWORD"])) { $resultError .= GetMessage("user_pass_not_set") . "
"; } if ($emailRequired && !isset($arFields["EMAIL"])) { $resultError .= GetMessage("user_email_not_set") . "
"; } if ($phoneRequired && !isset($arFields["PHONE_NUMBER"])) { $resultError .= GetMessage("main_user_check_no_phone") . "
"; } } if (is_set($arFields, "LOGIN") && $arFields["LOGIN"] != trim($arFields["LOGIN"])) { $resultError .= GetMessage("LOGIN_WHITESPACE") . "
"; } if (is_set($arFields, "LOGIN") && mb_strlen($arFields["LOGIN"]) < 3) { $resultError .= GetMessage("MIN_LOGIN") . "
"; } if (is_set($arFields, "PASSWORD")) { if (is_set($arFields, "CONFIRM_PASSWORD") && $arFields["PASSWORD"] !== $arFields["CONFIRM_PASSWORD"]) { //we shouldn't show that password is correct $resultError .= GetMessage("WRONG_CONFIRMATION") . "
"; } else { if (array_key_exists("GROUP_ID", $arFields)) { $arGroups = []; if (is_array($arFields["GROUP_ID"])) { foreach ($arFields["GROUP_ID"] as $arGroup) { if (is_array($arGroup)) { $arGroups[] = $arGroup["GROUP_ID"]; } else { $arGroups[] = $arGroup; } } } $policy = static::getPolicy($arGroups); } elseif ($ID !== false) { $policy = static::getPolicy($ID); } else { $policy = static::getPolicy([]); } $passwordErrors = static::CheckPasswordAgainstPolicy($arFields["PASSWORD"], $policy->getValues(), ($ID !== false ? $ID : null)); if (!empty($passwordErrors)) { $resultError .= implode("
", $passwordErrors) . "
"; } } } if (is_set($arFields, "EMAIL")) { if (($emailRequired && mb_strlen($arFields["EMAIL"]) < 3) || ($arFields["EMAIL"] != '' && !check_email($arFields["EMAIL"], true))) { $resultError .= GetMessage("WRONG_EMAIL") . "
"; } elseif (Option::get('main', 'new_user_email_uniq_check', 'N') === 'Y') { if ($arFields["EMAIL"] != '') { $oldEmail = ''; if ($ID > 0) { // the option 'new_user_email_uniq_check' might have been switched on after the DB already contained identical emails, // so we let a user to have the old email, but not the existing new one $dbr = $DB->Query("SELECT EMAIL FROM b_user WHERE ID=" . intval($ID)); if (($ar = $dbr->Fetch())) { $oldEmail = $ar['EMAIL']; } } if (!$ID || $arFields["EMAIL"] != $oldEmail) { $res = static::GetList('', '', [ "=EMAIL" => $arFields["EMAIL"], "EXTERNAL_AUTH_ID" => $arFields["EXTERNAL_AUTH_ID"] ?? null, ], [ "FIELDS" => ["ID"], ] ); while ($ar = $res->Fetch()) { if (intval($ar["ID"]) !== intval($ID)) { $resultError .= GetMessage("USER_WITH_EMAIL_EXIST", ["#EMAIL#" => htmlspecialcharsbx($arFields["EMAIL"])]) . "
"; } } } } } } if (isset($arFields["PHONE_NUMBER"])) { if ($phoneRequired && $arFields["PHONE_NUMBER"] == '') { $resultError .= GetMessage("main_user_check_no_phone") . "
"; } elseif ($arFields["PHONE_NUMBER"] != '') { //normalize the number: we need it normalized for validation $phoneNumber = MainUserPhoneAuthTable::normalizePhoneNumber($arFields["PHONE_NUMBER"]); //validation $field = MainUserPhoneAuthTable::getEntity()->getField("PHONE_NUMBER"); $result = new MainORMDataResult(); $primary = ($ID === false ? [] : ["USER_ID" => $ID]); $field->validateValue($phoneNumber, $primary, [], $result); if (!$result->isSuccess()) { $resultError .= implode("
", $result->getErrorMessages()); } } } if (isset($arFields["GROUP_ID"]) && is_array($arFields["GROUP_ID"]) && !empty($arFields["GROUP_ID"])) { if (isset($arFields["GROUP_ID"][0]) && is_array($arFields["GROUP_ID"][0]) && !empty($arFields["GROUP_ID"][0])) { foreach ($arFields["GROUP_ID"] as $arGroup) { if ($arGroup["DATE_ACTIVE_FROM"] != '' && !CheckDateTime($arGroup["DATE_ACTIVE_FROM"])) { $error = str_replace("#GROUP_ID#", $arGroup["GROUP_ID"], GetMessage("WRONG_DATE_ACTIVE_FROM")); $resultError .= $error . "
"; } if ($arGroup["DATE_ACTIVE_TO"] != '' && !CheckDateTime($arGroup["DATE_ACTIVE_TO"])) { $error = str_replace("#GROUP_ID#", $arGroup["GROUP_ID"], GetMessage("WRONG_DATE_ACTIVE_TO")); $resultError .= $error . "
"; } } } } return $resultError; }