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