Test Failed
Push — master ( 2def23...999d23 )
by Paul
04:14
created

SiteReviewsButton   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 155
Duplicated Lines 0 %

Test Coverage

Coverage 0%

Importance

Changes 0
Metric Value
eloc 110
dl 0
loc 155
ccs 0
cts 102
cp 0
rs 10
c 0
b 0
f 0
wmc 5

3 Methods

Rating   Name   Duplication   Size   Complexity  
A getTerms() 0 12 2
A getTypes() 0 11 2
B fields() 0 115 1
1
<?php
2
3
namespace GeminiLabs\SiteReviews\Shortcodes;
4
5
use GeminiLabs\SiteReviews\Database;
6
use GeminiLabs\SiteReviews\Shortcodes\ButtonGenerator;
7
8
class SiteReviewsButton extends ButtonGenerator
9
{
10
	/**
11
	 * @return array
12
	 */
13
	public function fields()
14
	{
15
		return [[
16
			'html' => sprintf( '<p class="strong">%s</p>', esc_html__( 'All settings are optional.', 'site-reviews' )),
17
			'minWidth' => 320,
18
			'type' => 'container',
19
		],[
20
			'label' => esc_html__( 'Title', 'site-reviews' ),
21
			'name' => 'title',
22
			'tooltip' => esc_attr__( 'Enter a custom shortcode heading.', 'site-reviews' ),
23
			'type' => 'textbox',
24
		],[
25
			'label' => esc_html__( 'Count', 'site-reviews' ),
26
			'maxLength' => 5,
27
			'name' => 'count',
28
			'size' => 3,
29
			'text' => '10',
30
			'tooltip' => esc_attr__( 'How many reviews would you like to display (default: 10)?', 'site-reviews' ),
31
			'type' => 'textbox',
32
		],[
33
			'label' => esc_html__( 'Rating', 'site-reviews' ),
34
			'name' => 'rating',
35
			'options' => [
36
				'5' => esc_html( sprintf( _n( '%s star', '%s stars', 5, 'site-reviews' ), 5 )),
37
				'4' => esc_html( sprintf( _n( '%s star', '%s stars', 4, 'site-reviews' ), 4 )),
38
				'3' => esc_html( sprintf( _n( '%s star', '%s stars', 3, 'site-reviews' ), 3 )),
39
				'2' => esc_html( sprintf( _n( '%s star', '%s stars', 2, 'site-reviews' ), 2 )),
40
				'1' => esc_html( sprintf( _n( '%s star', '%s stars', 1, 'site-reviews' ), 1 )),
41
				'0' => esc_html( __( 'Unrated', 'site-reviews' )),
42
			],
43
			'tooltip' => esc_attr__( 'What is the minimum rating to display (default: 1 star)?', 'site-reviews' ),
44
			'type' => 'listbox',
45
		],[
46
			'label' => esc_html__( 'Pagination', 'site-reviews' ),
47
			'name' => 'pagination',
48
			'options' => [
49
				'true' => esc_html__( 'Enable', 'site-reviews' ),
50
				'ajax' => esc_html__( 'Enable (using ajax)', 'site-reviews' ),
51
				'false' => esc_html__( 'Disable', 'site-reviews' ),
52
			],
53
			'tooltip' => esc_attr__( 'When using pagination this shortcode can only be used once on a page. (default: disable)', 'site-reviews' ),
54
			'type' => 'listbox',
55
		],
56
		$this->getTypes(),
57
		$this->getTerms(),
58
		[
59
			'label' => esc_html__( 'Post ID', 'site-reviews' ),
60
			'name' => 'assigned_to',
61
			'tooltip' => esc_attr__( 'Limit reviews to those assigned to this post ID (separate multiple IDs with a comma). You can also enter "post_id" to use the ID of the current page.', 'site-reviews' ),
62
			'type' => 'textbox',
63
		],[
64
			'label' => esc_html__( 'Schema', 'site-reviews' ),
65
			'name' => 'schema',
66
			'options' => [
67
				'true' => esc_html__( 'Enable rich snippets', 'site-reviews' ),
68
				'false' => esc_html__( 'Disable rich snippets', 'site-reviews' ),
69
			],
70
			'tooltip' => esc_attr__( 'Rich snippets are disabled by default.', 'site-reviews' ),
71
			'type' => 'listbox',
72
		],[
73
			'label' => esc_html__( 'Classes', 'site-reviews' ),
74
			'name' => 'class',
75
			'tooltip' => esc_attr__( 'Add custom CSS classes to the shortcode.', 'site-reviews' ),
76
			'type' => 'textbox',
77
		],[
78
			'columns' => 2,
79
			'items' => [[
80
				'name' => 'hide_assigned_to',
81
				'text' => esc_html__( 'Assigned To', 'site-reviews' ),
82
				'tooltip' => esc_attr__( 'Hide the assigned to link?', 'site-reviews' ),
83
				'type' => 'checkbox',
84
			],[
85
				'name' => 'hide_author',
86
				'text' => esc_html__( 'Author', 'site-reviews' ),
87
				'tooltip' => esc_attr__( 'Hide the review author?', 'site-reviews' ),
88
				'type' => 'checkbox',
89
			],[
90
				'name' => 'hide_avatar',
91
				'text' => esc_html__( 'Avatar', 'site-reviews' ),
92
				'tooltip' => esc_attr__( 'Hide the reviewer avatar if shown?', 'site-reviews' ),
93
				'type' => 'checkbox',
94
			],[
95
				'name' => 'hide_content',
96
				'text' => esc_html__( 'Content', 'site-reviews' ),
97
				'tooltip' => esc_attr__( 'Hide the review content?', 'site-reviews' ),
98
				'type' => 'checkbox',
99
			],[
100
				'name' => 'hide_date',
101
				'text' => esc_html__( 'Date', 'site-reviews' ),
102
				'tooltip' => esc_attr__( 'Hide the review date?', 'site-reviews' ),
103
				'type' => 'checkbox',
104
			],[
105
				'name' => 'hide_rating',
106
				'text' => esc_html__( 'Rating', 'site-reviews' ),
107
				'tooltip' => esc_attr__( 'Hide the review rating?', 'site-reviews' ),
108
				'type' => 'checkbox',
109
			],[
110
				'name' => 'hide_response',
111
				'text' => esc_html__( 'Response', 'site-reviews' ),
112
				'tooltip' => esc_attr__( 'Hide the review response?', 'site-reviews' ),
113
				'type' => 'checkbox',
114
			],[
115
				'name' => 'hide_title',
116
				'text' => esc_html__( 'Title', 'site-reviews' ),
117
				'tooltip' => esc_attr__( 'Hide the review title?', 'site-reviews' ),
118
				'type' => 'checkbox',
119
			]],
120
			'layout' => 'grid',
121
			'label' => esc_html__( 'Hide', 'site-reviews' ),
122
			'spacing' => 5,
123
			'type' => 'container',
124
		],[
125
			'hidden' => true,
126
			'name' => 'id',
127
			'type' => 'textbox',
128
		]];
129
	}
130
131
	/**
132
	 * @return array
133
	 */
134
	public function getTerms()
135
	{
136
		$terms = glsr( Database::class )->getTerms();
137
		if( empty( $terms )) {
138
			return [];
139
		}
140
		return [
141
			'label' => esc_html__( 'Category', 'site-reviews' ),
142
			'name' => 'category',
143
			'options' => $terms,
144
			'tooltip' => esc_attr__( 'Limit reviews to this category.', 'site-reviews' ),
145
			'type' => 'listbox',
146
		];
147
	}
148
149
	/**
150
	 * @return array
151
	 */
152
	public function getTypes()
153
	{
154
		if( count( glsr()->reviewTypes ) < 2 ) {
155
			return [];
156
		}
157
		return [
158
			'label' => esc_html__( 'Display', 'site-reviews' ),
159
			'name' => 'display',
160
			'options' => glsr()->reviewTypes,
161
			'tooltip' => esc_attr__( 'Which reviews would you like to display?', 'site-reviews' ),
162
			'type' => 'listbox',
163
		];
164
	}
165
}
166