$APPLICATION->IncludeComponent("bitrix:system.auth.initialize", "", array("CHECKWORD_VARNAME" => "checkword", "USERID_VARNAME" => "user_id", "AUTH_URL" => "#SITE_DIR#auth.php"), false); require $_SERVER["DOCUMENT_ROOT"] . "/bitrix/footer.php"; die; } define("PUBLIC_AJAX_MODE", true); require_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_before.php"; $bExtranetInstalled = IsModuleInstalled("extranet") && strlen(COption::GetOptionString("extranet", "extranet_site")) > 0; IncludeModuleLangFile(__FILE__); ?> <div style="width: 542px; padding: 5px; max-height: 500px; overflow-y: auto; margin: 5px;"><?php $bLimitReached = false; if (IsModuleInstalled("bitrix24")) { $UserMaxCount = intval(COption::GetOptionString("main", "PARAM_MAX_USERS")); if ($UserMaxCount > 0) { $currentUserCount = 0; $currentUserCount = CBitrix24::ActiveUserCount(); if ($currentUserCount >= $UserMaxCount) { $bLimitReached = true; } } } if ($bLimitReached) { echo GetMessage("BX24_INVITE_DIALOG_INVITE_LIMIT"); } elseif (CModule::IncludeModule('bitrix24') && !$USER->CanDoOperation('bitrix24_invite') || !IsModuleInstalled('bitrix24') && !$USER->CanDoOperation('edit_all_users')) { echo GetMessage("BX24_INVITE_DIALOG_ACCESS_DENIED"); } elseif (!CModule::IncludeModule('iblock')) { echo GetMessage("BX24_INVITE_DIALOG_IBLOCK_MODULE"); } elseif (!CModule::IncludeModule('intranet')) { echo GetMessage("BX24_INVITE_DIALOG_INTRANET_MODULE"); } else { $SITE_ID = CSite::GetDefSite();
public static function checkUsersCount($cnt) { if (CModule::IncludeModule("bitrix24")) { $UserMaxCount = intval(COption::GetOptionString("main", "PARAM_MAX_USERS")); $currentUserCount = CBitrix24::ActiveUserCount(); return $UserMaxCount <= 0 || $cnt <= $UserMaxCount - $currentUserCount; } return false; }
function RegisterNewUser($SITE_ID, $arFields) { global $USER; $arEmailToRegister = array(); $arEmailToReinvite = array(); $arEmailExist = array(); if ($arFields["EMAIL"] != '') { $arEmailOriginal = preg_split("/[\n\r\t\\,;\\ ]+/", trim($arFields["EMAIL"])); $arEmail = array(); foreach ($arEmailOriginal as $addr) { if ($addr != '' && check_email($addr)) { $arEmail[] = $addr; } } if (count($arEmailOriginal) > count($arEmail)) { return array(GetMessage("BX24_INVITE_DIALOG_EMAIL_ERROR")); } foreach ($arEmail as $email) { $arFilter = array("=EMAIL" => $email); $rsUser = CUser::GetList($by = "id", $order = "asc", $arFilter); $bFound = false; while ($arUser = $rsUser->GetNext()) { $bFound = true; if ($arUser["LAST_LOGIN"] == "") { $arEmailToReinvite[] = array("EMAIL" => $email, "REINVITE" => true, "ID" => $arUser["ID"], "CONFIRM_CODE" => $arUser["CONFIRM_CODE"]); } else { $arEmailExist[] = $email; } } if (!$bFound) { $arEmailToRegister[] = array("EMAIL" => $email, "REINVITE" => false); } } } $messageText = isset($arFields["MESSAGE_TEXT"]) ? htmlspecialcharsbx($arFields["MESSAGE_TEXT"]) : GetMessage("BX24_INVITE_DIALOG_INVITE_MESSAGE_TEXT"); if (isset($arFields["MESSAGE_TEXT"])) { CUserOptions::SetOption("bitrix24", "invite_message_text", $arFields["MESSAGE_TEXT"]); } //reinvite users foreach ($arEmailToReinvite as $userData) { $event = new CEvent(); $event->SendImmediate("BITRIX24_USER_INVITATION", $SITE_ID, array("EMAIL_FROM" => $USER->GetEmail(), "EMAIL_TO" => $userData["EMAIL"], "LINK" => CHTTP::URN2URI("/bitrix/tools/intranet_invite_dialog.php?user_id=" . $userData["ID"] . "&checkword=" . urlencode($userData["CONFIRM_CODE"])), "USER_TEXT" => $messageText)); } //register users if (!empty($arEmailToRegister)) { if (CModule::IncludeModule("bitrix24")) { $UserMaxCount = intval(COption::GetOptionString("main", "PARAM_MAX_USERS")); $currentUserCount = CBitrix24::ActiveUserCount(); if ($UserMaxCount > 0 && count($arEmailToRegister) > $UserMaxCount - $currentUserCount) { return array(GetMessage("BX24_INVITE_DIALOG_MAX_COUNT_ERROR")); } } $arGroups = array(); $rsGroups = CGroup::GetList($o = "", $b = "", array("STRING_ID" => "EMPLOYEES_" . $SITE_ID)); while ($arGroup = $rsGroups->Fetch()) { $arGroups[] = $arGroup["ID"]; } $rsIBlock = CIBlock::GetList(array(), array("CODE" => "departments")); $arIBlock = $rsIBlock->Fetch(); $iblockID = $arIBlock["ID"]; if (!(isset($arFields["UF_DEPARTMENT"]) && intval($arFields["UF_DEPARTMENT"]) > 0)) { $db_up_department = CIBlockSection::GetList(array(), array("SECTION_ID" => 0, "IBLOCK_ID" => $iblockID)); if ($ar_up_department = $db_up_department->Fetch()) { $arFields["UF_DEPARTMENT"] = $ar_up_department['ID']; } } foreach ($arEmailToRegister as $userData) { $arUser = array("LOGIN" => $userData["EMAIL"], "EMAIL" => $userData["EMAIL"], "UF_DEPARTMENT" => array($arFields["UF_DEPARTMENT"]), "PASSWORD" => randString(12, $password_chars = array("abcdefghijklnmopqrstuvwxyz", "ABCDEFGHIJKLNMOPQRSTUVWXYZ", "0123456789", "(*)")), "CONFIRM_CODE" => randString(8), "GROUP_ID" => $arGroups); $User = new CUser(); $ID = $User->Add($arUser); if (!$ID) { $arErrors = preg_split("/<br>/", $User->LAST_ERROR); return $arErrors; } else { $event = new CEvent(); $event->SendImmediate("BITRIX24_USER_INVITATION", $SITE_ID, array("EMAIL_FROM" => $USER->GetEmail(), "EMAIL_TO" => $userData["EMAIL"], "LINK" => CHTTP::URN2URI("/bitrix/tools/intranet_invite_dialog.php?user_id=" . $ID . "&checkword=" . urlencode($arUser["CONFIRM_CODE"])), "USER_TEXT" => $messageText)); } } return true; } if (!empty($arEmailExist)) { return array(GetMessage("BX24_INVITE_DIALOG_USER_EXIST_ERROR")); } return true; }