BricksSiteReview::designConfig()   B
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 230
Code Lines 153

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 153
c 0
b 0
f 0
dl 0
loc 230
rs 8
cc 1
nc 1
nop 0

How to fix   Long Method   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

1
<?php
2
3
namespace GeminiLabs\SiteReviews\Integrations\Bricks;
4
5
use GeminiLabs\SiteReviews\Shortcodes\SiteReviewShortcode;
6
7
class BricksSiteReview extends BricksElement
8
{
9
    public function designConfig(): array
10
    {
11
        $config = [
12
            'style_align' => [
13
                'css' => [
14
                    [
15
                        'selector' => '.glsr:not([data-theme]) .glsr-review',
16
                        'property' => 'text-align',
17
                    ],
18
                    [
19
                        'selector' => '.glsr:not([data-theme]) .nav-links',
20
                        'property' => 'text-align',
21
                    ],
22
                    [
23
                        'selector' => '.glsr:not([data-theme]) .glsr-ajax-loadmore',
24
                        'property' => 'display',
25
                        'value' => 'flex',
26
                    ],
27
                    [
28
                        'required' => 'left',
29
                        'selector' => '.glsr:not([data-theme]) .glsr-review',
30
                        'property' => 'justify-content',
31
                        'value' => 'start',
32
                    ],
33
                    [
34
                        'required' => 'left',
35
                        'selector' => '.glsr:not([data-theme]) .glsr-review-rating',
36
                        'property' => 'flex',
37
                        'value' => '0',
38
                    ],
39
                    [
40
                        'required' => 'left',
41
                        'selector' => '.glsr:not([data-theme]) .glsr-review-date',
42
                        'property' => 'flex',
43
                        'value' => '1',
44
                    ],
45
                    [
46
                        'required' => 'left',
47
                        'selector' => '.glsr:not([data-theme]) .glsr-review-date',
48
                        'property' => 'justify-content',
49
                        'value' => 'start',
50
                    ],
51
                    [
52
                        'required' => 'left',
53
                        'selector' => '.glsr:not([data-theme]) .glsr-review-actions',
54
                        'property' => 'justify-content',
55
                        'value' => 'start',
56
                    ],
57
                    [
58
                        'required' => 'left',
59
                        'selector' => '.glsr:not([data-theme]) .glsr-review-author_actions',
60
                        'property' => 'justify-content',
61
                        'value' => 'start',
62
                    ],
63
                    [
64
                        'required' => 'left',
65
                        'selector' => '.glsr:not([data-theme]) .glsr-ajax-loadmore',
66
                        'property' => 'justify-content',
67
                        'value' => 'start',
68
                    ],
69
                    [
70
                        'required' => 'center',
71
                        'selector' => '.glsr:not([data-theme]) .glsr-review',
72
                        'property' => 'justify-content',
73
                    ],
74
                    [
75
                        'required' => 'center',
76
                        'selector' => '.glsr:not([data-theme]) .glsr-review-rating',
77
                        'property' => 'flex',
78
                        'value' => 'auto',
79
                    ],
80
                    [
81
                        'required' => 'center',
82
                        'selector' => '.glsr:not([data-theme]) .glsr-review-rating',
83
                        'property' => 'justify-content',
84
                        'value' => 'end',
85
                    ],
86
                    [
87
                        'required' => 'center',
88
                        'selector' => '.glsr:not([data-theme]) .glsr-review-date',
89
                        'property' => 'flex',
90
                        'value' => 'auto',
91
                    ],
92
                    [
93
                        'required' => 'center',
94
                        'selector' => '.glsr:not([data-theme]) .glsr-review-date',
95
                        'property' => 'justify-content',
96
                        'value' => 'start',
97
                    ],
98
                    [
99
                        'required' => 'center',
100
                        'selector' => '.glsr:not([data-theme]) .glsr-review-actions',
101
                        'property' => 'justify-content',
102
                    ],
103
                    [
104
                        'required' => 'center',
105
                        'selector' => '.glsr:not([data-theme]) .glsr-review-author_actions',
106
                        'property' => 'justify-content',
107
                    ],
108
                    [
109
                        'required' => 'center',
110
                        'selector' => '.glsr:not([data-theme]) .glsr-ajax-loadmore',
111
                        'property' => 'justify-content',
112
                    ],
113
                    [
114
                        'required' => 'right',
115
                        'selector' => '.glsr:not([data-theme]) .glsr-review',
116
                        'property' => 'justify-content',
117
                        'value' => 'end',
118
                    ],
119
                    [
120
                        'required' => 'right',
121
                        'selector' => '.glsr:not([data-theme]) .glsr-review-rating',
122
                        'property' => 'flex',
123
                        'value' => '1',
124
                    ],
125
                    [
126
                        'required' => 'right',
127
                        'selector' => '.glsr:not([data-theme]) .glsr-review-rating',
128
                        'property' => 'justify-content',
129
                        'value' => 'end',
130
                    ],
131
                    [
132
                        'required' => 'right',
133
                        'selector' => '.glsr:not([data-theme]) .glsr-review-date',
134
                        'property' => 'flex',
135
                        'value' => '0',
136
                    ],
137
                    [
138
                        'required' => 'right',
139
                        'selector' => '.glsr:not([data-theme]) .glsr-review-actions',
140
                        'property' => 'justify-content',
141
                        'value' => 'end',
142
                    ],
143
                    [
144
                        'required' => 'right',
145
                        'selector' => '.glsr:not([data-theme]) .glsr-review-author_actions',
146
                        'property' => 'justify-content',
147
                        'value' => 'end',
148
                    ],
149
                    [
150
                        'required' => 'right',
151
                        'selector' => '.glsr:not([data-theme]) .glsr-ajax-loadmore',
152
                        'property' => 'justify-content',
153
                        'value' => 'end',
154
                    ],
155
                ],
156
                'exclude' => ['auto', 'justify'],
157
                'group' => 'design',
158
                'inline' => true,
159
                'label' => esc_html_x('Alignment', 'admin-text', 'site-reviews'),
160
                'rerender' => true,
161
                'tab' => 'content',
162
                'themeStyle' => true,
163
                'type' => 'text-align',
164
            ],
165
            'style_heading' => [
166
                'css' => [
167
                    [
168
                        'selector' => '.glsr:not([data-theme]) h2, .glsr:not([data-theme]) h3, .glsr:not([data-theme]) h4',
169
                        'property' => 'font',
170
                    ],
171
                ],
172
                'group' => 'design',
173
                'label' => esc_html_x('Heading', 'admin-text', 'site-reviews'),
174
                'tab' => 'content',
175
                'themeStyle' => true,
176
                'type' => 'typography',
177
            ],
178
            'style_text' => [
179
                'css' => [
180
                    [
181
                        'selector' => '.glsr:not([data-theme])',
182
                        'property' => 'font',
183
                    ],
184
                ],
185
                'group' => 'design',
186
                'label' => esc_html_x('Text', 'admin-text', 'site-reviews'),
187
                'tab' => 'content',
188
                'themeStyle' => true,
189
                'type' => 'typography',
190
            ],
191
            'style_rating_size' => [
192
                'css' => [
193
                    [
194
                        'selector' => '.glsr:not([data-theme])',
195
                        'property' => '--glsr-review-star',
196
                    ],
197
                ],
198
                'group' => 'design',
199
                'hasDynamicData' => false,
200
                'hasVariables' => true,
201
                'inline' => true,
202
                'label' => esc_html_x('Star Size', 'admin-text', 'site-reviews'),
203
                'placeholder' => '',
204
                'tab' => 'content',
205
                'themeStyle' => true,
206
                'type' => 'number',
207
                'units' => true,
208
            ],
209
            'style_rating_color' => [
210
                'css' => [
211
                    [
212
                        'selector' => '.glsr:not([data-theme]) .glsr-star',
213
                        'property' => 'mask-size',
214
                        'value' => '100%',
215
                    ],
216
                    [
217
                        'selector' => '.glsr:not([data-theme]) .glsr-star',
218
                        'property' => 'background',
219
                    ],
220
                    [
221
                        'selector' => '.glsr:not([data-theme]) .glsr-star-full',
222
                        'property' => 'mask-image',
223
                        'value' => 'var(--glsr-star-full)',
224
                    ],
225
                    [
226
                        'selector' => '.glsr:not([data-theme]) .glsr-star-empty',
227
                        'property' => 'mask-image',
228
                        'value' => 'var(--glsr-star-empty)',
229
                    ],
230
                ],
231
                'group' => 'design',
232
                'label' => esc_html_x('Star Color', 'admin-text', 'site-reviews'),
233
                'tab' => 'content',
234
                'themeStyle' => true,
235
                'type' => 'color',
236
            ],
237
        ];
238
        return $config;
239
    }
240
241
    public function render()
242
    {
243
        if (!$this->shortcodeInstance()->hasVisibleFields($this->settings)) {
244
            $this->render_element_placeholder([
245
                'title' => esc_html_x('You have hidden all of the fields.', 'admin-text', 'site-reviews'),
246
            ]);
247
            return;
248
        }
249
        parent::render();
250
    }
251
252
    public static function shortcodeClass(): string
253
    {
254
        return SiteReviewShortcode::class;
255
    }
256
}
257