Passed
Push — master ( db57c4...91b6a9 )
by
unknown
04:39
created

ModelWithLanguageSettings::init()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 6

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
nc 1
nop 0
dl 0
loc 6
rs 10
c 0
b 0
f 0
1
<?php
2
3
namespace andmemasin\language\models;
4
5
6
use andmemasin\myabstract\Settings;
7
use Yii;
8
9
/**
10
 * Class ModelWithLanguageSettings
11
 * @package andmemasin\language\models
12
 * @author Tõnis Ormisson <[email protected]>
13
 */
14
class ModelWithLanguageSettings extends Settings
15
{
16
    /** @var LanguageSettingsPack  indexed by language_id */
17
    public $languageSettingsPack;
18
19
    /** @var string */
20
    public $languageSettingsPackClass;
21
22
    /** {@inheritdoc} */
23
    public function init()
24
    {
25
        parent::init();
26
        /** @var LanguageSettingsPack $class */
27
        $class = $this->languageSettingsPackClass;
28
        $this->languageSettingsPack = new $class(['parent' => $this]);
29
30
    }
31
32
    /** {@inheritdoc} */
33
    public function load($data, $formName = null)
34
    {
35
36
        parent::load($data, $formName = null);
37
        $scope = \yii\helpers\StringHelper::basename($this->languageSettingsPack->languageSettingsClass);
38
        if (isset($data[$scope])) {
39
            foreach ($data[$scope] as $language_id => $attributes){
40
                $language = Language::findOne($language_id);
41
                /** @var BaseLanguageSettings $model */
42
                if(isset($this->languageSettingsPack->languageSettings[$language_id])){
43
                    $model = $this->languageSettingsPack->languageSettings[$language_id];
44
                }else{
45
                    $model = Yii::createObject([
46
                        'class' => $this->languageSettingsPack->languageSettingsClass,
47
                        'language'=>$language,
48
                    ]);
49
                }
50
                $model->settingsData = $attributes;
51
                $model->setSettings();
52
                $model->validate();
53
                $this->languageSettingsPack->languageSettings[$language_id] = $model;
54
55
                // load this language
56
                $this->addErrors($model->errors);
57
            }
58
            return true;
59
        }
60
        return false;
61
    }
62
63
64
    /** {@inheritdoc} */
65
    public function save(){
66
        parent::save();
67
        $this->languageSettingsPack->save();
68
        $this->addErrors($this->languageSettingsPack->errors);
69
        return empty($this->errors);
70
    }
71
72
73
}