• Модуль: disk
  • Путь к файлу: ~/bitrix/modules/disk/lib/bizprocdocument.php
  • Класс: BitrixDiskBizProcDocument
  • Вызов: BizProcDocument::getUsersFromUserGroup
static function getUsersFromUserGroup($group, $documentId)
{
	if(mb_substr($documentId, 0, 8) == "STORAGE_")
	{
		$storageId = self::getStorageIdByType($documentId);
	}
	else
	{
		if(is_array($documentId))
		{
			$documentId = intval($documentId[2]);
		}
		/** @var File $file */
		$file = File::loadById($documentId);
		if(!$file)
		{
			return array();
		}
		$storageId = $file->getStorageId();
	}

	if(mb_strtolower($group) == "author")
	{
		$documentId = intval($documentId);
		if($documentId <= 0)
		{
			return array();
		}
		/** @var File $file */
		$file = File::loadById($documentId);
		if(!$file)
		{
			return array();
		}

		return array($file->getCreatedBy());
	}

	if($storageId)
	{
		$storage = Storage::loadById($storageId, array('ROOT_OBJECT'));
		if($storage->getProxyType() instanceof ProxyTypeGroup)
		{
			$entityId = $storage->getEntityId();
			$group = mb_strtoupper($group);
			if(Loader::includeModule("socialnetwork"))
			{
				$listUserGroup = array();
				if ($group == SONET_ROLES_OWNER)
				{
					$listGroup = CSocNetGroup::getByID($entityId);
					if ($listGroup)
					{
						$listUserGroup[] = $listGroup["OWNER_ID"];
					}
				}
				elseif ($group == SONET_ROLES_MODERATOR)
				{
					$dbRes = CSocNetUserToGroup::getList(
						array(),
						array(
							"GROUP_ID" => $entityId,
							"<=ROLE" => SONET_ROLES_MODERATOR,
							"USER_ACTIVE" => "Y"
						),
						false,
						false,
						array("USER_ID")
					);
					while ($res = $dbRes->fetch())
					{
						$listUserGroup[] = $res["USER_ID"];
					}
				}
				elseif ($group == SONET_ROLES_USER)
				{
					$dbRes = CSocNetUserToGroup::getList(
						array(),
						array(
							"GROUP_ID" => $entityId,
							"<=ROLE" => SONET_ROLES_USER,
							"USER_ACTIVE" => "Y"
						),
						false,
						false,
						array("USER_ID")
					);
					while ($res = $dbRes->fetch())
					{
						$listUserGroup[] = $res["USER_ID"];
					}
				}
				return $listUserGroup;
			}
		}
	}

	$group = intval($group);
	if($group <= 0)
	{
		return array();
	}

	$userIds = array();

	$filter = ['ACTIVE' => 'Y', 'IS_REAL_USER' => true];
	if($group != 2)
	{
		$filter["GROUPS_ID"] = $group;
	}

	$query = CUser::getList("ID", "ASC", $filter, ['FIELDS' => ['ID']]);
	while($user = $query->fetch())
	{
		$userIds[] = $user["ID"];
	}
	return $userIds;
}