function AddNewUser($SITE_ID, $arFields, &$strError) { $ID_ADDED = 0; $iDepartmentId = intval($arFields["DEPARTMENT_ID"]); $bExtranet = $iDepartmentId <= 0; $strEmail = trim($arFields["ADD_EMAIL"]); $strName = trim($arFields["ADD_NAME"]); $strLastName = trim($arFields["ADD_LAST_NAME"]); $strPosition = trim($arFields["ADD_POSITION"]); $strPassword = self::GeneratePassword($SITE_ID, $bExtranetUser); self::setSendPassword($arFields["ADD_SEND_PASSWORD"] == "Y"); if (strlen($strEmail) <= 0) { if (!isset($arFields["ADD_MAILBOX_ACTION"]) || !in_array($arFields["ADD_MAILBOX_ACTION"], array("create", "connect")) || strlen($arFields['ADD_MAILBOX_USER']) <= 0 || strlen($arFields['ADD_MAILBOX_DOMAIN']) <= 0) { $strError = GetMessage("BX24_INVITE_DIALOG_ERROR_EMPTY_EMAIL"); } else { // email from mailbox $strEmail = $arFields['ADD_MAILBOX_USER'] . "@" . $arFields['ADD_MAILBOX_DOMAIN']; } } if (!$strError) { $arUser = array("LOGIN" => $strEmail, "NAME" => $strName, "LAST_NAME" => $strLastName, "EMAIL" => $strEmail, "PASSWORD" => $strPassword, "GROUP_ID" => CIntranetInviteDialog::getUserGroups($SITE_ID, $bExtranet), "WORK_POSITION" => $strPosition, "UF_DEPARTMENT" => $iDepartmentId > 0 ? array($iDepartmentId) : array(0)); if (!self::getSendPassword()) { $arUser["CONFIRM_CODE"] = randString(8); } $obUser = new CUser(); $ID_ADDED = $obUser->Add($arUser); if (!$ID_ADDED) { if ($e = $GLOBALS["APPLICATION"]->GetException()) { $strError = $e->GetString(); } else { $strError = $obUser->LAST_ERROR; } } else { if (self::getSendPassword()) { $db_events = GetModuleEvents("main", "OnUserInitialize", true); foreach ($db_events as $arEvent) { ExecuteModuleEventEx($arEvent, array($ID_ADDED, $arUser)); } } $SiteIdToSend = $bExtranet && CModule::IncludeModule("extranet") ? CExtranet::GetExtranetSiteID() : CSite::GetDefSite(); $rsSites = CSite::GetByID($SiteIdToSend); $arSite = $rsSites->Fetch(); $serverName = strlen($arSite["SERVER_NAME"]) > 0 ? $arSite["SERVER_NAME"] : (defined("SITE_SERVER_NAME") && strlen(SITE_SERVER_NAME) > 0 ? SITE_SERVER_NAME : COption::GetOptionString("main", "server_name", "")); $event = new CEvent(); if (self::getSendPassword()) { $url = (CMain::IsHTTPS() ? "https" : "http") . "://" . $serverName . $arSite["DIR"]; $event->SendImmediate("INTRANET_USER_ADD", $SITE_ID, array("EMAIL_TO" => $arUser["EMAIL"], "LINK" => $url, "PASSWORD" => $strPassword, "USER_TEXT" => GetMessage("BX24_INVITE_DIALOG_INVITE_MESSAGE_TEXT"))); } else { $dbUser = CUser::GetByID($ID_ADDED); $arUser = $dbUser->Fetch(); if (IsModuleInstalled("bitrix24")) { $event->SendImmediate("BITRIX24_USER_INVITATION", $SITE_ID, array("EMAIL_FROM" => $GLOBALS["USER"]->GetEmail(), "EMAIL_TO" => $arUser["EMAIL"], "LINK" => CHTTP::URN2URI("/bitrix/tools/intranet_invite_dialog.php?user_id=" . $ID_ADDED . "&checkword=" . urlencode($arUser["CONFIRM_CODE"]), $serverName), "USER_TEXT" => GetMessage("BX24_INVITE_DIALOG_INVITE_MESSAGE_TEXT"))); } else { $event->SendImmediate("INTRANET_USER_INVITATION", $SITE_ID, array("EMAIL_TO" => $arUser["EMAIL"], "LINK" => CHTTP::URN2URI("/bitrix/tools/intranet_invite_dialog.php?user_id=" . $ID_ADDED . "&checkword=" . urlencode($arUser["CONFIRM_CODE"]), $serverName), "USER_TEXT" => GetMessage("BX24_INVITE_DIALOG_INVITE_MESSAGE_TEXT"))); } } } } return $ID_ADDED; }
} elseif ($_REQUEST['show_user'] == 'all') { $show_user = '******'; } else { $show_user = '******'; } } $arParams["show_user"] = $show_user; $outlook_link = 'javascript:' . CIntranetUtils::GetStsSyncURL(array('LINK_URL' => $APPLICATION->GetCurPage()), 'contacts', $arParams["EXTRANET_TYPE"] == "employees" ? true : false); global $USER; ?> <div class="employee-search-block"> <?php if (($USER->CanDoOperation('bitrix24_invite') && IsModuleInstalled('bitrix24') || !IsModuleInstalled("bitrix24") && $USER->CanDoOperation('edit_all_users')) && CModule::IncludeModule('intranet') && $arParams['TABLE_VIEW'] != 'group_table') { ?> <a class="webform-small-button webform-small-button-blue bx24-top-toolbar-add" href="javascript:void(0)" onclick="<?php echo CIntranetInviteDialog::ShowInviteDialogLink(); ?> "> <span class="webform-small-button-icon"></span> <span class="webform-small-button-text"><?php echo GetMessage("INTR_COMP_IS_TPL_TOOLBAR_USER_INVITE"); ?> </span> </a> <?php } ?> <div class="bx24-top-bar-search-wrap employee-search-wrap"> <?php $arFilterValues = $APPLICATION->IncludeComponent("bitrix:intranet.structure.selector", "advanced", $arParams, $component, array('HIDE_ICONS' => 'Y')); ?>
if (StrLen($errorMessage) <= 0) { $errorMessage .= str_replace("#RELATION_ID#", $arRelation["ID"], GetMessage("SONET_GRE_CANT_DELETE_INVITATION")); } } } $APPLICATION->ThrowException($errorMessage, "ERROR_DELETE_RELATION"); } } } if (strlen($errorMessage) > 0) { $arResult["ErrorMessage"] = $errorMessage; } } elseif (CModule::IncludeModule('extranet') && in_array(CExtranet::GetExtranetSiteID(), $arGroupSites) && intval($_REQUEST["invite_user_id"]) > 0 && check_bitrix_sessid() && CModule::IncludeModule('intranet')) { $rsInvitedUser = CUser::GetByID(intval($_REQUEST["invite_user_id"])); if (($arInvitedUser = $rsInvitedUser->Fetch()) && (!is_array($arInvitedUser["UF_DEPARTMENT"]) || intval($arInvitedUser["UF_DEPARTMENT"][0]) <= 0) && strlen($arInvitedUser["LAST_LOGIN"]) <= 0 && strlen($arInvitedUser["LAST_ACTIVITY_DATE"]) <= 0) { CIntranetInviteDialog::ReinviteUser(SITE_ID, $arInvitedUser["ID"]); LocalRedirect($APPLICATION->GetCurPageParam("invite_sent=Y", array("invite_user_id", "employee"))); } } $arNavParams = array("nPageSize" => $arParams["ITEMS_COUNT"], "bDescPageNumbering" => false); $parser = new CSocNetTextParser(LANGUAGE_ID, $arParams["PATH_TO_SMILE"]); $arResult["Requests"] = false; $dbRequests = CSocNetUserToGroup::GetList(array("DATE_CREATE" => "ASC"), array("GROUP_ID" => $arResult["Group"]["ID"], "ROLE" => SONET_ROLES_REQUEST, "INITIATED_BY_TYPE" => SONET_INITIATED_BY_USER), false, $arNavParams, array("ID", "USER_ID", "DATE_CREATE", "DATE_UPDATE", "MESSAGE", "USER_NAME", "USER_LAST_NAME", "USER_SECOND_NAME", "USER_LOGIN", "USER_PERSONAL_PHOTO", "USER_PERSONAL_GENDER")); if ($dbRequests) { $arResult["Requests"] = array(); $arResult["Requests"]["List"] = false; while ($arRequests = $dbRequests->GetNext()) { if ($arResult["Requests"]["List"] == false) { $arResult["Requests"]["List"] = array(); } $pu = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_USER"], array("user_id" => $arRequests["USER_ID"]));
$errorMessage .= $strErrorTmp; } } else { $arUserIDs[] = $ID; $userData['ID'] = $ID; CIntranetInviteDialog::InviteUser($userData, htmlspecialcharsbx($_POST["MESSAGE_TEXT"]), SITE_ID); } } } } if (!empty($errorMessage)) { $arResult["ErrorFields"][] = "EXTRANET_BLOCK"; } } elseif ($_POST["EXTRANET_INVITE_ACTION"] == "add" && CModule::IncludeModule("intranet")) { $userData = array("ADD_EMAIL" => $_POST["ADD_EMAIL"], "ADD_NAME" => $_POST["ADD_NAME"], "ADD_LAST_NAME" => $_POST["ADD_LAST_NAME"], "ADD_SEND_PASSWORD" => $_POST["ADD_SEND_PASSWORD"]); $ID_ADDED = CIntranetInviteDialog::AddNewUser(SITE_ID, $userData, $strError); if ($ID_ADDED <= 0) { $errorMessage .= (strlen($errorMessage) > 0 ? "<br />" : "") . $strError; $arResult["ErrorFields"][] = "EXTRANET_BLOCK"; } else { $arUserIDs[] = $ID_ADDED; } } } // send invitations if (is_array($arUserIDs) && count($arUserIDs) > 0) { foreach ($arUserIDs as $user_id) { $isCurrentUserTmp = $USER->GetID() == $user_id; $canInviteGroup = CSocNetUserPerms::CanPerformOperation($USER->GetID(), $user_id, "invitegroup", CSocNetUser::IsCurrentUserModuleAdmin()); $user2groupRelation = CSocNetUserToGroup::GetUserRole($user_id, $arResult["GROUP_ID"]); if (!$isCurrentUserTmp && $canInviteGroup && !$user2groupRelation) {
if ($arParams['bAdmin']) { $this->SetViewTarget("sidebar", 100); ?> <div class="department-profile-events"> <div class="department-profile-events-title"><?php echo GetMessage("INTR_IS_TPL_ACTIONS"); ?> </div> <div class="department-profile-events-cont"> <?php if ($USER->CanDoOperation('bitrix24_invite') && CModule::IncludeModule('bitrix24') && CModule::IncludeModule('intranet')) { $arInviteParams["UF_DEPARTMENT"] = $current_section; ?> <a class="department-profile-events-item department-profile-add-sub" href="javascript:void(0)" onclick="<?php echo CIntranetInviteDialog::ShowInviteDialogLink($arInviteParams); ?> "><i></i><?php echo GetMessage("INTR_IS_TPL_ACTION_INVITE"); ?> </a> <?php } if (isset($_GET['structure_UF_DEPARTMENT'])) { $arStructureParams["IBLOCK_SECTION_ID"] = $current_section; } //parent department $arStructureParams["ACTION"] = "ADD"; ?> <a class="department-profile-events-item department-profile-subsection" href="" onclick="BX.IntranetStructure.ShowForm(<?php echo CUtil::PhpToJSObject($arStructureParams);
CUser::Delete($ID_ADDED); $strError = GetMessage("BX24_INVITE_DIALOG_WARNING_CREATE_MAILBOX_ERROR") . " " . $strError; } // update email? } } } } } if (!$strError && ($ID_ADDED || $ID_INVITED)) { if ($ID_ADDED) { $arUserId = array($ID_ADDED); } else { $arUserId = $ID_INVITED; } $strError = CIntranetInviteDialog::RequestToSonetGroups($arUserId, $_POST["SONET_GROUPS_CODE"], $_POST["SONET_GROUPS_NAME"], intval($_POST["DEPARTMENT_ID"]) <= 0); } if ($strError) { ob_end_clean(); echo CUtil::PhpToJsObject(array('ERROR' => $strError)); die; } else { ob_end_clean(); $arResult = array('MESSAGE' => GetMessage("BX24_INVITE_DIALOG_" . ($strAction == "invite" ? "INVITED" : "ADDED"), array("#SITE_DIR#" => $SITE_DIR))); if ($strWarning) { $arResult["WARNING"] = $strWarning; } echo CUtil::PhpToJsObject($arResult); die; } }