FluidTYPO3\Vhs\Traits\SlideViewHelperTrait::getSlideRecords PHP Метод

getSlideRecords() защищенный Метод

Get records, optionally sliding up the page rootline
protected getSlideRecords ( integer $pageUid, integer $limit = null ) : array
$pageUid integer
$limit integer
Результат array
    protected function getSlideRecords($pageUid, $limit = null)
    {
        if (null === $limit && false === empty($this->arguments['limit'])) {
            $limit = (int) $this->arguments['limit'];
        }
        $slide = (int) $this->arguments['slide'];
        $slideCollectReverse = (bool) $this->arguments['slideCollectReverse'];
        $slideCollect = (int) $this->arguments['slideCollect'];
        if (0 < $slideCollect) {
            $slide = $slideCollect;
        }
        // find out which storage page UIDs to read from, respecting slide depth
        $storagePageUids = [];
        if (0 === $slide) {
            $storagePageUids[] = $pageUid;
        } else {
            $reverse = false;
            if (true === $slideCollectReverse && 0 !== $slideCollect) {
                $reverse = true;
            }
            $rootLine = $this->getPageService()->getRootLine($pageUid, null, $reverse);
            if (-1 !== $slide) {
                if (true === $reverse) {
                    $rootLine = array_slice($rootLine, -$slide);
                } else {
                    $rootLine = array_slice($rootLine, 0, $slide);
                }
            }
            foreach ($rootLine as $page) {
                $storagePageUids[] = (int) $page['uid'];
            }
        }
        // select records, respecting slide and slideCollect.
        $records = [];
        do {
            $storagePageUid = array_shift($storagePageUids);
            $limitRemaining = null;
            if (null !== $limit) {
                $limitRemaining = $limit - count($records);
                if (0 >= $limitRemaining) {
                    break;
                }
            }
            $recordsFromPageUid = $this->getSlideRecordsFromPage($storagePageUid, $limitRemaining);
            if (0 < count($recordsFromPageUid)) {
                $records = array_merge($records, $recordsFromPageUid);
                if (0 === $slideCollect) {
                    // stop collecting because argument said so and we've gotten at least one record now.
                    break;
                }
            }
        } while (false === empty($storagePageUids));
        return $records;
    }