Passed
Push — master ( 197c27...f2cc15 )
by Paul
22:24 queued 07:48
created

ReviewsWidget::get_title()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 0
Metric Value
eloc 1
c 0
b 0
f 0
dl 0
loc 3
ccs 0
cts 3
cp 0
rs 10
cc 1
nc 1
nop 0
crap 2
1
<?php
2
3
namespace GeminiLabs\SiteReviews\Integrations\Elementor\Widgets;
4
5
use GeminiLabs\SiteReviews\Helpers\Cast;
6
use GeminiLabs\SiteReviews\Integrations\Elementor\Widget;
7
use GeminiLabs\SiteReviews\Modules\Rating;
8
use GeminiLabs\SiteReviews\Shortcodes\SiteReviewsShortcode;
9
10
class ReviewsWidget extends Widget
11
{
12
    /**
13
     * @return string
14
     */
15
    public function get_shortcode()
16
    {
17
        return SiteReviewsShortcode::class;
18
    }
19
20
    /**
21
     * @return string
22
     */
23
    public function get_title()
24
    {
25
        return _x('Latest Reviews', 'admin-text', 'site-reviews');
26
    }
27
28
    protected function settings_basic()
29
    {
30
        $options = [
31
            'assigned_posts' => [
32
                'default' => '',
33
                'label' => _x('Limit Reviews to an Assigned Page', 'admin-text', 'site-reviews'),
34
                'label_block' => true,
35
                'options' => $this->assigned_posts_options(),
36
                'type' => \Elementor\Controls_Manager::SELECT2,
37
            ],
38
            'assigned_posts_custom' => [
39
                'condition' => ['assigned_posts' => 'custom'],
40
                'description' => _x('Separate with commas.', 'admin-text', 'site-reviews'),
41
                'label_block' => true,
42
                'placeholder' => _x('Enter the Post IDs', 'admin-text', 'site-reviews'),
43
                'show_label' => false,
44
                'type' => \Elementor\Controls_Manager::TEXT,
45
            ],
46
            'assigned_terms' => [
47
                'default' => '',
48
                'label' => _x('Limit Reviews to an Assigned Category', 'admin-text', 'site-reviews'),
49
                'label_block' => true,
50
                'multiple' => true,
51
                'options' => $this->assigned_terms_options(),
52
                'type' => \Elementor\Controls_Manager::SELECT2,
53
            ],
54
            'assigned_users' => [
55
                'default' => '',
56
                'label' => _x('Limit Reviews to an Assigned User', 'admin-text', 'site-reviews'),
57
                'label_block' => true,
58
                'multiple' => true,
59
                'options' => $this->assigned_users_options(),
60
                'type' => \Elementor\Controls_Manager::SELECT2,
61
            ],
62
            'terms' => [
63
                'default' => '',
64
                'label' => _x('Limit Reviews to terms', 'admin-text', 'site-reviews'),
65
                'label_block' => true,
66
                'options' => [
67
                    'true' => _x('Terms were accepted', 'admin-text', 'site-reviews'),
68
                    'false' => _x('Terms were not accepted', 'admin-text', 'site-reviews'),
69
                ],
70
                'type' => \Elementor\Controls_Manager::SELECT2,
71
            ],
72
            'type' => $this->get_review_types(),
73
            'pagination' => [
74
                'default' => '',
75
                'label' => _x('Enable Pagination', 'admin-text', 'site-reviews'),
76
                'options' => [
77
                    '' => [
78
                        'icon' => 'eicon eicon-close',
79
                        'title' => _x('No', 'admin-text', 'site-reviews'),
80
                    ],
81
                    'loadmore' => [
82
                        'icon' => 'eicon eicon-spinner',
83
                        'title' => _x('Yes (AJAX load more)', 'admin-text', 'site-reviews'),
84
                    ],
85
                    'ajax' => [
86
                        'icon' => 'eicon eicon-spinner',
87
                        'title' => _x('Yes (AJAX pagination)', 'admin-text', 'site-reviews'),
88
                    ],
89
                    'true' => [
90
                        'icon' => 'eicon eicon-redo',
91
                        'title' => _x('Yes (page reload)', 'admin-text', 'site-reviews'),
92
                    ],
93
                ],
94
                'separator' => 'before',
95
                'type' => \Elementor\Controls_Manager::CHOOSE,
96
            ],
97
            'display' => [
98
                'default' => 10,
99
                'label' => _x('Reviews Per Page', 'admin-text', 'site-reviews'),
100
                'max' => 50,
101
                'min' => 1,
102
                'type' => \Elementor\Controls_Manager::NUMBER,
103
            ],
104
            'rating' => [
105
                'default' => 0,
106
                'label' => _x('Minimum Rating', 'admin-text', 'site-reviews'),
107
                'max' => Cast::toInt(glsr()->constant('MAX_RATING', Rating::class)),
108
                'min' => Cast::toInt(glsr()->constant('MIN_RATING', Rating::class)),
109
                'separator' => 'before',
110
                'type' => \Elementor\Controls_Manager::NUMBER,
111
            ],
112
            'schema' => [
113
                'description' => _x('The schema should only be enabled once per page.', 'admin-text', 'site-reviews'),
114
                'label' => _x('Enable the schema?', 'admin-text', 'site-reviews'),
115
                'return_value' => 'true',
116
                'separator' => 'before',
117
                'type' => \Elementor\Controls_Manager::SWITCHER,
118
            ],
119
        ];
120
        $hideOptions = $this->get_shortcode_instance()->getHideOptions();
121
        foreach ($hideOptions as $key => $label) {
122
            $separator = $key === key(array_slice($hideOptions, 0, 1)) ? 'before' : 'default';
123
            $options['hide-'.$key] = [
124
                'label' => $label,
125
                'separator' => $separator,
126
                'return_value' => '1',
127
                'type' => \Elementor\Controls_Manager::SWITCHER,
128
            ];
129
        }
130
        return $options;
131
    }
132
}
133