%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();