- Модуль: disk
- Путь к файлу: ~/bitrix/modules/disk/lib/bitrix24disk/legacy/newdiskstorage.php
- Класс: BitrixDiskBitrix24DiskLegacyNewDiskStorage
- Вызов: NewDiskStorage::snapshotFromLinks
private function snapshotFromLinks(FixedArray $items, PageState $pageState, $internalVersion, $pageSize = self::SNAPSHOT_PAGE_SIZE)
{
if($pageState->getStep() !== $pageState::STEP_SYMLINKS)
{
return;
}
$expectedFirstId = $pageState->getNextId();
$countElementPushedFromLinks = 0;
$countBeforeStart = $items->getCountOfPushedElements();
foreach($this->getSymlinkFoldersSortedById() as $link)
{
if(empty($expectedFirstId) || $link->id >= $expectedFirstId)
{
if($items->getCountOfPushedElements() === self::SNAPSHOT_PAGE_SIZE)
{
$pageState->setStep($pageState::STEP_SYMLINKS);
if(!$pageState->hasNextId())
{
//if the page state does not have next id, that means we have to work with next link.
//if the page state has next id, that means we have to continue process to get snapshot (next page).
$pageState->setNextId($link->id);
}
return;
}
if(!$link->isReplica())
{
$this->snapshotFromLink($link, $items, $pageState, $internalVersion, $pageSize - $countElementPushedFromLinks);
}
$countElementPushedFromLinks = $items->getCountOfPushedElements() - $countBeforeStart;
}
elseif($link->id < $expectedFirstId)
{
continue;
}
}
unset($link);
if(!$pageState->hasNextId())
{
$pageState->reset();
}
}