- Модуль: extranet
- Путь к файлу: ~/bitrix/modules/extranet/classes/general/extranet.php
- Класс: CExtranet
- Вызов: CExtranet::OnSocNetGroupUpdateHandler
static function OnSocNetGroupUpdateHandler($ID, $arFields): bool
{
global $bArchiveBeforeUpdate, $APPLICATION;
if (!isset($arFields["CLOSED"]))
{
return true;
}
if ((int)$ID <= 0)
{
return false;
}
if (!Loader::includeModule('socialnetwork'))
{
return false;
}
if (Loader::includeModule('extranet'))
{
$arSocNetGroup = CSocNetGroup::GetByID($ID);
if (!$arSocNetGroup)
{
$APPLICATION->ThrowException(Loc::getMessage("SONET_NO_GROUP"), "ERROR_NO_GROUP");
return false;
}
$ExtranetSiteID = self::GetExtranetSiteID();
$arGroupSites = array();
$rsGroupSite = CSocNetGroup::GetSite($ID);
while($arGroupSite = $rsGroupSite->Fetch())
{
$arGroupSites[] = $arGroupSite["LID"];
}
if (!in_array($ExtranetSiteID, $arGroupSites))
{
return true;
}
}
else
{
return true;
}
$bFromArchiveToOpen = $bFromOpenToArchive = false;
if ($arFields["CLOSED"] === "Y" && !$bArchiveBeforeUpdate)
{
$bFromOpenToArchive = true;
}
elseif ($arFields["CLOSED"] !== "Y" && $bArchiveBeforeUpdate)
{
$bFromArchiveToOpen = true;
}
$arEmail = array();
if ($bFromOpenToArchive || $bFromArchiveToOpen)
{
$dbRequests = CSocNetUserToGroup::GetList(
array(),
array(
"GROUP_ID" => $ID,
"<=ROLE" => SONET_ROLES_USER,
"USER_ACTIVE" => "Y"
),
false,
array(),
array("ID", "USER_ID", "USER_NAME", "USER_LAST_NAME", "USER_EMAIL")
);
if ($dbRequests)
{
while ($arRequests = $dbRequests->GetNext())
{
$arEmail[] = array(
"NAME" => $arRequests["USER_NAME"],
"LAST_NAME" => $arRequests["USER_LAST_NAME"],
"EMAIL" => $arRequests["USER_EMAIL"]
);
}
}
}
if ($bFromOpenToArchive)
{
foreach($arEmail as $recipient)
{
$arEventFields = array(
"WG_ID" => $ID,
"WG_NAME" => $arFields["NAME"],
"MEMBER_NAME" => $recipient["NAME"],
"MEMBER_LAST_NAME" => $recipient["LAST_NAME"],
"MEMBER_EMAIL" => $recipient["EMAIL"],
);
CEvent::Send("EXTRANET_WG_TO_ARCHIVE", SITE_ID, $arEventFields);
}
}
if ($bFromArchiveToOpen)
{
foreach($arEmail as $recipient)
{
$arEventFields = array(
"WG_ID" => $ID,
"WG_NAME" => $arFields["NAME"],
"MEMBER_NAME" => $recipient["NAME"],
"MEMBER_LAST_NAME" => $recipient["LAST_NAME"],
"MEMBER_EMAIL" => $recipient["EMAIL"],
);
CEvent::Send("EXTRANET_WG_FROM_ARCHIVE", SITE_ID, $arEventFields);
}
}
return true;
}