GalleryBehavior.php
1.76 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
<?php
namespace common\behaviors;
use Exception;
use yii\base\Behavior;
use yii\db\ActiveRecord;
class GalleryBehavior extends Behavior
{
    /**
     * @var array Массив аттрибутов которые должны быть обработаны с HtmlPurifier
     */
    public $attributes = [];
    /** @var string название переменной в которой храниться галлерея */
    public $galleryRow = '';
    /** @var string сценарий */
    public $scenario = 'backend';
    /** @var string filePath */
    public $path = '';
    /** @var   */
    private $_galleryManagerNamespace = \common\components\GalleryManager::class;
    /** @var null gallery manager */
    private $_galleryManagerModel = null;
    public function events()
    {
        return [
            ActiveRecord::EVENT_BEFORE_INSERT => 'saveGallery',
            ActiveRecord::EVENT_BEFORE_UPDATE => 'saveGallery',
        ];
    }
    /**
     * Save seo model
     */
    public function saveGallery()
    {
        $model = $this->owner;
        if (isset($model->{$this->galleryRow})) {
            $galleryManager = $this->getGalleryManager();
            $model->{$this->galleryRow} = $galleryManager->getOptionsForSaving($model->{$this->galleryRow}, $this->path);
            if (! $model->isScenario($this->scenario)) {
                throw new Exception(get_class($model) . '::' . $this->scenario . " scenario doesn't exist");
            }
        }
    }
    /**
     * Gallery manager
     * @return null
     */
    private function getGalleryManager()
    {
        if ($this->_galleryManagerModel === null) {
            $this->_galleryManagerModel = new $this->_galleryManagerNamespace();
        }
        return $this->_galleryManagerModel;
    }
}