Completed
Push — master ( ac8e8d...9b1a26 )
by Alexey
02:25
created

SocialLikes::getContentTitle()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 2

Importance

Changes 0
Metric Value
dl 0
loc 4
ccs 2
cts 2
cp 1
rs 10
c 0
b 0
f 0
cc 2
eloc 2
nc 2
nop 1
crap 2
1
<?php
2
3
namespace dominus77\sociallikesnext;
4
5
use yii\web\View;
6
use yii\web\JsExpression;
7
use yii\helpers\Json;
8
use yii\helpers\Html;
9
use dominus77\sociallikesnext\assets\SocialLikesAsset;
10
11
/**
12
 * Class SocialLikes
13
 * @package dominus77\sociallikesnext
14
 */
15
class SocialLikes extends \yii\base\Widget
16
{
17
    const THEME_FLAT = 'flat';
18
    const THEME_LIGHT = 'light';
19
    const THEME_BIRMAN = 'birman';
20
21
    /**
22
     * Theme buttons
23
     * @var string flat, light, birman
24
     */
25
    public $theme = 'flat';
26
27
    /**
28
     * Display name of social networks, default true
29
     * @var bool
30
     */
31
    public $title = true;
32
33
    /**
34
     * @var array
35
     */
36
    public $items = [];
37
38
    /**
39
     * @var array
40
     */
41
    public $containerOptions = [];
42
43
    /**
44
     * @var array
45
     */
46
    public $clientOptions = [];
47
48
    /**
49
     * @var array
50
     */
51
    public $clientButtons = [];
52
53
    /**
54
     * @var string
55
     */
56
    public $clientCss = '';
57
58
    /**
59
     * @var string
60
     */
61
    public $id;
62
63
    /**
64
     * Initializes the widget
65
     */
66 2
    public function init()
67
    {
68 2
        parent::init();
69 2
        $this->id = $this->id ? $this->id : $this->getId();
70 2
        $this->registerAssets();
71
        $containerOptions = [
72 2
            'id' => $this->id,
73
        ];
74 2
        $this->containerOptions = array_merge($this->containerOptions, $containerOptions);
75 2
        $this->containerOptions['class'] = (isset($this->containerOptions['class']) && !empty($this->containerOptions['class'])) ?
76 1
            $this->theme . ' social-likes ' . $this->containerOptions['class'] :
77 1
            $this->theme . ' social-likes';
78 2
    }
79
80
    /**
81
     * Run widget
82
     * @return string|void
83
     */
84 1
    public function run()
85
    {
86 1
        if (!empty($this->items)) {
87 1
            echo Html::beginTag('div', $this->containerOptions) . PHP_EOL;
88 1
            $this->renderItems($this->items);
89 1
            echo Html::endTag('div') . PHP_EOL;
90
        }
91 1
    }
92
93
    /**
94
     * Render items
95
     * @param array $items
96
     */
97 1
    public function renderItems($items = [])
98
    {
99 1
        foreach ($items as $key => $options) {
100 1
            if (isset($options['serviceOptions']))
101 1
                echo Html::tag('div', $this->getContentTitle($options) ? $key : '', $options['serviceOptions']) . PHP_EOL;
102
        }
103 1
    }
104
105
    /**
106
     * @param array $options
107
     * @return bool|mixed
108
     */
109 1
    protected function getContentTitle($options = [])
110
    {
111 1
        return (isset($options['title'])) ? $options['title'] : $this->title;
112
    }
113
114
    /**
115
     * Register client assets
116
     */
117 2
    protected function registerAssets()
118
    {
119 2
        $view = $this->getView();
120 2
        SocialLikesAsset::register($view);
121 2
        $this->registerClientCss($view);
122 2
        $this->registerClientButton($view);
123 2
        $this->registerClientOptions($view);
124 2
    }
125
126
    /**
127
     * @param null|\yii\web\View $view
128
     */
129 2
    protected function registerClientCss($view = null)
130
    {
131 2
        if (!empty($this->clientCss)) {
132 1
            $view->registerCss($this->clientCss);
0 ignored issues
show
Bug introduced by
It seems like $view is not always an object, but can also be of type null. Maybe add an additional type check?

If a variable is not always an object, we recommend to add an additional type check to ensure your method call is safe:

function someFunction(A $objectMaybe = null)
{
    if ($objectMaybe instanceof A) {
        $objectMaybe->doSomething();
    }
}
Loading history...
133
        }
134 2
    }
135
136
    /**
137
     * @param null|\yii\web\View $view
138
     */
139 2
    protected function registerClientButton($view = null)
140
    {
141 2
        if (!empty($this->clientButtons)) {
142 1
            $clientButtons = Json::encode($this->clientButtons);
143 1
            $script = new JsExpression("
144 1
                var socialLikesButtons = {$clientButtons}
145
            ");
146 1
            $view->registerJs($script, View::POS_BEGIN);
0 ignored issues
show
Bug introduced by
It seems like $view is not always an object, but can also be of type null. Maybe add an additional type check?

If a variable is not always an object, we recommend to add an additional type check to ensure your method call is safe:

function someFunction(A $objectMaybe = null)
{
    if ($objectMaybe instanceof A) {
        $objectMaybe->doSomething();
    }
}
Loading history...
147
        }
148 2
    }
149
150
    /**
151
     * @param null|\yii\web\View $view
152
     */
153 2
    protected function registerClientOptions($view = null)
154
    {
155 2
        if (!empty($this->clientOptions)) {
156 1
            $options = Json::encode($this->clientOptions);
157 1
            $script = new JsExpression("
158 1
                var container = document.getElementById('{$this->id}');
159
                var socialLikes = SocialLikesNext.default;
160 1
                socialLikes(container, {$options});
161
            ");
162 1
            $view->registerJs($script);
0 ignored issues
show
Bug introduced by
It seems like $view is not always an object, but can also be of type null. Maybe add an additional type check?

If a variable is not always an object, we recommend to add an additional type check to ensure your method call is safe:

function someFunction(A $objectMaybe = null)
{
    if ($objectMaybe instanceof A) {
        $objectMaybe->doSomething();
    }
}
Loading history...
163
        }
164 2
    }
165
}
166