- Модуль: rest
- Путь к файлу: ~/bitrix/modules/rest/lib/api/user.php
- Класс: BitrixRestApiUser
- Вызов: User::userAdd
static function userAdd($userFields, $nav = 0, CRestServer $server = null)
{
if (!is_null($server) && !static::isMainScope($server))
{
return static::getErrorScope();
}
global $APPLICATION, $USER;
static::checkAllowedFields();
$bB24 = ModuleManager::isModuleInstalled('bitrix24');
$res = false;
if(
(
$bB24 && $USER->canDoOperation('bitrix24_invite')
|| $USER->canDoOperation('edit_all_users')
)
&& Loader::includeModule('intranet'))
{
$userFields = array_change_key_case($userFields, CASE_UPPER);
$bExtranet = false;
if (
isset($userFields["EXTRANET"])
&& $userFields["EXTRANET"] == "Y"
)
{
if (IsModuleInstalled('extranet'))
{
$bExtranet = true;
$userFields["UF_DEPARTMENT"] = array();
if (!empty($userFields["SONET_GROUP_ID"]))
{
$sonetGroupId = $userFields["SONET_GROUP_ID"];
if (!is_array($sonetGroupId))
{
$sonetGroupId = array($sonetGroupId);
}
unset($userFields["SONET_GROUP_ID"]);
}
else
{
throw new Exception('no_sonet_group_for_extranet');
}
}
unset($userFields["EXTRANET"]);
}
$inviteFields = self::prepareSaveData($userFields);
$userFields["EMAIL"] = trim($userFields["EMAIL"]);
if(check_email($userFields["EMAIL"]))
{
$siteId = self::getDefaultSite();
if(CIntranetInviteDialog::checkUsersCount(1))
{
if (
IsModuleInstalled('extranet')
&& empty($inviteFields["UF_DEPARTMENT"])
&& !$bExtranet
)
{
throw new Exception('no_extranet_field');
}
$inviteFields['EMAIL'] = $userFields["EMAIL"];
$inviteFields['ACTIVE'] = (isset($inviteFields['ACTIVE'])? $inviteFields['ACTIVE'] : 'Y');
$inviteFields['GROUP_ID'] = CIntranetInviteDialog::getUserGroups($siteId, $bExtranet);
$inviteFields["CONFIRM_CODE"] = randString(8);
$ID = CIntranetInviteDialog::RegisterUser($inviteFields);
if(is_array($ID))
{
throw new Exception(implode("n", $ID));
}
elseif($ID > 0)
{
$obUser = new CUser;
if(!$obUser->update($ID, $inviteFields))
{
throw new Exception($obUser->LAST_ERROR);
}
$inviteFields['ID'] = $ID;
Invitation::add([
'USER_ID' => $ID,
'TYPE' => Invitation::TYPE_EMAIL
]);
CIntranetInviteDialog::InviteUser(
$inviteFields,
(isset($userFields["MESSAGE_TEXT"])) ? htmlspecialcharsbx($userFields["MESSAGE_TEXT"]) : GetMessage("BX24_INVITE_DIALOG_INVITE_MESSAGE_TEXT_1")
);
if (
isset($sonetGroupId)
&& is_array($sonetGroupId)
&& CModule::IncludeModule('socialnetwork')
)
{
foreach($sonetGroupId as $groupId)
{
if (!CSocNetUserToGroup::SendRequestToJoinGroup($USER->GetID(), $ID, $groupId, "", false))
{
if ($e = $APPLICATION->GetException())
{
throw new Exception($e->GetString());
}
}
}
}
$res = $ID;
}
}
else
{
throw new Exception('user_count_exceeded');
}
}
else
{
throw new Exception('wrong_email');
}
}
else
{
throw new Exception('access_denied');
}
return $res;
}