Collection::getReplacementMap()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 10
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 7
CRAP Score 2

Importance

Changes 0
Metric Value
cc 2
eloc 6
nc 2
nop 0
dl 0
loc 10
ccs 7
cts 7
cp 1
crap 2
rs 10
c 0
b 0
f 0
1
<?php
2
namespace Aoe\Asdis\Domain\Model\Asset;
3
4
use Aoe\Asdis\Content\Replacement\Map;
5
use Aoe\Asdis\Domain\Model\Asset;
6
use Aoe\Asdis\Domain\Model\Asset\Collection as AssetCollection;
7
8
/**
9
 * Collection which contains asset objects.
10
 */
11
class Collection extends \ArrayIterator
12
{
13
    /**
14
     * @var array
15
     */
16
    private $elementHashes = [];
17
18
    /**
19
     * Needs to be called due to an extbase bug.
20
     * Hides optional parameters of parent constructor.
21
     */
22 14
    public function __construct()
23
    {
24 14
        parent::__construct();
25 14
    }
26
27
    /**
28
     * @param \Aoe\Asdis\Domain\Model\Asset $asset
29
     */
30 8
    public function append($asset)
31
    {
32 8
        $elementHash = $asset->getHash();
33 8
        if (in_array($elementHash, $this->elementHashes)) {
34 1
            return;
35
        }
36 8
        $this->elementHashes[] = $elementHash;
37 8
        parent::append($asset);
38 8
    }
39
40
    /**
41
     * @param \Aoe\Asdis\Domain\Model\Asset\Collection $assetCollection
42
     * @return \Aoe\Asdis\Domain\Model\Asset\Collection
43
     */
44 7
    public function merge(AssetCollection $assetCollection) {
45 7
        foreach($assetCollection as $asset) {
46 1
            $this->append($asset);
47
        }
48 7
        return $this;
49
    }
50
51
    /**
52
     * @return \Aoe\Asdis\Content\Replacement\Map
53
     */
54 1
    public function getReplacementMap() {
55 1
        $map = new Map();
56 1
        foreach($this as $asset) {
57
            /** @var \Aoe\Asdis\Domain\Model\Asset $asset */
58 1
            $map->addMapping(
59 1
                $asset->getMaskedPregQuotedOriginalPath(),
60 1
                $asset->getMask() . $asset->getUri() . $asset->getMask()
61
            );
62
        }
63 1
        return $map;
64
    }
65
}