• Модуль: disk
  • Путь к файлу: ~/bitrix/modules/disk/lib/bitrix24disk/subscribermanager.php
  • Класс: BitrixDiskBitrix24DiskSubscriberManager
  • Вызов: SubscriberManager::preloadSharingsForSubtree
public function preloadSharingsForSubtree(Folder $folder)
{
	$declineStatus = SharingTable::STATUS_IS_DECLINED;
	$userType = SharingTable::TYPE_TO_USER;

	$sharingRowIterator = Application::getConnection()->query("
		SELECT sharing.*, path.OBJECT_ID PATH_OBJECT_ID
		FROM b_disk_object_path path
			LEFT JOIN b_disk_sharing sharing ON sharing.REAL_OBJECT_ID = path.OBJECT_ID
		WHERE 
			(path.PARENT_ID = {$folder->getId()} AND sharing.STATUS <> {$declineStatus} AND sharing.TYPE = {$userType}) OR
			(path.PARENT_ID = {$folder->getId()} AND sharing.ID IS NULL)
	");

	foreach ($sharingRowIterator as $row)
	{
		$objectId = $row['PATH_OBJECT_ID'];
		unset($row['PATH_OBJECT_ID']);

		if (!isset($this->sharingsByObject[$objectId]))
		{
			$this->sharingsByObject[$objectId] = array();
		}

		if (array_filter($row))
		{
			$this->sharingsByObject[$objectId][] = Sharing::buildFromArray($row);
		}
	}
}