示例#1
0
    $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();
示例#2
0
 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;
 }
示例#3
0
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;
}