• Модуль: disk
  • Путь к файлу: ~/bitrix/modules/disk/lib/bitrix24disk/legacy/newdiskstorage.php
  • Класс: BitrixDiskBitrix24DiskLegacyNewDiskStorage
  • Вызов: NewDiskStorage::buildSelfTree
private function buildSelfTree(): array
{
	$deletedTypeNone = ObjectTable::DELETED_TYPE_NONE;
	$typeFolder = ObjectTable::TYPE_FOLDER;
	$storageId = $this->storage->getId();

	/** @var TreeNode[] $firstLevelLinks */
	$firstLevelLinks = array();
	$this->treeData = array();

	$maxVersion = -1;

	$query = new InternalsEntityQuery(ObjectTable::getEntity());
	$query
		->setSelect(array(
			'ID',
			'NAME',
			'REAL_OBJECT_ID',
			'PARENT_ID',
			'CODE',
			'CREATE_TIME',
			'SYNC_UPDATE_TIME',
		))
		->addFilter('STORAGE_ID', $storageId)
		->addFilter('DELETED_TYPE', $deletedTypeNone)
		->addFilter('TYPE', $typeFolder)
	;

	foreach ($query->exec() as $folderRow)
	{
		if($folderRow['CODE'] === SpecificFolder::CODE_FOR_UPLOADED_FILES)
		{
			continue;
		}

		$node = $this->fillTreeData($folderRow);
		if ($node->isLink() && !$this->isRealObjectExists($node))
		{
			$firstLevelLinks[] = $node;
		}

		$maxVersion = max($maxVersion, $folderRow['SYNC_UPDATE_TIME']->getTimestamp());
	}

	if (isset($this->treeData[$this->storage->getRootObjectId()]))
	{
		$this->treeData[$this->storage->getRootObjectId()]->setAsRoot();
	}

	return [$firstLevelLinks, $maxVersion];
}