public function SimpleRegister($USER_EMAIL, $SITE_ID = false)
{
/** @global CMain $APPLICATION */
global $APPLICATION, $DB;
$APPLICATION->ResetException();
if (defined("ADMIN_SECTION") && ADMIN_SECTION === true && $SITE_ID === false)
{
$APPLICATION->ThrowException(GetMessage("MAIN_FUNCTION_SIMPLEREGISTER_NA_INADMIN"));
return ["MESSAGE" => GetMessage("MAIN_FUNCTION_SIMPLEREGISTER_NA_INADMIN"), "TYPE" => "ERROR"];
}
if ($SITE_ID === false)
{
$SITE_ID = SITE_ID;
}
global $REMOTE_ADDR;
$arFields = [
"CHECKWORD" => Random::getString(32),
"~CHECKWORD_TIME" => $DB->CurrentTimeFunction(),
"EMAIL" => $USER_EMAIL,
"ACTIVE" => 'Y',
"NAME" => '',
"LAST_NAME" => '',
"USER_IP" => $REMOTE_ADDR,
"USER_HOST" => @gethostbyaddr($REMOTE_ADDR),
"SITE_ID" => $SITE_ID,
"LANGUAGE_ID" => LANGUAGE_ID,
];
$def_group = Option::get('main', 'new_user_registration_def_group');
if ($def_group != '')
{
$arFields["GROUP_ID"] = explode(",", $def_group);
}
else
{
$arFields["GROUP_ID"] = [];
}
$arFields["PASSWORD"] = $arFields["CONFIRM_PASSWORD"] = static::GeneratePasswordByPolicy($arFields["GROUP_ID"]);
$bOk = true;
$result_message = false;
foreach (GetModuleEvents('main', 'OnBeforeUserSimpleRegister', true) as $arEvent)
{
if (ExecuteModuleEventEx($arEvent, [&$arFields]) === false)
{
if ($err = $APPLICATION->GetException())
{
$result_message = ["MESSAGE" => $err->GetString() . "
", "TYPE" => "ERROR"];
}
else
{
$APPLICATION->ThrowException("Unknown error");
$result_message = ["MESSAGE" => "Unknown error" . "
", "TYPE" => "ERROR"];
}
$bOk = false;
break;
}
}
$bRandLogin = false;
if (!is_set($arFields, "LOGIN"))
{
$arFields["LOGIN"] = Random::getString(50);
$bRandLogin = true;
}
$ID = 0;
if ($bOk)
{
$arFields["LID"] = $arFields["SITE_ID"];
if ($ID = $this->Add($arFields))
{
if ($bRandLogin)
{
$this->Update($ID, ["LOGIN" => "user" . $ID]);
$arFields["LOGIN"] = "user" . $ID;
}
$this->Authorize($ID);
$event = new CEvent;
$arFields["USER_ID"] = $ID;
$arEventFields = $arFields;
unset($arEventFields["PASSWORD"]);
unset($arEventFields["CONFIRM_PASSWORD"]);
$event->SendImmediate("NEW_USER", $arEventFields["SITE_ID"], $arEventFields);
static::SendUserInfo($ID, $arEventFields["SITE_ID"], GetMessage("USER_REGISTERED_SIMPLE"), true);
$result_message = ["MESSAGE" => GetMessage("USER_REGISTER_OK"), "TYPE" => "OK"];
}
else
{
$result_message = ["MESSAGE" => $this->LAST_ERROR, "TYPE" => "ERROR"];
}
}
if (is_array($result_message))
{
if ($result_message["TYPE"] == "OK")
{
if (Option::get('main', 'event_log_register', 'N') === 'Y')
{
$res_log["user"] = $arFields["LOGIN"];
CEventLog::Log('SECURITY', 'USER_REGISTER', 'main', $ID, serialize($res_log));
}
}
else
{
if (Option::get('main', 'event_log_register_fail', 'N') === 'Y')
{
CEventLog::Log('SECURITY', 'USER_REGISTER_FAIL', 'main', $ID, $result_message['MESSAGE']);
}
}
}
$arFields["RESULT_MESSAGE"] = $result_message;
foreach (GetModuleEvents('main', 'OnAfterUserSimpleRegister', true) as $arEvent)
{
ExecuteModuleEventEx($arEvent, [&$arFields]);
}
return $arFields["RESULT_MESSAGE"];
}