BricksSiteReviews::designConfig()   B
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 315
Code Lines 219

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 219
c 0
b 0
f 0
dl 0
loc 315
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\SiteReviewsShortcode;
6
7
class BricksSiteReviews 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_row_gap' => [
166
                'css' => [
167
                    [
168
                        'selector' => '.glsr:not([data-theme])',
169
                        'property' => '--glsr-review-row-gap',
170
                    ],
171
                ],
172
                'group' => 'design',
173
                'hasDynamicData' => false,
174
                'hasVariables' => true,
175
                'inline' => true,
176
                'label' => esc_html_x('Row Gap', 'admin-text', 'site-reviews'),
177
                'placeholder' => '',
178
                'tab' => 'content',
179
                'themeStyle' => true,
180
                'type' => 'number',
181
                'units' => true,
182
            ],
183
            'style_heading' => [
184
                'css' => [
185
                    [
186
                        'selector' => '.glsr:not([data-theme]) h2, .glsr:not([data-theme]) h3, .glsr:not([data-theme]) h4',
187
                        'property' => 'font',
188
                    ],
189
                ],
190
                'group' => 'design',
191
                'label' => esc_html_x('Heading', 'admin-text', 'site-reviews'),
192
                'tab' => 'content',
193
                'themeStyle' => true,
194
                'type' => 'typography',
195
            ],
196
            'style_text' => [
197
                'css' => [
198
                    [
199
                        'selector' => '.glsr:not([data-theme])',
200
                        'property' => 'font',
201
                    ],
202
                ],
203
                'group' => 'design',
204
                'label' => esc_html_x('Text', 'admin-text', 'site-reviews'),
205
                'tab' => 'content',
206
                'themeStyle' => true,
207
                'type' => 'typography',
208
            ],
209
            'style_rating_size' => [
210
                'css' => [
211
                    [
212
                        'selector' => '.glsr:not([data-theme])',
213
                        'property' => '--glsr-review-star',
214
                    ],
215
                ],
216
                'group' => 'design',
217
                'hasDynamicData' => false,
218
                'hasVariables' => true,
219
                'inline' => true,
220
                'label' => esc_html_x('Star Size', 'admin-text', 'site-reviews'),
221
                'placeholder' => '',
222
                'tab' => 'content',
223
                'themeStyle' => true,
224
                'type' => 'number',
225
                'units' => true,
226
            ],
227
            'style_rating_color' => [
228
                'css' => [
229
                    [
230
                        'selector' => '.glsr:not([data-theme]) .glsr-star',
231
                        'property' => 'mask-size',
232
                        'value' => '100%',
233
                    ],
234
                    [
235
                        'selector' => '.glsr:not([data-theme]) .glsr-star',
236
                        'property' => 'background',
237
                    ],
238
                    [
239
                        'selector' => '.glsr:not([data-theme]) .glsr-star-full',
240
                        'property' => 'mask-image',
241
                        'value' => 'var(--glsr-star-full)',
242
                    ],
243
                    [
244
                        'selector' => '.glsr:not([data-theme]) .glsr-star-empty',
245
                        'property' => 'mask-image',
246
                        'value' => 'var(--glsr-star-empty)',
247
                    ],
248
                ],
249
                'group' => 'design',
250
                'label' => esc_html_x('Star Color', 'admin-text', 'site-reviews'),
251
                'tab' => 'content',
252
                'themeStyle' => true,
253
                'type' => 'color',
254
            ],
255
            'style_button_separator' => [
256
                'group' => 'design',
257
                'label' => esc_html_x('Load More Button', 'admin-text', 'site-reviews'),
258
                'tab' => 'content',
259
                'themeStyle' => true,
260
                'type' => 'separator',
261
            ],
262
            'style_button_size' => [
263
                'group' => 'design',
264
                'inline' => true,
265
                'label' => esc_html_x('Size', 'admin-text', 'site-reviews'),
266
                'options' => $this->control_options['buttonSizes'] ?? [],
267
                'placeholder' => esc_html_x('Default', 'admin-text', 'site-reviews'),
268
                'tab' => 'content',
269
                'themeStyle' => true,
270
                'type' => 'select',
271
            ],
272
            'style_button_preset' => [
273
                'default' => 'primary',
274
                'group' => 'design',
275
                'inline' => true,
276
                'label' => esc_html_x('Style', 'admin-text', 'site-reviews'),
277
                'options' => $this->control_options['styles'] ?? [],
278
                'placeholder' => esc_html_x('None', 'admin-text', 'site-reviews'),
279
                'tab' => 'content',
280
                'themeStyle' => true,
281
                'type' => 'select',
282
            ],
283
            'style_button_background_color' => [
284
                'css' => [
285
                    [
286
                        'selector' => '.bricks-button',
287
                        'property' => 'background-color',
288
                    ],
289
                ],
290
                'group' => 'design',
291
                'label' => esc_html_x('Background', 'admin-text', 'site-reviews'),
292
                'tab' => 'content',
293
                'themeStyle' => true,
294
                'type' => 'color',
295
            ],
296
            'style_button_border' => [
297
                'css' => [
298
                    [
299
                        'selector' => '.bricks-button',
300
                        'property' => 'border',
301
                    ],
302
                ],
303
                'group' => 'design',
304
                'label' => esc_html_x('Border', 'admin-text', 'site-reviews'),
305
                'tab' => 'content',
306
                'themeStyle' => true,
307
                'type' => 'border',
308
            ],
309
            'style_button_typography' => [
310
                'css' => [
311
                    [
312
                        'selector' => '.bricks-button',
313
                        'property' => 'font',
314
                    ],
315
                ],
316
                'group' => 'design',
317
                'label' => esc_html_x('Typography', 'admin-text', 'site-reviews'),
318
                'tab' => 'content',
319
                'themeStyle' => true,
320
                'type' => 'typography',
321
            ],
322
        ];
323
        return $config;
324
    }
325
326
    public function render()
327
    {
328
        if (!$this->shortcodeInstance()->hasVisibleFields($this->settings)) {
329
            $this->render_element_placeholder([
330
                'title' => esc_html_x('You have hidden all of the fields.', 'admin-text', 'site-reviews'),
331
            ]);
332
            return;
333
        }
334
        parent::render();
335
    }
336
337
    public static function shortcodeClass(): string
338
    {
339
        return SiteReviewsShortcode::class;
340
    }
341
}
342