%PDF- %PDF-
Direktori : /home/bitrix/www/bitrix/components/bitrix/socialnetwork.group_create.ex/ |
Current File : /home/bitrix/www/bitrix/components/bitrix/socialnetwork.group_create.ex/component.php |
<?php if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die(); /** @var CBitrixComponent $this */ /** @var array $arParams */ /** @var array $arResult */ /** @var string $componentPath */ /** @var string $componentName */ /** @var string $componentTemplate */ /** @global CDatabase $DB */ /** @global CUser $USER */ /** @global CMain $APPLICATION */ /** @global CCacheManager $CACHE_MANAGER */ /** @global CUserTypeManager $USER_FIELD_MANAGER */ global $CACHE_MANAGER, $USER_FIELD_MANAGER; use Bitrix\Socialnetwork\UserToGroupTable; use Bitrix\Socialnetwork\WorkgroupSiteTable; use Bitrix\Socialnetwork\Item\UserToGroup; use Bitrix\Main\ModuleManager; use Bitrix\Main\Loader; use Bitrix\Main\Config\Option; use Bitrix\Socialnetwork\Item\WorkgroupTemplate; use Bitrix\Main\Localization\Loc; require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/components/bitrix/socialnetwork.group_create.ex/include.php"); if (!Loader::includeModule("socialnetwork")) { ShowError(GetMessage("SONET_MODULE_NOT_INSTALL")); return; } $arParams["GROUP_ID"] = ( intval($_REQUEST["SONET_GROUP_ID"]) > 0 ? intval($_REQUEST["SONET_GROUP_ID"]) : intval($arParams["GROUP_ID"]) ); $arParams["SET_NAV_CHAIN"] = ($arParams["SET_NAV_CHAIN"] == "N" ? "N" : "Y"); $bAutoSubscribe = (array_key_exists("USE_AUTOSUBSCRIBE", $arParams) && $arParams["USE_AUTOSUBSCRIBE"] == "N" ? false : true); if (strLen($arParams["USER_VAR"]) <= 0) $arParams["USER_VAR"] = "user_id"; if (strLen($arParams["PAGE_VAR"]) <= 0) $arParams["PAGE_VAR"] = "page"; if (strLen($arParams["GROUP_VAR"]) <= 0) $arParams["GROUP_VAR"] = "group_id"; $arParams["PATH_TO_USER"] = trim($arParams["PATH_TO_USER"]); if (strlen($arParams["PATH_TO_USER"]) <= 0) $arParams["PATH_TO_USER"] = htmlspecialcharsbx($APPLICATION->GetCurPage()."?".$arParams["PAGE_VAR"]."=user&".$arParams["USER_VAR"]."=#user_id#"); $arParams["PATH_TO_GROUP"] = trim($arParams["PATH_TO_GROUP"]); if (strlen($arParams["PATH_TO_GROUP"]) <= 0) $arParams["PATH_TO_GROUP"] = htmlspecialcharsbx($APPLICATION->GetCurPage()."?".$arParams["PAGE_VAR"]."=group&".$arParams["GROUP_VAR"]."=#group_id#"); $strSiteWorkgroupsPage = \Bitrix\Socialnetwork\ComponentHelper::getWorkgroupSEFUrl(); if (strlen($strSiteWorkgroupsPage) > 0) { $arParams["PATH_TO_GROUP_GENERAL"] = $strSiteWorkgroupsPage."group/#group_id#/general/"; } $arParams["PATH_TO_GROUP_EDIT"] = trim($arParams["PATH_TO_GROUP_EDIT"]); if (strlen($arParams["PATH_TO_GROUP_EDIT"]) <= 0) $arParams["PATH_TO_GROUP_EDIT"] = htmlspecialcharsbx($APPLICATION->GetCurPage()."?".$arParams["PAGE_VAR"]."=group_edit&".$arParams["GROUP_VAR"]."=#group_id#"); $arParams["PATH_TO_GROUP_CREATE"] = trim($arParams["PATH_TO_GROUP_CREATE"]); if (strlen($arParams["PATH_TO_GROUP_CREATE"]) <= 0) $arParams["PATH_TO_GROUP_CREATE"] = htmlspecialcharsbx($APPLICATION->GetCurPage()."?".$arParams["PAGE_VAR"]."=group_create&".$arParams["USER_VAR"]."=#user_id#"); $arParams["IUS_INPUT_NAME"] = "ius_ids"; $arParams["IUS_INPUT_NAME_SUSPICIOUS"] = "ius_susp"; $arParams["IUS_INPUT_NAME_STRING"] = "users_list_string_ius"; $arParams["IUS_INPUT_NAME_EXTRANET"] = "ius_ids_extranet"; $arParams["IUS_INPUT_NAME_SUSPICIOUS_EXTRANET"] = "ius_susp_extranet"; $arParams["IUS_INPUT_NAME_STRING_EXTRANET"] = "users_list_string_ius_extranet"; if (strlen($arParams["NAME_TEMPLATE"]) <= 0) $arParams["NAME_TEMPLATE"] = CSite::GetNameFormat(); $bUseLogin = $arParams["SHOW_LOGIN"] != "N" ? true : false; $arParams["USE_KEYWORDS"] = ($arParams["USE_KEYWORDS"] != "N" ? "Y" : "N"); $arResult["GROUP_PROPERTIES"] = $USER_FIELD_MANAGER->GetUserFields("SONET_GROUP", 0, LANGUAGE_ID); foreach($arResult["GROUP_PROPERTIES"] as $field => $arUserField) { if ( !empty($arUserField['EDIT_IN_LIST']) && $arUserField['EDIT_IN_LIST'] == 'N' && ( empty($arUserField['MANDATORY']) || $arUserField['MANDATORY'] != 'Y' ) ) { unset($arResult["GROUP_PROPERTIES"][$field]); continue; } $arResult["GROUP_PROPERTIES"][$field]["EDIT_FORM_LABEL"] = StrLen($arUserField["EDIT_FORM_LABEL"]) > 0 ? $arUserField["EDIT_FORM_LABEL"] : $arUserField["FIELD_NAME"]; $arResult["GROUP_PROPERTIES"][$field]["EDIT_FORM_LABEL"] = htmlspecialcharsEx($arResult["GROUP_PROPERTIES"][$field]["EDIT_FORM_LABEL"]); $arResult["GROUP_PROPERTIES"][$field]["~EDIT_FORM_LABEL"] = $arResult["GROUP_PROPERTIES"][$field]["EDIT_FORM_LABEL"]; } $arResult["bVarsFromForm"] = false; $arResult["templateEditMode"] = 'N'; $arResult["IS_IFRAME"] = $_GET["IFRAME"] == "Y"; $arResult["IS_POPUP"] = $_GET["POPUP"] == "Y"; if (in_array($_GET["CALLBACK"], array("REFRESH", "GROUP"))) { $arResult["CALLBACK"] = $_GET["CALLBACK"]; } if (!empty($arParams["TAB"])) { $arResult["TAB"] = strtolower($arParams["TAB"]); } if (strlen($_GET["tab"]) > 0) { $arResult["TAB"] = $_GET["tab"]; } $arResult['destinationContextOwner'] = 'GROUP_INVITE_OWNER'; $arResult['destinationContextModerators'] = 'GROUP_INVITE_MODERATORS'; $arResult['destinationContextUsers'] = 'GROUP_INVITE'; if (!$USER->IsAuthorized()) { $arResult["NEED_AUTH"] = "Y"; } else { $arResult["currentUserId"] = $USER->getId(); $arResult["bIntranet"] = $arResult["intranetInstalled"] = ModuleManager::isModuleInstalled('intranet'); $extranetSiteValue = Option::get("extranet", "extranet_site"); $arResult["bExtranetInstalled"] = ( $arResult["intranetInstalled"] && ModuleManager::isModuleInstalled('extranet') && !empty($extranetSiteValue) ); $arResult["bExtranet"] = ( $arResult["bExtranetInstalled"] && Loader::includeModule('extranet') && CExtranet::IsExtranetSite() ); $arResult["isCurrentUserIntranet"] = ( !Loader::includeModule('extranet') || CExtranet::IsIntranetUser() ); $arResult["messageTextDisabled"] = ( Loader::includeModule('bitrix24') && ( !CBitrix24::isLicensePaid() || CBitrix24::isDemoLicense() ) && !CBitrix24::isNfrLicense() ); $inviteMessageTextDefault = $arResult["inviteMessageText"] = Loc::getMessage("SONET_GCE_INVITE_MESSAGE_TEXT"); if ( !$arResult["messageTextDisabled"] && ( ($userMessage = CUserOptions::getOption("socialnetwork", "invite_message_text")) || ($userMessage = CUserOptions::getOption((IsModuleInstalled("bitrix24") ? "bitrix24" : "intranet"), "invite_message_text")) ) ) { $inviteMessageTextDefault = $arResult["inviteMessageText"] = $userMessage; } if ( !$arResult["messageTextDisabled"] && isset($_POST["MESSAGE_TEXT"]) ) { $arResult["inviteMessageText"] = htmlspecialcharsbx($_POST["MESSAGE_TEXT"]); } $arResult["POST"] = array( "FEATURES" => array(), "USER_IDS" => false, "MODERATOR_IDS" => false, "USERS_FOR_JS" => array(), "USERS_FOR_JS_I" => array(), "USERS_FOR_JS_E" => array(), "EMAILS" => "" ); if ($arParams["GROUP_ID"] > 0) { __GCEGetGroup($arParams["GROUP_ID"], $arResult["GROUP_PROPERTIES"], $arResult["POST"], $arResult["TAB"]); } else { $arParams["GROUP_ID"] = 0; $arResult["POST"]["VISIBLE"] = "Y"; if ($arResult["bExtranet"]) { $arResult["POST"]["INITIATE_PERMS"] = "E"; } else { $arResult["POST"]["INITIATE_PERMS"] = "K"; } $arResult["POST"]["SPAM_PERMS"] = "K"; $arResult["POST"]["IMAGE_ID_IMG"] = '<img src="/bitrix/images/1.gif" height="60" class="sonet-group-create-popup-image" id="sonet_group_create_popup_image" border="0">'; } $arResult["USE_PRESETS"] = ($arResult["intranetInstalled"] ? 'Y' : 'N'); $arResult['Types'] = ( $arResult["USE_PRESETS"] == 'Y' ? \Bitrix\Socialnetwork\Item\Workgroup::getTypes(array( 'currentExtranetSite' => $arResult["bExtranet"] )) : array() ); $arResult["Urls"]["User"] = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_USER"], array("user_id" => $arResult["currentUserId"])); $arResult["Urls"]["Group"] = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_GROUP"], array("group_id" => $arParams["GROUP_ID"])); if ($arResult["TAB"] != "invite") { if ($arParams["GROUP_ID"] <= 0) { if ( !CSocNetUser::IsCurrentUserModuleAdmin() && $APPLICATION->GetGroupRight("socialnetwork", false, "Y", "Y", array(SITE_ID, false)) < "K" ) { $arResult["FatalError"] = GetMessage("SONET_GCE_ERR_CANT_CREATE").". "; } } elseif ( strlen($errorMessage) <= 0 && $arParams["GROUP_ID"] > 0 && $arResult["POST"]["OWNER_ID"] != $arResult["currentUserId"] && !CSocNetUser::IsCurrentUserModuleAdmin() ) { $arResult["FatalError"] = GetMessage("SONET_GCE_ERR_SECURITY").". "; } } if (StrLen($arResult["FatalError"]) <= 0) { if ( !array_key_exists("TAB", $arResult) || $arResult["TAB"] == "edit" ) { __GCE_GetFeatures($arParams["GROUP_ID"], $arResult["POST"]["FEATURES"]); } $arResult["ShowForm"] = "Input"; $arResult["ErrorFields"] = array(); if ( $_SERVER["REQUEST_METHOD"] == "POST" && strlen($_POST["save"]) > 0 && check_bitrix_sessid() ) { if ($_POST["ajax_request"] == "Y") { CUtil::JSPostUnescape(); } $errorMessage = ""; $warningMessage = ""; if ($arResult["templateEditMode"] != 'Y') { } $moderatorIdList = array(); $ownerId = ( isset($arResult["POST"]) && isset($arResult["POST"]["OWNER_ID"]) && intval($arResult["POST"]["OWNER_ID"]) > 0 ? intval($arResult["POST"]["OWNER_ID"]) : $arResult["currentUserId"] ); if ( !array_key_exists("TAB", $arResult) || $arResult["TAB"] == "edit" ) { if ( intval($_POST["GROUP_IMAGE_ID"]) > 0 && ( !isset($_POST["GROUP_IMAGE_ID_del"]) || ( $_POST["GROUP_IMAGE_ID_del"] != "Y" && intval($_POST["GROUP_IMAGE_ID_del"]) != intval($_POST["GROUP_IMAGE_ID_del"]) // main.file.input ) ) ) { if ( intval($arResult["POST"]["IMAGE_ID"]) != intval($_POST["GROUP_IMAGE_ID"]) && in_array($_POST['GROUP_IMAGE_ID'], \Bitrix\Main\UI\FileInputUtility::instance()->checkFiles('GROUP_IMAGE_ID', array($_POST['GROUP_IMAGE_ID']))) ) { $arImageID = CFile::MakeFileArray($_POST["GROUP_IMAGE_ID"]); $arImageID["old_file"] = $arResult["POST"]["IMAGE_ID"]; $arImageID["del"] = "N"; CFile::ResizeImage($arImageID, array("width" => 300, "height" => 300), BX_RESIZE_IMAGE_PROPORTIONAL); } } else { $arImageID = array("del" => "Y", "old_file" => $arResult["POST"]["IMAGE_ID"]); } $arResult["POST"]["NAME"] = htmlspecialcharsbx($_POST["GROUP_NAME"]); $arResult["POST"]["DESCRIPTION"] = $_POST["GROUP_DESCRIPTION"]; $arResult["POST"]["IMAGE_ID_DEL"] = ( isset($_POST["GROUP_IMAGE_ID_del"]) && ( $_POST["GROUP_IMAGE_ID_del"] == "Y" || intval($_POST["GROUP_IMAGE_ID_del"]) == intval($_POST["GROUP_IMAGE_ID"]) ) ? "Y" : "N" ); $arResult["POST"]["SUBJECT_ID"] = $_POST["GROUP_SUBJECT_ID"]; $arResult["POST"]["VISIBLE"] = ($_POST["GROUP_VISIBLE"] == "Y" ? "Y" : "N"); $arResult["POST"]["OPENED"] = ($_POST["GROUP_OPENED"] == "Y" ? "Y" : "N"); $arResult["POST"]["IS_EXTRANET_GROUP"] = ($_POST["IS_EXTRANET_GROUP"] == "Y" ? "Y" : "N"); $arResult["POST"]["EXTRANET_INVITE_ACTION"] = (isset($_POST["EXTRANET_INVITE_ACTION"]) && $_POST["EXTRANET_INVITE_ACTION"] == "add" ? "add" : "invite"); $arResult["POST"]["CLOSED"] = ($_POST["GROUP_CLOSED"] == "Y" ? "Y" : "N"); $arResult["POST"]["KEYWORDS"] = $_POST["GROUP_KEYWORDS"]; $arResult["POST"]["INITIATE_PERMS"] = $_POST["GROUP_INITIATE_PERMS"]; $arResult["POST"]["SPAM_PERMS"] = $_POST["GROUP_SPAM_PERMS"]; foreach($arResult["GROUP_PROPERTIES"] as $field => $arUserField) { if (array_key_exists($field, $_POST)) { $arResult["POST"]["PROPERTIES"][$field] = $_POST[$field]; } } if (strlen($_POST["GROUP_NAME"]) <= 0) { $errorMessage .= GetMessage(empty($_POST["GROUP_PROJECT"]) && $_POST["GROUP_PROJECT"] == 'Y' ? "SONET_GCE_ERR_NAME_PROJECT" : "SONET_GCE_ERR_NAME").".<br />"; $arResult["ErrorFields"][] = "GROUP_NAME"; } if (IntVal($_POST["GROUP_SUBJECT_ID"]) <= 0) { $errorMessage .= GetMessage(!empty($_POST["GROUP_PROJECT"]) && $_POST["GROUP_PROJECT"] == 'Y' ? "SONET_GCE_ERR_SUBJECT_PROJECT" : "SONET_GCE_ERR_SUBJECT").".<br />"; $arResult["ErrorFields"][] = "GROUP_SUBJECT_ID"; } if (strlen($_POST["GROUP_INITIATE_PERMS"]) <= 0) { $errorMessage .= GetMessage(!empty($_POST["GROUP_PROJECT"]) && $_POST["GROUP_PROJECT"] == 'Y' ? "SONET_GCE_ERR_PERMS_PROJECT" : "SONET_GCE_ERR_PERMS").".<br />"; $arResult["ErrorFields"][] = "GROUP_INITIATE_PERMS"; } if (strlen($_POST["GROUP_SPAM_PERMS"]) <= 0) { $errorMessage .= GetMessage("SONET_GCE_ERR_SPAM_PERMS").".<br />"; $arResult["ErrorFields"][] = "GROUP_SPAM_PERMS"; } foreach ($arResult["POST"]["FEATURES"] as $feature => $arFeature) { $arResult["POST"]["FEATURES"][$feature]["Active"] = ($_POST[$feature."_active"] == "Y"); $arResult["POST"]["FEATURES"][$feature]["FeatureName"] = (strlen(trim($_POST[$feature."_name"])) > 0 ? trim($_POST[$feature."_name"]) : ''); } // owner if ( isset($_POST["OWNER_CODE"]) && preg_match('/^U(\d+)$/', $_POST["OWNER_CODE"], $match) && intval($match[1]) > 0 ) { $ownerId = intval($match[1]); \Bitrix\Main\FinderDestTable::merge(array( "CONTEXT" => $arResult['destinationContextOwner'], "CODE" => array($_POST["OWNER_CODE"]) )); } // moderators $moderatorCodeList = (is_array($_POST["MODERATOR_CODES"]) ? $_POST["MODERATOR_CODES"] : array($_POST["MODERATOR_CODES"])); foreach ($moderatorCodeList as $destinationCode) { if( preg_match('/^U(\d+)$/', $destinationCode, $match) && $match[1] != $ownerId ) { $moderatorCodeList[] = $destinationCode; if (!in_array($match[1], $moderatorIdList)) { $moderatorIdList[] = $match[1]; } } } if (!empty($moderatorCodeList)) { \Bitrix\Main\FinderDestTable::merge(array( "CONTEXT" => $arResult['destinationContextModerators'], "CODE" => $moderatorCodeList )); } } if ( !array_key_exists("TAB", $arResult) || $arResult["TAB"] == "invite" ) { if ( array_key_exists("NEW_INVITE_FORM", $_POST) && $_POST["NEW_INVITE_FORM"] == "Y" ) { // new form // members $arUserIDs = $arDepartmentIDs = $arUserCodes = array(); $arUserCodesFromPost = (is_array($_POST["USER_CODES"]) ? $_POST["USER_CODES"] : array($_POST["USER_CODES"])); foreach ($arUserCodesFromPost as $destinationCode) { if(preg_match('/^U(\d+)$/', $destinationCode, $match)) { if ( in_array($match[1], $arUserIDs) || in_array($match[1], $moderatorIdList) || $match[1] == $ownerId ) { continue; } $arUserIDs[] = $match[1]; $arUserCodes['U'.$match[1]] = 'users'; } elseif(preg_match('/^DR(\d+)$/', $destinationCode, $match)) { if (!in_array($match[1], $arUserIDs)) { $arDepartmentIDs[] = $match[1]; } if (!array_key_exists('DR'.$match[1], $arUserCodes)) { $arUserCodes['DR'.$match[1]] = 'users'; } } } \Bitrix\Main\FinderDestTable::merge(array( "CONTEXT" => $arResult['destinationContextUsers'], "CODE" => array_keys($arUserCodes) )); $arResult["POST"]["USER_IDS"] = $arUserIDs; $arResult["POST"]["USER_CODES"] = $arUserCodes; if ( $arResult["bExtranetInstalled"] && array_key_exists("EMAILS", $_POST) ) { $arResult["POST"]["EMAILS"] = $_POST["EMAILS"]; } if ( array_key_exists("TAB", $arResult) && $arResult["TAB"] == "invite" && empty($arUserIDs) && empty($arDepartmentIDs) && !$arResult["intranetInstalled"]) { $errorMessage .= GetMessage("SONET_GCE_NO_USERS").". "; $arResult["ErrorFields"][] = "USERS"; } } else { // old form if ($arResult["intranetInstalled"]) // user.selector.new { if ( is_array($_POST["USER_IDS"]) && count($_POST["USER_IDS"]) > 0 ) { $arResult["POST"]["USER_IDS"] = $_POST["USER_IDS"]; } //adding e-mail from the input field to the list if ( array_key_exists("EMAIL", $_POST) && strlen($_POST["EMAIL"]) > 0 && check_email($_POST["EMAIL"]) ) { $_POST["EMAILS"] .= (empty($_POST["EMAILS"]) ? "" : ", ").trim($_POST["EMAIL"]); } if (array_key_exists("EMAILS", $_POST)) { $arResult["POST"]["EMAILS"] = $_POST["EMAILS"]; } } else // user_search_input { $arUserIDs = array(); $arUsersList = array(); $arUsersListTmp = Explode(",", $_POST["users_list"]); foreach ($arUsersListTmp as $userTmp) { $userTmp = Trim($userTmp); if (StrLen($userTmp) > 0) { $arUsersList[] = $userTmp; } } if ( $arResult["TAB"] == "invite" && Count($arUsersList) <= 0 ) { $errorMessage .= GetMessage("SONET_GCE_NO_USERS").". "; $arResult["ErrorFields"][] = "USERS"; } if (StrLen($errorMessage) <= 0) { foreach ($arUsersList as $user) { $arFoundUsers = CSocNetUser::SearchUser($user); if ( $arFoundUsers && is_array($arFoundUsers) && count($arFoundUsers) > 0 ) { foreach ($arFoundUsers as $userID => $userName) { if (intval($userID) > 0) { $arUserIDs[] = $userID; } } } } } $arResult["POST"]["USER_IDS"] = $arUserIDs; } } } if ( ( !array_key_exists("TAB", $arResult) || $arResult["TAB"] == "edit" ) && strlen($errorMessage) <= 0 ) { $arFields = array( "NAME" => $_POST["GROUP_NAME"], "DESCRIPTION" => $_POST["GROUP_DESCRIPTION"], "VISIBLE" => ($_POST["GROUP_VISIBLE"] == "Y" ? "Y" : "N"), "OPENED" => ($_POST["GROUP_OPENED"] == "Y" ? "Y" : "N"), "CLOSED" => ($_POST["GROUP_CLOSED"] == "Y" ? "Y" : "N"), "SUBJECT_ID" => $_POST["GROUP_SUBJECT_ID"], "KEYWORDS" => $_POST["GROUP_KEYWORDS"], "INITIATE_PERMS" => $_POST["GROUP_INITIATE_PERMS"], "SPAM_PERMS" => $_POST["GROUP_SPAM_PERMS"], "PROJECT" => ($_POST["GROUP_PROJECT"] == "Y" ? "Y" : "N"), ); if(\Bitrix\Main\Config\Configuration::getValue("utf_mode") === true) { $conn = \Bitrix\Main\Application::getConnection(); $table = \Bitrix\Socialnetwork\WorkgroupTable::getTableName(); if ($arFields["NAME"] <> '') { if (!$conn->isUtf8mb4($table, 'NAME')) { $arFields["NAME"] = \Bitrix\Main\Text\UtfSafeString::escapeInvalidUtf($arFields["NAME"]); } } if ($arFields["DESCRIPTION"] <> '') { if (!$conn->isUtf8mb4($table, 'DESCRIPTION')) { $arFields["DESCRIPTION"] = \Bitrix\Main\Text\UtfSafeString::escapeInvalidUtf($arFields["DESCRIPTION"]); } } } if (!empty($arImageID)) { $arFields["IMAGE_ID"] = $arImageID; } if ($arFields["PROJECT"] == "Y") { if (isset($_POST["PROJECT_DATE_START"])) { $arFields["PROJECT_DATE_START"] = $_POST["PROJECT_DATE_START"]; } if (isset($_POST["PROJECT_DATE_FINISH"])) { $arFields["PROJECT_DATE_FINISH"] = $_POST["PROJECT_DATE_FINISH"]; } } if ( !CModule::IncludeModule("extranet") || !CExtranet::IsExtranetSite() ) { $arFields["SITE_ID"] = array(SITE_ID); if ( CModule::IncludeModule("extranet") && !CExtranet::IsExtranetSite() && $_POST["IS_EXTRANET_GROUP"] == "Y" ) { $arFields["SITE_ID"][] = CExtranet::GetExtranetSiteID(); $arFields["VISIBLE"] = "N"; $arFields["OPENED"] = "N"; } } elseif( CModule::IncludeModule("extranet") && CExtranet::IsExtranetSite() ) { if ($arParams["GROUP_ID"] <= 0) { $arFields["SITE_ID"] = array(SITE_ID, CSite::GetDefSite()); } else { $siteIdList = array(); $res = WorkgroupSiteTable::getList(array( 'filter' => array( 'GROUP_ID' => $arParams["GROUP_ID"] ), 'select' => array('SITE_ID') )); while($workGroupSiteFields = $res->fetch()) { $siteIdList[] = $workGroupSiteFields['SITE_ID']; } $siteIdList[] = SITE_ID; $siteIdList = array_unique($siteIdList); if (!empty($siteIdList)) { $arFields["SITE_ID"] = $siteIdList; } } } foreach($arResult["GROUP_PROPERTIES"] as $field => $arUserField) { if (array_key_exists($field, $_POST)) { $arFields[$field] = $_POST[$field]; } } $USER_FIELD_MANAGER->EditFormAddFields("SONET_GROUP", $arFields); if ($arParams["GROUP_ID"] <= 0) { if ( CModule::IncludeModule("extranet") && CExtranet::IsExtranetSite() ) { $arFields["SITE_ID"][] = CSite::GetDefSite(); } $arResult["GROUP_ID"] = CSocNetGroup::createGroup($ownerId, $arFields, $bAutoSubscribe); if (!$arResult["GROUP_ID"]) { if ($e = $APPLICATION->GetException()) { $errorMessage .= $e->GetString(); $errorID = $e->GetID(); if (strlen($errorID) > 0) { $arResult["ErrorFields"][] = $errorID; } } } else { $bFirstStepSuccess = true; } } else { $arFields["=DATE_UPDATE"] = $DB->CurrentTimeFunction(); $arFields["=DATE_ACTIVITY"] = $DB->CurrentTimeFunction(); $arResult["GROUP_ID"] = CSocNetGroup::update($arParams["GROUP_ID"], $arFields, $bAutoSubscribe); if ( !$arResult["GROUP_ID"] && ($e = $APPLICATION->getException()) ) { $errorMessage .= $e->getString(); $errorID = $e->getId(); if ($errorID == "ERROR_IMAGE_ID") { $arResult["ErrorFields"][] = "GROUP_IMAGE_ID"; } elseif ( isset($e->messages) && is_array($e->messages) && isset($e->messages[0]["id"]) ) { $arResult["ErrorFields"][] = $e->messages[0]["id"]; } } else { if ($arResult["POST"]["OWNER_ID"] != $ownerId) { CSocNetUserToGroup::setOwner($ownerId, $arParams["GROUP_ID"], $arResult["POST"]); } $rsSite = CSite::getList($by="sort", $order="desc", Array("ACTIVE" => "Y")); while($arSite = $rsSite->Fetch()) { BXClearCache(true, "/".$arSite["ID"]."/bitrix/search.tags.cloud/"); } } } if ($arResult["GROUP_ID"] > 0) { $plusList = ( $arParams["GROUP_ID"] > 0 ? array_diff($moderatorIdList, $arResult["POST"]["MODERATOR_IDS"]) : $moderatorIdList ); $minusList = ( $arParams["GROUP_ID"] > 0 ? array_diff($arResult["POST"]["MODERATOR_IDS"], $moderatorIdList) : array() ); if (!empty($minusList)) { $relationIdList = array(); $resRelation = UserToGroupTable::getList(array( 'filter' => array( 'GROUP_ID' => $arResult["GROUP_ID"], '@USER_ID' => $minusList ), 'select' => array('ID') )); while($relation = $resRelation->fetch()) { $relationIdList[] = $relation['ID']; } if (!empty($relationIdList)) { CSocNetUserToGroup::TransferModerator2Member($arResult["currentUserId"], $arResult["GROUP_ID"], $relationIdList, CSocNetUser::IsCurrentUserModuleAdmin()); } } \Bitrix\Socialnetwork\Item\UserToGroup::addModerators(array( 'group_id' => $arResult["GROUP_ID"], 'user_id' => $plusList, 'current_user_id' => $arResult["currentUserId"] )); if (!empty($plusList)) { foreach($plusList as $moderatorId) { UserToGroup::addInfoToChat(array( 'group_id' => $arResult["GROUP_ID"], 'user_id' => $moderatorId, 'action' => UserToGroup::CHAT_ACTION_IN, 'sendMessage' => false )); } } } } if ( strlen($errorMessage) <= 0 && array_key_exists("TAB", $arResult) && $arResult["TAB"] != "edit" ) { $arResult["GROUP_ID"] = $arParams["GROUP_ID"]; } if ( !empty($arImageID) && strlen($arImageID["tmp_name"]) > 0 ) { CFile::ResizeImageDeleteCache($arImageID); } if (strlen($errorMessage) > 0) { $arResult["ErrorMessage"] = $errorMessage; $arResult["bVarsFromForm"] = true; } elseif ($arResult["GROUP_ID"] > 0) { /* features */ if (!array_key_exists("TAB", $arResult) || $arResult["TAB"] == "edit") { foreach ($arResult["POST"]["FEATURES"] as $feature => $arFeature) { $idTmp = CSocNetFeatures::setFeature( SONET_ENTITY_GROUP, $arResult["GROUP_ID"], $feature, ($_POST[$feature."_active"] == "Y"), ( strlen($_REQUEST[$feature."_name"]) > 0 ? $_REQUEST[$feature."_name"] : (strlen($arFeature["FeatureName"]) > 0 ? $arFeature["FeatureName"] : false) ) ); if ( $arParams["GROUP_ID"] <= 0 && $feature == 'chat' ) { \CUserOptions::setOption("socialnetwork", "default_chat_create_default", ($_POST[$feature."_active"] == "Y" ? 'Y' : 'N')); } if (!$idTmp) { if ($e = $APPLICATION->GetException()) { $errorMessage .= $e->GetString(); } } else { $bSecondStepSuccess = true; } } } if ( strlen($errorMessage) <= 0 && $_POST['SAVE_AS_TEMPLATE'] == 'Y' ) { $typeFields = array( 'VISIBLE' => (isset($arFields['VISIBLE']) && $arFields['VISIBLE'] == 'Y' ? 'Y' : 'N'), 'OPENED' => (isset($arFields['OPENED']) && $arFields['OPENED'] == 'Y' ? 'Y' : 'N'), 'PROJECT' => (isset($arFields['PROJECT']) && $arFields['PROJECT'] == 'Y' ? 'Y' : 'N'), 'EXTERNAL' => (isset($_POST["IS_EXTRANET_GROUP"]) && $_POST["IS_EXTRANET_GROUP"] == 'Y' ? 'Y' : 'N') ); $typeCode = \Bitrix\Socialnetwork\Item\Workgroup::getTypeCodeByParams(array( 'typesList' => $arResult['Types'], 'fields' => $typeFields )); WorkgroupTemplate::create(array( 'userId' => $arResult["currentUserId"], 'name' => (!empty($arFields['NAME']) ? $arFields['NAME'] : $arResult['POST']['NAME']), 'ownerId' => $ownerId, 'type' => $typeCode, 'params' => array( 'description' => (isset($arFields['DESCRIPTION']) ? $arFields['DESCRIPTION'] : ''), ) )); } /* invite */ if ( strlen($errorMessage) <= 0 && ( !array_key_exists("TAB", $arResult) || $arResult["TAB"] == "invite" ) ) { if ( CModule::IncludeModule('extranet') && CModule::IncludeModule('intranet') ) { $externalAuthIdList = \Bitrix\Socialnetwork\ComponentHelper::checkPredefinedAuthIdList(array('bot', 'imconnector', 'replica')); if ( $_POST["EXTRANET_INVITE_ACTION"] == "invite" && strlen($_POST["EMAILS"]) > 0 ) { if ($_POST["MESSAGE_TEXT"] != $inviteMessageTextDefault) { CUserOptions::setOption("socialnetwork", "invite_message_text", $_POST["MESSAGE_TEXT"]); } $arEmail = array(); $arIntranetUsersEmails = array(); $arInvitedExtranetUsers = array(); $arEmailOriginal = preg_split("/[\n\r\t\\,;]+/", $_POST["EMAILS"]); $emailCnt = 0; foreach($arEmailOriginal as $addr) { if ($emailCnt >= 100) { break; } if(strlen($addr) > 0 && check_email($addr)) { $addrX = ""; $phraseX = ""; $white_space = "(?:(?:\\r\\n)?[ \\t])"; $spec = '()<>@,;:\\\\".\\[\\]'; $cntl = '\\000-\\037\\177'; $dtext = "[^\\[\\]\\r\\\\]"; $domain_literal = "\\[(?:$dtext|\\\\.)*\\]$white_space*"; $quoted_string = "\"(?:[^\\\"\\r\\\\]|\\\\.|$white_space)*\"$white_space*"; $atom = "[^$spec $cntl]+(?:$white_space+|\\Z|(?=[\\[\"$spec]))"; $word = "(?:$atom|$quoted_string)"; $localpart = "$word(?:\\.$white_space*$word)*"; $sub_domain = "(?:$atom|$domain_literal)"; $domain = "$sub_domain(?:\\.$white_space*$sub_domain)*"; $addr_spec = "$localpart\\@$white_space*$domain"; $phrase = "$word*"; if(preg_match("/$addr_spec/", $addr, $arMatches)) $addrX = $arMatches[0]; if(preg_match("/$localpart/", $addr, $arMatches)) $phraseX = trim(trim($arMatches[0]), "\""); $arEmail[] = array("EMAIL" => $addrX, "NAME" => $phraseX); $emailCnt++; } } if (!empty($arEmail)) { $userData = array( "GROUP_ID" => CIntranetInviteDialog::getUserGroups(SITE_ID, true) ); foreach($arEmail as $email) { $arUser = array(); $arFilter = array( "ACTIVE" => "Y", "=EMAIL" => $email["EMAIL"] ); if (!empty($externalAuthIdList)) { $arFilter['!EXTERNAL_AUTH_ID'] = $externalAuthIdList; } $userID = 0; $rsUser = CUser::GetList( ($by="id"), ($order="asc"), $arFilter, array( "FIELDS" => array("ID", "EXTERNAL_AUTH_ID", "CONFIRM_CODE"), "SELECT" => array("UF_DEPARTMENT") ) ); if ($arUser = $rsUser->Fetch()) { if ( in_array($arUser['ID'], $moderatorIdList) || $arUser['ID'] == $ownerId ) { continue; } //if user with this e-mail is registered, but is external user if ($arUser["EXTERNAL_AUTH_ID"] == 'email') { $ID_TRANSFERRED = CIntranetInviteDialog::TransferEmailUser($arUser["ID"], array( "SITE_ID" => SITE_ID, "GROUP_ID" => $userData["GROUP_ID"] )); if (!$ID_TRANSFERRED) { if($e = $APPLICATION->GetException()) { $errorMessage .= $e->GetString(); } } else { $arUserIDs[] = $ID_TRANSFERRED; } } elseif ( empty($arUser["UF_DEPARTMENT"]) || ( is_array($arUser["UF_DEPARTMENT"]) && intval($arUser["UF_DEPARTMENT"][0]) <= 0 ) ) { if (!empty($arUser["CONFIRM_CODE"])) { \CIntranetInviteDialog::reinviteExtranetUser(SITE_ID, $arUser["ID"]); } $arUserIDs[] = $userID = $arUser["ID"]; } else { $arIntranetUsersEmails[] = $email["EMAIL"]; continue; } } else { $userData["EMAIL"] = $email["EMAIL"]; $userData["LOGIN"] = $email["EMAIL"]; $userData["CONFIRM_CODE"] = randString(8); $name = $last_name = ""; if ($email["NAME"] <> '') { list($name, $last_name) = explode(" ", $email["NAME"]); } $userData["NAME"] = $name; $userData["LAST_NAME"] = $last_name; $ID = CIntranetInviteDialog::RegisterUser($userData, SITE_ID); if(is_array($ID)) { foreach ($ID as $strErrorTmp) { $errorMessage .= $strErrorTmp; } } else { $arUserIDs[] = $ID; $userData['ID'] = $ID; CIntranetInviteDialog::InviteUser($userData, htmlspecialcharsbx($_POST["MESSAGE_TEXT"])); } } } } 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"] ); $arFilter = array( "EMAIL" => $userData["ADD_EMAIL"] ); if (!empty($externalAuthIdList)) { $arFilter['!EXTERNAL_AUTH_ID'] = $externalAuthIdList; } $rsUser = CUser::GetList( ($by="id"), ($order="asc"), $arFilter, array( "FIELDS" => array("ID", "EXTERNAL_AUTH_ID") ) ); if ( ($arUser = $rsUser->Fetch()) && ($arUser["EXTERNAL_AUTH_ID"] == 'email') ) { $ID_ADDED = 0; $ID_TRANSFERRED = CIntranetInviteDialog::TransferEmailUser($arUser["ID"], array( "SITE_ID" => SITE_ID, "NAME" => $userData["ADD_NAME"], "LAST_NAME" => $userData["ADD_LAST_NAME"] )); if (!$ID_TRANSFERRED) { if($e = $APPLICATION->GetException()) { $errorMessage .= (strlen($errorMessage) > 0 ? "<br />" : "").$e->GetString(); } } } else { $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; } } } if ( isset($arUserIDs) && is_array($arUserIDs) ) { foreach($arUserIDs as $key => $value) { if ($value == $arResult["currentUserId"]) { unset($arUserIDs[$key]); } } } // send invitations and add users if ( ( !array_key_exists("TAB", $arResult) || $arResult["TAB"] == "edit" ) && isset($ownerId) && $ownerId != $arResult["currentUserId"] && !in_array($arResult["currentUserId"], $moderatorIdList) && !CSocNetUser::IsCurrentUserModuleAdmin() // not session admin ) { if (CSocNetUserToGroup::add(array( "USER_ID" => $arResult["currentUserId"], "GROUP_ID" => $arResult["GROUP_ID"], "ROLE" => UserToGroupTable::ROLE_USER, "=DATE_CREATE" => $DB->CurrentTimeFunction(), "=DATE_UPDATE" => $DB->CurrentTimeFunction(), "MESSAGE" => "", "INITIATED_BY_TYPE" => UserToGroupTable::INITIATED_BY_GROUP, "INITIATED_BY_USER_ID" => $arResult["currentUserId"], "SEND_MAIL" => "N" ))) { UserToGroup::addInfoToChat(array( 'group_id' => $arResult["GROUP_ID"], 'user_id' => $arResult["currentUserId"], 'action' => UserToGroup::CHAT_ACTION_IN, 'sendMessage' => false )); } } if ( !empty($arUserIDs) && is_array($arUserIDs) ) { foreach($arUserIDs as $user_id) { $canInviteGroup = CSocNetUserPerms::CanPerformOperation($arResult["currentUserId"], $user_id, "invitegroup", CSocNetUser::IsCurrentUserModuleAdmin()); $user2groupRelation = CSocNetUserToGroup::GetUserRole($user_id, $arResult["GROUP_ID"]); if ( $canInviteGroup && !$user2groupRelation ) { $bMail = ( !is_array($arInvitedExtranetUsers) || !in_array($user_id, $arInvitedExtranetUsers) ); if (!CSocNetUserToGroup::SendRequestToJoinGroup($arResult["currentUserId"], $user_id, $arResult["GROUP_ID"], $_POST["MESSAGE"], $bMail)) { $rsUser = CUser::GetByID($user_id); if ($arUser = $rsUser->Fetch()) { $arErrorUsers[] = array( CUser::FormatName($arParams["NAME_TEMPLATE"], $arUser, $bUseLogin), CSocNetUserPerms::CanPerformOperation($arResult["currentUserId"], $arUser["ID"], "viewprofile", CSocNetUser::IsCurrentUserModuleAdmin()) ? CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_USER"], array("user_id" => $arUser["ID"])) : "" ); if ($e = $APPLICATION->GetException()) { $warningMessage .= $e->GetString(); } } } elseif ( is_array($arResult["POST"]["USER_IDS"]) && in_array($user_id, $arResult["POST"]["USER_IDS"]) ) { $bInvited = true; // delete from uninvited users list $arKeysFound = array_keys($arResult["POST"]["USER_IDS"], $user_id); foreach($arKeysFound as $key) { unset($arResult["POST"]["USER_IDS"][$key]); } } } //user already is related to group, don't invite him again else if ( $canInviteGroup && $user2groupRelation ) { $rsUser = CUser::GetByID($user_id); if ($arRes = $rsUser->Fetch()) { $email = $arRes["EMAIL"]; } if (strlen($warningMessage) > 0) { $warningMessage .= "<br>"; } switch ($user2groupRelation) { case SONET_ROLES_BAN: $warningMessage .= str_replace("#EMAIL#", $email, GetMessage("SONET_GCE_USER_BANNED_IN_GROUP")); break; case SONET_ROLES_REQUEST: $warningMessage .= str_replace("#EMAIL#", $email, GetMessage("SONET_GCE_USER_REQUEST_SENT")); break; default: $warningMessage .= str_replace("#EMAIL#", $email, GetMessage(empty($_POST["GROUP_PROJECT"]) && $_POST["GROUP_PROJECT"] == 'Y' ? "SONET_GCE_USER_IN_GROUP_PROJECT" : "SONET_GCE_USER_IN_GROUP")); break; } } } if ( strlen($warningMessage) > 0 && !in_array("USERS", $arResult["ErrorFields"]) ) { $errorMessage .= $warningMessage.(!$bInvited ? "<br>".GetMessage("SONET_GCE_NO_USERS") : "")."."; $warningMessage = ""; } } if ( isset($arDepartmentIDs) && is_array($arDepartmentIDs) && !empty($arDepartmentIDs) ) { if ( $arParams["GROUP_ID"] > 0 && !empty($arResult["GROUP_PROPERTIES"]["UF_SG_DEPT"]) && !empty($arResult["GROUP_PROPERTIES"]["UF_SG_DEPT"]) && !empty($arResult["GROUP_PROPERTIES"]["UF_SG_DEPT"]["VALUE"]) && is_array($arResult["GROUP_PROPERTIES"]["UF_SG_DEPT"]["VALUE"]) ) { $arDepartmentIDs = array_unique(array_map('intval', array_merge($arDepartmentIDs, $arResult["GROUP_PROPERTIES"]["UF_SG_DEPT"]["VALUE"]))); } CSocNetGroup::Update($arResult["GROUP_ID"], array( 'UF_SG_DEPT' => $arDepartmentIDs )); } } if (!empty($arIntranetUsersEmails) && is_array($arIntranetUsersEmails)) { //if some e-mails belong to internal users and can't be used for invitation if (count($arIntranetUsersEmails) == 1) { $warningMessage .= str_replace("#EMAIL#", HtmlSpecialCharsEx(implode("", $arIntranetUsersEmails)), GetMessage("SONET_GCE_CANNOT_EMAIL_ADD")); } elseif (count($arIntranetUsersEmails) > 1) { $warningMessage .= str_replace("#EMAIL#", HtmlSpecialCharsEx(implode(", ", $arIntranetUsersEmails)), GetMessage("SONET_GCE_CANNOT_EMAILS_ADD")); } } //if no users were invited if ( $arResult["TAB"] == "invite" && empty($arUserIDs) && empty($arDepartmentIDs) ) { $errorMessage .= GetMessage("SONET_GCE_NO_USERS").". "; $arResult["ErrorFields"][] = "USERS"; } } if ( strlen($errorMessage) <= 0 && strlen($warningMessage) <= 0 ) { if ($arResult["IS_IFRAME"]) { if ( $arResult["IS_POPUP"] || $_GET["IFRAME_TYPE"] == "SIDE_SLIDER" ) { if (!array_key_exists("TAB", $arResult)) { $redirectPath = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_GROUP"], array("group_id" => $arResult["GROUP_ID"], "user_id" => $arResult["currentUserId"])); } else { $redirectPath = ""; } } else { if (!array_key_exists("TAB", $arResult)) { $redirectPath = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_GROUP_EDIT"], array("group_id" => $arResult["GROUP_ID"], "user_id" => $arResult["currentUserId"])); } elseif ($arResult["TAB"] == "edit") { $redirectPath = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_GROUP_EDIT"], array("group_id" => $arResult["GROUP_ID"], "user_id" => $arResult["currentUserId"])); } elseif ($arResult["TAB"] == "invite") { $redirectPath = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_GROUP_EDIT"], array("group_id" => $arResult["GROUP_ID"], "user_id" => $arResult["currentUserId"])); } $redirectPath .= (strpos($redirectPath, "?") === false ? "?" : "&")."POPUP=Y&SONET=Y"; if ($arResult["TAB"] == "invite") { $redirectPath .= (strpos($redirectPath, "?") === false ? "?" : "&")."tab=invite"; } elseif ($arResult["TAB"] == "edit") { $redirectPath .= (strpos($redirectPath, "?") === false ? "?" : "&")."tab=edit"; } if ($bFirstStepSuccess) { $redirectPath .= "&CALLBACK=GROUP&GROUP_ID=".$arResult["GROUP_ID"]; } else { $redirectPath .= "&CALLBACK=REFRESH"; } } } else { $redirectPath = CComponentEngine::MakePathFromTemplate( (isset($arFields["PROJECT"]) && $arFields["PROJECT"] == "Y" ? $arParams["PATH_TO_GROUP_GENERAL"] : $arParams["PATH_TO_GROUP"]), array( "group_id" => $arResult["GROUP_ID"], "user_id" => $arResult["currentUserId"] ) ); } if ($_POST["ajax_request"] == "Y") { $groupFieldsList = array( 'FIELDS' => array(), 'UF' => array(), ); __GCEGetGroup($arResult["GROUP_ID"], $groupFieldsList["UF"], $groupFieldsList["FIELDS"], "edit"); $APPLICATION->RestartBuffer(); echo CUtil::PhpToJsObject(array( 'MESSAGE' => 'SUCCESS', 'URL' => $redirectPath, 'GROUP' => array_merge($groupFieldsList, array('ID' => $arResult["GROUP_ID"])), 'ACTION' => ( !array_key_exists("TAB", $arResult) ? 'create' : $arResult["TAB"] ) )); require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_after.php"); die(); } else { $APPLICATION->RestartBuffer(); LocalRedirect($redirectPath); } } else { $arResult["WarningMessage"] = $warningMessage; $arResult["ErrorMessage"] = $errorMessage; if (!array_key_exists("TAB", $arResult)) { if ($bFirstStepSuccess) { __GCEGetGroup($arResult["GROUP_ID"], $arResult["GROUP_PROPERTIES"], $arResult["POST"]); $arResult["CALLBACK"] = "EDIT"; } if ($bSecondStepSuccess) { __GCE_GetFeatures($arResult["GROUP_ID"], $arResult["POST"]["FEATURES"]); } } if ( is_array($arResult["POST"]["USER_IDS"]) && !empty($arResult["POST"]["USER_IDS"]) ) { $dbUsers = CUser::GetList( ($sort_by = Array('last_name'=>'asc', 'IS_ONLINE'=>'desc')), ($dummy=''), array( "ID" => implode("|", $arResult["POST"]["USER_IDS"]), ), array( "FIELDS" => array("ID", "LAST_NAME", "NAME", "SECOND_NAME", "LOGIN", "PERSONAL_PHOTO", "WORK_POSITION", "PERSONAL_PROFESSION"), "SELECT" => array("UF_DEPARTMENT") ) ); while($arUser = $dbUsers->Fetch()) { $arUserTmp = array( "id" => "U".$arUser["ID"], "entityId" => $arUser["ID"], "name" => trim(CUser::FormatName(empty($arParams["NAME_TEMPLATE"]) ? CSite::GetNameFormat(false) : $arParams["NAME_TEMPLATE"], $arUser)), "avatar" => "", "desc" => $arUser["WORK_POSITION"] ? $arUser["WORK_POSITION"] : ($arUser["PERSONAL_PROFESSION"] ? $arUser["PERSONAL_PROFESSION"] : " ") ); $arResult["POST"]["USERS_FOR_JS"]["U".$arUser["ID"]] = $arUserTmp; if ( $arResult["bExtranetInstalled"] && $arResult["POST"]["IS_EXTRANET_GROUP"] == "Y" ) { $arResult["POST"]["USERS_FOR_JS_".(empty($arUser["UF_DEPARTMENT"]) || (is_array($arUser["UF_DEPARTMENT"]) && intval($arUser["UF_DEPARTMENT"][0]) <= 0) ? "E" : "I")]["U".$arUser["ID"]] = $arUserTmp; } } } if ($_POST["ajax_request"] == "Y") { ob_end_clean(); $arRes = array( 'ERROR' => $errorMessage, 'WARNING' => $warningMessage, 'USERS_ID' => $arResult["POST"]["USER_IDS"] ); echo CUtil::PhpToJsObject($arRes); die(); } } } else { $arResult["GROUP_ID"] = $arParams["GROUP_ID"]; } if ($arResult["ShowForm"] == "Input") { if (!array_key_exists("TAB", $arResult) || $arResult["TAB"] == "edit") { $arResult["Subjects"] = array(); $dbSubjects = CSocNetGroupSubject::GetList( array("SORT"=>"ASC", "NAME" => "ASC"), array("SITE_ID" => SITE_ID), false, false, array("ID", "NAME") ); while ($arSubject = $dbSubjects->getNext()) { $arResult["Subjects"][$arSubject["ID"]] = $arSubject["NAME"]; } $arResult["InitiatePerms"] = \Bitrix\Socialnetwork\Item\Workgroup::getInitiatePermOptionsList(array( 'project' => false )); $arResult["InitiatePermsProject"] = \Bitrix\Socialnetwork\Item\Workgroup::getInitiatePermOptionsList(array( 'project' => true )); $arResult["SpamPerms"] = array( UserToGroupTable::ROLE_OWNER => GetMessage("SONET_GCE_IP_OWNER"), UserToGroupTable::ROLE_MODERATOR => GetMessage("SONET_GCE_IP_MOD"), UserToGroupTable::ROLE_USER => GetMessage("SONET_GCE_IP_USER"), SONET_ROLES_ALL => GetMessage("SONET_GCE_IP_ALL"), ); } } if ( !array_key_exists("TAB", $arResult) || $arResult["TAB"] == "invite" ) { $arResult["DEST_SORT"] = CSocNetLogDestination::GetDestinationSort(array( "DEST_CONTEXT" => $arResult['destinationContextUsers'], "CODE_TYPE" => 'U' )); $arResult["DEST_USERS_LAST"] = array(); $arResult["LAST_SORT"] = CSocNetLogDestination::fillLastDestination($arResult["DEST_SORT"], $arResult["DEST_USERS_LAST"]); if (isset($arResult["DEST_USERS_LAST"]['USERS'])) { $arResult["DEST_USERS_LAST"] = $arResult["DEST_USERS_LAST"]['USERS']; } $arResult["siteDepartmentID"] = COption::GetOptionString("main", "wizard_departament", false, SITE_ID, true); if ( is_array($arResult["DEST_USERS_LAST"]) && !empty($arResult["DEST_USERS_LAST"]) ) { foreach($arResult["DEST_USERS_LAST"] as $key => $user_code) { if ($user_code == 'U'.$arResult["currentUserId"]) { unset($arResult["DEST_USERS_LAST"][$key]); break; } } } if ( is_array($arResult["DEST_USERS_LAST"]) && !empty($arResult["DEST_USERS_LAST"]) ) { $arLastUserID = array(); foreach($arResult["DEST_USERS_LAST"] as $key => $user_code) { if ($user_code == 'U'.$arResult["currentUserId"]) { unset($arResult["DEST_USERS_LAST"][$key]); continue; } if(preg_match('/^U(\d+)$/', $key, $match)) { $arLastUserID[] = $match[1]; } } if (!empty($arLastUserID)) { $dbUsers = CUser::GetList( ($sort_by = Array('last_name'=>'asc', 'IS_ONLINE'=>'desc')), ($dummy=''), array( "ACTIVE" => "Y", "ID" => implode("|", $arLastUserID), ), array( "FIELDS" => array("ID", "LAST_NAME", "NAME", "SECOND_NAME", "LOGIN", "PERSONAL_PHOTO", "WORK_POSITION", "PERSONAL_PROFESSION"), "SELECT" => array("UF_DEPARTMENT") ) ); while($arUser = $dbUsers->Fetch()) { if (intval($arResult["siteDepartmentID"]) > 0) { $arUserGroupCode = CAccess::GetUserCodesArray($arUser["ID"]); if (!in_array("DR".intval($arResult["siteDepartmentID"]), $arUserGroupCode)) { continue; } } $arFileTmp = CFile::ResizeImageGet( $arUser["PERSONAL_PHOTO"], array('width' => 32, 'height' => 32), BX_RESIZE_IMAGE_EXACT, false ); $arUserTmp = array( "id" => "U".$arUser["ID"], "entityId" => $arUser["ID"], "name" => trim(CUser::FormatName(empty($arParams["NAME_TEMPLATE"]) ? CSite::GetNameFormat(false) : $arParams["NAME_TEMPLATE"], $arUser)), "avatar" => (empty($arFileTmp['src'])? '': $arFileTmp['src']), "desc" => $arUser["WORK_POSITION"] ? $arUser["WORK_POSITION"] : ($arUser["PERSONAL_PROFESSION"] ? $arUser["PERSONAL_PROFESSION"] : " ") ); $key = ( !$arResult["bExtranetInstalled"] ? "USERS_FOR_JS" : ( empty($arUser["UF_DEPARTMENT"]) || ( is_array($arUser["UF_DEPARTMENT"]) && intval($arUser["UF_DEPARTMENT"][0]) <= 0 ) ? "USERS_FOR_JS_E" : "USERS_FOR_JS_I" ) ); if (!array_key_exists("U".$arUser["ID"], $arResult["POST"][$key])) { $arResult["POST"][$key]["U".$arUser["ID"]] = $arUserTmp; } } } } } $arResult["arSocNetFeaturesSettings"] = CSocNetAllowed::getAllowedFeatures(); } $arResult["step1Display"] = ( $arResult["USE_PRESETS"] == 'Y' && $arParams["GROUP_ID"] <= 0 ); $arResult["hidePresetSettings"] = ( $arResult["USE_PRESETS"] == 'Y' && false // temporary ); $arResult["URL_CANCEL"] = ( $arParams["GROUP_ID"] > 0 ? $arResult["Urls"]["Group"] : $strSiteWorkgroupsPage ); } CModule::IncludeModule('intranet'); $APPLICATION->SetTitle(Loc::getMessage( $arParams["GROUP_ID"] > 0 ? ( $arResult["POST"]["PROJECT"] == "Y" ? ($arResult["TAB"] == "invite" ? "SONET_GCE_TITLE_INVITE_PROJECT" : "SONET_GCE_TITLE_EDIT_PROJECT") : ($arResult["TAB"] == "invite" ? "SONET_GCE_TITLE_INVITE" : "SONET_GCE_TITLE_EDIT") ) : "SONET_GCE_TITLE_CREATE" )); $this->IncludeComponentTemplate();