PictureListWidget   A
last analyzed

Complexity

Total Complexity 7

Size/Duplication

Total Lines 63
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 1
Metric Value
wmc 7
eloc 35
dl 0
loc 63
rs 10
c 1
b 0
f 1

1 Method

Rating   Name   Duplication   Size   Complexity  
B run() 0 41 7
1
<?php
2
3
namespace floor12\files\components;
4
5
use floor12\files\assets\LightboxAsset;
6
use floor12\files\models\File;
7
use yii\base\Widget;
8
use yii\helpers\Html;
9
10
class PictureListWidget extends Widget
11
{
12
    /** @var File[] */
13
    public array $models = [];
14
    public $width;
15
    /** @var string */
16
    public $alt;
17
    /** @var string */
18
    public $classPicture;
19
    /** @var string */
20
    public $classImg;
21
    /** @var string */
22
    public $classUl;
23
    /** @var string */
24
    public $classLi;
25
    /** @var bool */
26
    public $passFirst = false;
27
    /** @var bool */
28
    public $lightbox = false;
29
    /** @var int */
30
    public $lightboxImageWidth = 1400;
31
32
    public function run(): string
33
    {
34
        if (empty($this->models)) {
35
            return '';
36
        }
37
38
        $renderedPictures = [];
39
40
        if ($this->passFirst && sizeof($this->models) > 0)
41
            $this->models = array_slice($this->models, 1);
42
43
        $lightboxKey = $this->models[0]->field . '-' . $this->models[0]->object_id;
44
45
        if ($this->lightbox) {
46
            LightboxAsset::register($this->getView());
47
        }
48
49
        foreach ($this->models as $model) {
50
51
            $widget = PictureWidget::widget([
52
                'model' => $model,
53
                'width' => $this->width,
54
                'classImg' => $this->classImg,
55
                'classPicture' => $this->classPicture,
56
                'alt' => $this->alt,
57
            ]);
58
59
            if ($this->lightbox) {
60
                $widget = Html::a($widget, $model->getPreviewWebPath($this->lightboxImageWidth), [
61
                    'data-lightbox' => $lightboxKey
62
                ]);
63
            }
64
65
            $renderedPictures[] = Html::tag(
66
                'li',
67
                $widget, [
68
                'class' => $this->classLi
69
            ]);
70
        }
71
        return Html::tag('ul', implode($renderedPictures), [
72
            'class' => $this->classUl
73
        ]);
74
    }
75
}