• Модуль: 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;
}