Passed
Push — develop ( 36eccf...39ad60 )
by Paul
13:49
created

BricksSiteReviews::designConfig()   B

Complexity

Conditions 1
Paths 1

Size

Total Lines 315
Code Lines 219

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 0
Metric Value
eloc 219
dl 0
loc 315
ccs 0
cts 314
cp 0
rs 8
c 0
b 0
f 0
cc 1
nc 1
nop 0
crap 2

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\Elements;
4
5
use GeminiLabs\SiteReviews\Integrations\Bricks\BricksElement;
6
use GeminiLabs\SiteReviews\Shortcodes\SiteReviewsShortcode;
7
8
class BricksSiteReviews extends BricksElement
9
{
10
    public function designConfig(): array
11
    {
12
        $config = [
13
            'style_align' => [
14
                'css' => [
15
                    [
16
                        'selector' => '.glsr:not([data-theme]) .glsr-review',
17
                        'property' => 'text-align',
18
                    ],
19
                    [
20
                        'selector' => '.glsr:not([data-theme]) .nav-links',
21
                        'property' => 'text-align',
22
                    ],
23
                    [
24
                        'selector' => '.glsr:not([data-theme]) .glsr-ajax-loadmore',
25
                        'property' => 'display',
26
                        'value' => 'flex',
27
                    ],
28
                    [
29
                        'required' => 'left',
30
                        'selector' => '.glsr:not([data-theme]) .glsr-review',
31
                        'property' => 'justify-content',
32
                        'value' => 'start',
33
                    ],
34
                    [
35
                        'required' => 'left',
36
                        'selector' => '.glsr:not([data-theme]) .glsr-review-rating',
37
                        'property' => 'flex',
38
                        'value' => '0',
39
                    ],
40
                    [
41
                        'required' => 'left',
42
                        'selector' => '.glsr:not([data-theme]) .glsr-review-date',
43
                        'property' => 'flex',
44
                        'value' => '1',
45
                    ],
46
                    [
47
                        'required' => 'left',
48
                        'selector' => '.glsr:not([data-theme]) .glsr-review-date',
49
                        'property' => 'justify-content',
50
                        'value' => 'start',
51
                    ],
52
                    [
53
                        'required' => 'left',
54
                        'selector' => '.glsr:not([data-theme]) .glsr-review-actions',
55
                        'property' => 'justify-content',
56
                        'value' => 'start',
57
                    ],
58
                    [
59
                        'required' => 'left',
60
                        'selector' => '.glsr:not([data-theme]) .glsr-review-author_actions',
61
                        'property' => 'justify-content',
62
                        'value' => 'start',
63
                    ],
64
                    [
65
                        'required' => 'left',
66
                        'selector' => '.glsr:not([data-theme]) .glsr-ajax-loadmore',
67
                        'property' => 'justify-content',
68
                        'value' => 'start',
69
                    ],
70
                    [
71
                        'required' => 'center',
72
                        'selector' => '.glsr:not([data-theme]) .glsr-review',
73
                        'property' => 'justify-content',
74
                    ],
75
                    [
76
                        'required' => 'center',
77
                        'selector' => '.glsr:not([data-theme]) .glsr-review-rating',
78
                        'property' => 'flex',
79
                        'value' => 'auto',
80
                    ],
81
                    [
82
                        'required' => 'center',
83
                        'selector' => '.glsr:not([data-theme]) .glsr-review-rating',
84
                        'property' => 'justify-content',
85
                        'value' => 'end',
86
                    ],
87
                    [
88
                        'required' => 'center',
89
                        'selector' => '.glsr:not([data-theme]) .glsr-review-date',
90
                        'property' => 'flex',
91
                        'value' => 'auto',
92
                    ],
93
                    [
94
                        'required' => 'center',
95
                        'selector' => '.glsr:not([data-theme]) .glsr-review-date',
96
                        'property' => 'justify-content',
97
                        'value' => 'start',
98
                    ],
99
                    [
100
                        'required' => 'center',
101
                        'selector' => '.glsr:not([data-theme]) .glsr-review-actions',
102
                        'property' => 'justify-content',
103
                    ],
104
                    [
105
                        'required' => 'center',
106
                        'selector' => '.glsr:not([data-theme]) .glsr-review-author_actions',
107
                        'property' => 'justify-content',
108
                    ],
109
                    [
110
                        'required' => 'center',
111
                        'selector' => '.glsr:not([data-theme]) .glsr-ajax-loadmore',
112
                        'property' => 'justify-content',
113
                    ],
114
                    [
115
                        'required' => 'right',
116
                        'selector' => '.glsr:not([data-theme]) .glsr-review',
117
                        'property' => 'justify-content',
118
                        'value' => 'end',
119
                    ],
120
                    [
121
                        'required' => 'right',
122
                        'selector' => '.glsr:not([data-theme]) .glsr-review-rating',
123
                        'property' => 'flex',
124
                        'value' => '1',
125
                    ],
126
                    [
127
                        'required' => 'right',
128
                        'selector' => '.glsr:not([data-theme]) .glsr-review-rating',
129
                        'property' => 'justify-content',
130
                        'value' => 'end',
131
                    ],
132
                    [
133
                        'required' => 'right',
134
                        'selector' => '.glsr:not([data-theme]) .glsr-review-date',
135
                        'property' => 'flex',
136
                        'value' => '0',
137
                    ],
138
                    [
139
                        'required' => 'right',
140
                        'selector' => '.glsr:not([data-theme]) .glsr-review-actions',
141
                        'property' => 'justify-content',
142
                        'value' => 'end',
143
                    ],
144
                    [
145
                        'required' => 'right',
146
                        'selector' => '.glsr:not([data-theme]) .glsr-review-author_actions',
147
                        'property' => 'justify-content',
148
                        'value' => 'end',
149
                    ],
150
                    [
151
                        'required' => 'right',
152
                        'selector' => '.glsr:not([data-theme]) .glsr-ajax-loadmore',
153
                        'property' => 'justify-content',
154
                        'value' => 'end',
155
                    ],
156
                ],
157
                'exclude' => ['auto', 'justify'],
158
                'group' => 'design',
159
                'inline' => true,
160
                'label' => esc_html_x('Alignment', 'admin-text', 'site-reviews'),
161
                'rerender' => true,
162
                'tab' => 'content',
163
                'themeStyle' => true,
164
                'type' => 'text-align',
165
            ],
166
            'style_row_gap' => [
167
                'css' => [
168
                    [
169
                        'selector' => '.glsr:not([data-theme])',
170
                        'property' => '--glsr-review-row-gap',
171
                    ],
172
                ],
173
                'group' => 'design',
174
                'hasDynamicData' => false,
175
                'hasVariables' => true,
176
                'inline' => true,
177
                'label' => esc_html_x('Row Gap', 'admin-text', 'site-reviews'),
178
                'placeholder' => '',
179
                'tab' => 'content',
180
                'themeStyle' => true,
181
                'type' => 'number',
182
                'units' => true,
183
            ],
184
            'style_heading' => [
185
                'css' => [
186
                    [
187
                        'selector' => '.glsr:not([data-theme]) h2, .glsr:not([data-theme]) h3, .glsr:not([data-theme]) h4',
188
                        'property' => 'font',
189
                    ],
190
                ],
191
                'group' => 'design',
192
                'label' => esc_html_x('Heading', 'admin-text', 'site-reviews'),
193
                'tab' => 'content',
194
                'themeStyle' => true,
195
                'type' => 'typography',
196
            ],
197
            'style_text' => [
198
                'css' => [
199
                    [
200
                        'selector' => '.glsr:not([data-theme])',
201
                        'property' => 'font',
202
                    ],
203
                ],
204
                'group' => 'design',
205
                'label' => esc_html_x('Text', 'admin-text', 'site-reviews'),
206
                'tab' => 'content',
207
                'themeStyle' => true,
208
                'type' => 'typography',
209
            ],
210
            'style_rating_size' => [
211
                'css' => [
212
                    [
213
                        'selector' => '.glsr:not([data-theme])',
214
                        'property' => '--glsr-review-star',
215
                    ],
216
                ],
217
                'group' => 'design',
218
                'hasDynamicData' => false,
219
                'hasVariables' => true,
220
                'inline' => true,
221
                'label' => esc_html_x('Star Size', 'admin-text', 'site-reviews'),
222
                'placeholder' => '',
223
                'tab' => 'content',
224
                'themeStyle' => true,
225
                'type' => 'number',
226
                'units' => true,
227
            ],
228
            'style_rating_color' => [
229
                'css' => [
230
                    [
231
                        'selector' => '.glsr:not([data-theme]) .glsr-star',
232
                        'property' => 'mask-size',
233
                        'value' => '100%',
234
                    ],
235
                    [
236
                        'selector' => '.glsr:not([data-theme]) .glsr-star',
237
                        'property' => 'background',
238
                    ],
239
                    [
240
                        'selector' => '.glsr:not([data-theme]) .glsr-star-full',
241
                        'property' => 'mask-image',
242
                        'value' => 'var(--glsr-star-full)',
243
                    ],
244
                    [
245
                        'selector' => '.glsr:not([data-theme]) .glsr-star-empty',
246
                        'property' => 'mask-image',
247
                        'value' => 'var(--glsr-star-empty)',
248
                    ],
249
                ],
250
                'group' => 'design',
251
                'label' => esc_html_x('Star Color', 'admin-text', 'site-reviews'),
252
                'tab' => 'content',
253
                'themeStyle' => true,
254
                'type' => 'color',
255
            ],
256
            'style_button_separator' => [
257
                'group' => 'design',
258
                'label' => esc_html_x('Load More Button', 'admin-text', 'site-reviews'),
259
                'tab' => 'content',
260
                'themeStyle' => true,
261
                'type' => 'separator',
262
            ],
263
            'style_button_size' => [
264
                'group' => 'design',
265
                'inline' => true,
266
                'label' => esc_html_x('Size', 'admin-text', 'site-reviews'),
267
                'options' => $this->control_options['buttonSizes'] ?? [],
268
                'placeholder' => esc_html_x('Default', 'admin-text', 'site-reviews'),
269
                'tab' => 'content',
270
                'themeStyle' => true,
271
                'type' => 'select',
272
            ],
273
            'style_button_preset' => [
274
                'default' => 'primary',
275
                'group' => 'design',
276
                'inline' => true,
277
                'label' => esc_html_x('Style', 'admin-text', 'site-reviews'),
278
                'options' => $this->control_options['styles'] ?? [],
279
                'placeholder' => esc_html_x('None', 'admin-text', 'site-reviews'),
280
                'tab' => 'content',
281
                'themeStyle' => true,
282
                'type' => 'select',
283
            ],
284
            'style_button_background_color' => [
285
                'css' => [
286
                    [
287
                        'selector' => '.bricks-button',
288
                        'property' => 'background-color',
289
                    ],
290
                ],
291
                'group' => 'design',
292
                'label' => esc_html_x('Background', 'admin-text', 'site-reviews'),
293
                'tab' => 'content',
294
                'themeStyle' => true,
295
                'type' => 'color',
296
            ],
297
            'style_button_border' => [
298
                'css' => [
299
                    [
300
                        'selector' => '.bricks-button',
301
                        'property' => 'border',
302
                    ],
303
                ],
304
                'group' => 'design',
305
                'label' => esc_html_x('Border', 'admin-text', 'site-reviews'),
306
                'tab' => 'content',
307
                'themeStyle' => true,
308
                'type' => 'border',
309
            ],
310
            'style_button_typography' => [
311
                'css' => [
312
                    [
313
                        'selector' => '.bricks-button',
314
                        'property' => 'font',
315
                    ],
316
                ],
317
                'group' => 'design',
318
                'label' => esc_html_x('Typography', 'admin-text', 'site-reviews'),
319
                'tab' => 'content',
320
                'themeStyle' => true,
321
                'type' => 'typography',
322
            ],
323
        ];
324
        return $config;
325
    }
326
327
    public function render()
328
    {
329
        if (!$this->shortcodeInstance()->hasVisibleFields($this->settings)) {
330
            $this->render_element_placeholder([
331
                'title' => esc_html_x('You have hidden all of the fields.', 'admin-text', 'site-reviews'),
332
            ]);
333
            return;
334
        }
335
        parent::render();
336
    }
337
338
    public static function shortcodeClass(): string
339
    {
340
        return SiteReviewsShortcode::class;
341
    }
342
}
343