• Модуль: webdav
  • Путь к файлу: ~/bitrix/modules/webdav/classes/iblocksocnetbizproc.php
  • Класс: CIBlockDocumentWebdavSocnet
  • Вызов: CIBlockDocumentWebdavSocnet::GetUsersFromUserGroup
static function GetUsersFromUserGroup($group, $documentId)
{
	$diskId = self::processGetDiskIdByDocId((int)$documentId);
	if($diskId !== null)
	{
		return self::proxyToDisk(__FUNCTION__, array($group, $diskId));
	}

	$arResult = array();
	$arParameters = array(
		"IBlockId" => 0,
		"OwnerType" => "",
		"OwnerId" => 0);

	if ($documentId == '')
		return $arResult;

	$res = explode("_", $documentId);
	if (count($res) == 4)
	{
		$arParameters = array(
			"IBlockId" => $res[1],
			"OwnerType" => $res[2],
			"OwnerId" => $res[3]);
	}
	elseif (intval($documentId) > 0)
	{
		$db_res = CIBlockElement::GetList(
			array(),
			array("ID" => $documentId, "SHOW_NEW"=>"Y", "SHOW_HISTORY" => "Y"),
			false,
			false,
			array("ID", "IBLOCK_ID", "CREATED_BY", "IBLOCK_SECTION_ID")
		);
		$arElement = $db_res->Fetch();

		if (!$arElement)
			return false;

		$arParameters["IBlockId"] = $arElement["IBLOCK_ID"];
		$arParameters["CreatedBy"] = $arElement["CREATED_BY"];

		$dbSectionsChain = CIBlockSection::GetNavChain($arElement["IBLOCK_ID"], $arElement["IBLOCK_SECTION_ID"]);
		if ($arSect = $dbSectionsChain->Fetch())
		{
			$arParameters["OwnerType"] = (intval($arSect["SOCNET_GROUP_ID"]) > 0 ? "group" : "user");
			$arParameters["OwnerId"] = (intval($arSect["SOCNET_GROUP_ID"]) > 0 ? $arSect["SOCNET_GROUP_ID"] : $arSect["CREATED_BY"]);
		}
	}

	$sGroup = mb_strtoupper($group);
	if ($sGroup == "AUTHOR")
	{
		return array($arParameters["CreatedBy"]);
	}
	elseif ($sGroup == SONET_RELATIONS_TYPE_NONE)
	{
		return array($arParameters["OwnerId"]);
	}
	elseif ($arParameters["OwnerId"] <= 0)
	{
		return array();
	}


	if ($arParameters["OwnerType"] == "user")
	{
		$db_res = CSocNetUserRelations::GetRelatedUsers($arParameters["OwnerId"], SONET_RELATIONS_FRIEND);
		if ($db_res && $res = $db_res->Fetch())
		{
			do
			{
				if ($res["FIRST_USER_ID"] == $arParameters["OwnerId"])
					$arResult[] = $res["SECOND_USER_ID"];
				else
					$arResult[] = $res["FIRST_USER_ID"];
			} while ($res = $db_res->Fetch());
		}
	}
	else
	{

		if ($sGroup == SONET_ROLES_OWNER)
		{
			$arGroup = CSocNetGroup::GetByID($arParameters["OwnerId"]);
			if ($arGroup)
				$arResult[] = $arGroup["OWNER_ID"];
		}
		elseif ($sGroup == SONET_ROLES_MODERATOR)
		{
			$db = CSocNetUserToGroup::GetList(
				array(),
				array(
					"GROUP_ID" => $arParameters["OwnerId"],
					"<=ROLE" => SONET_ROLES_MODERATOR,
					"USER_ACTIVE" => "Y"
				),
				false,
				false,
				array("USER_ID")
			);
			while ($ar = $db->Fetch())
				$arResult[] = $ar["USER_ID"];
		}
		elseif ($sGroup == SONET_ROLES_USER)
		{
			$db = CSocNetUserToGroup::GetList(
				array(),
				array(
					"GROUP_ID" => $arParameters["OwnerId"],
					"<=ROLE" => SONET_ROLES_USER,
					"USER_ACTIVE" => "Y"
				),
				false,
				false,
				array("USER_ID")
			);
			while ($ar = $db->Fetch())
				$arResult[] = $ar["USER_ID"];
		}
	}

	return $arResult;
}