Completed
Push — master ( 6b77c2...0b4fa8 )
by Andrii
04:43
created

CompositeStorage::getPage()   A

Complexity

Conditions 3
Paths 3

Size

Total Lines 10

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 12

Importance

Changes 0
Metric Value
dl 0
loc 10
ccs 0
cts 9
cp 0
rs 9.9332
c 0
b 0
f 0
cc 3
nc 3
nop 1
crap 12
1
<?php
2
/**
3
 * Yii2 Pages Module
4
 *
5
 * @link      https://github.com/hiqdev/yii2-module-pages
6
 * @package   yii2-module-pages
7
 * @license   BSD-3-Clause
8
 * @copyright Copyright (c) 2016-2017, HiQDev (http://hiqdev.com/)
9
 */
10
11
namespace hiqdev\yii2\modules\pages\storage;
12
13
use hiqdev\yii2\modules\pages\interfaces\StorageInterface;
14
use hiqdev\yii2\modules\pages\models\AbstractPage;
15
use hiqdev\yii2\modules\pages\models\PagesList;
16
use Yii;
17
use yii\base\BaseObject;
18
19
class CompositeStorage extends BaseObject implements StorageInterface
20
{
21
    /** @var StorageInterface[] */
22
    private $storages;
23
24
    public function init()
25
    {
26
        parent::init();
27
28
        foreach ($this->storages as $name => $config) {
29
            $this->storages[$name] = Yii::createObject($config);
30
        }
31
    }
32
33
    /**
34
     * @param string $pageName
35
     * @return AbstractPage|null
36
     */
37
    public function getPage(string $pageName): ?AbstractPage
38
    {
39
        foreach ($this->storages as $storage) {
40
            if (!is_null($page = $storage->getPage($pageName))) {
41
                return $page;
42
            }
43
        }
44
45
        return null;
46
    }
47
48
    /**
49
     * @param null|string $listId
50
     * @return PagesList|null
51
     */
52
    public function getList(?string $listId = null): ?PagesList
53
    {
54
        foreach ($this->storages as $storage) {
55
            if (!is_null($list = $storage->getList($listId))) {
56
                return $list;
57
            }
58
        }
59
60
        return null;
61
    }
62
63
    /**
64
     * @param StorageInterface[] $storages
65
     */
66
    public function setStorages(array $storages): void
67
    {
68
        $this->storages = $storages;
69
    }
70
}
71