Completed
Branch v4 (4e54dd)
by Pieter
03:26
created

FilestoragePager   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 52
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 1
Metric Value
eloc 21
dl 0
loc 52
rs 10
c 1
b 0
f 1
wmc 5

3 Methods

Rating   Name   Duplication   Size   Complexity  
A getNbResults() 0 7 2
A __construct() 0 6 1
A getSlice() 0 13 2
1
<?php
2
3
namespace W2w\Lib\Apie\Plugins\FileStorage\Pagers;
4
5
use Iterator;
6
use LimitIterator;
7
use Pagerfanta\Adapter\AdapterInterface;
8
use Symfony\Component\Finder\Finder;
9
use Symfony\Component\Finder\SplFileInfo;
10
use W2w\Lib\Apie\Plugins\FileStorage\DataLayers\FileStorageDataLayer;
11
12
class FilestoragePager implements AdapterInterface
13
{
14
    /**
15
     * @var FileStorageDataLayer
16
     */
17
    private $dataLayer;
18
19
    /**
20
     * @var Iterator
21
     */
22
    private $iterator;
23
24
    /**
25
     * @var string
26
     */
27
    private $resourceClass;
28
29
    /**
30
     * @var array
31
     */
32
    private $context;
33
34
    public function __construct(FileStorageDataLayer $dataLayer, Iterator $iterator, string $resourceClass, array $context)
35
    {
36
        $this->dataLayer = $dataLayer;
37
        $this->iterator = $iterator;
38
        $this->resourceClass = $resourceClass;
39
        $this->context = $context;
40
    }
41
42
    public function getNbResults()
43
    {
44
        $count = 0;
45
        for ($this->iterator->rewind(); $this->iterator->valid(); $this->iterator->next()) {
46
            $count++;
47
        }
48
        return $count;
49
    }
50
51
    public function getSlice($offset, $length)
52
    {
53
        $list = new LimitIterator(
54
            $this->iterator,
55
            $offset,
56
            $length
57
        );
58
        $result = [];
59
        foreach ($list as $file) {
60
            /** @var SplFileInfo $file */
61
            $result[] = $this->dataLayer->retrieve($this->resourceClass, $file->getBasename(), $this->context);
62
        }
63
        return $result;
64
    }
65
}
66