Passed
Push — feature/rebusify ( 0fe5b2...103190 )
by Paul
08:37 queued 03:55
created
plugin/Database/ReviewManager.php 2 patches
Indentation   +190 added lines, -190 removed lines patch added patch discarded remove patch
@@ -16,204 +16,204 @@
 block discarded – undo
16 16
 
17 17
 class ReviewManager
18 18
 {
19
-    /**
20
-     * @return false|Review
21
-     */
22
-    public function create(CreateReview $command)
23
-    {
24
-        $reviewValues = glsr(CreateReviewDefaults::class)->restrict((array) $command);
25
-        $reviewValues = apply_filters('site-reviews/create/review-values', $reviewValues, $command);
26
-        $reviewValues = glsr(Helper::class)->prefixArrayKeys($reviewValues);
27
-        unset($reviewValues['json']); // @todo remove the need for this
28
-        $postValues = [
29
-            'comment_status' => 'closed',
30
-            'meta_input' => $reviewValues,
31
-            'ping_status' => 'closed',
32
-            'post_content' => $reviewValues['_content'],
33
-            'post_date' => $reviewValues['_date'],
34
-            'post_date_gmt' => get_gmt_from_date($reviewValues['_date']),
35
-            'post_name' => $reviewValues['_review_type'].'-'.$reviewValues['_review_id'],
36
-            'post_status' => $this->getNewPostStatus($reviewValues, $command->blacklisted),
37
-            'post_title' => $reviewValues['_title'],
38
-            'post_type' => Application::POST_TYPE,
39
-        ];
40
-        $postId = wp_insert_post($postValues, true);
41
-        if (is_wp_error($postId)) {
42
-            glsr_log()->error($postId->get_error_message())->debug($postValues);
43
-            return false;
44
-        }
45
-        $this->setTerms($postId, $command->category);
46
-        $review = $this->single(get_post($postId));
47
-        do_action('site-reviews/review/created', $review, $command);
48
-        return $review;
49
-    }
19
+	/**
20
+	 * @return false|Review
21
+	 */
22
+	public function create(CreateReview $command)
23
+	{
24
+		$reviewValues = glsr(CreateReviewDefaults::class)->restrict((array) $command);
25
+		$reviewValues = apply_filters('site-reviews/create/review-values', $reviewValues, $command);
26
+		$reviewValues = glsr(Helper::class)->prefixArrayKeys($reviewValues);
27
+		unset($reviewValues['json']); // @todo remove the need for this
28
+		$postValues = [
29
+			'comment_status' => 'closed',
30
+			'meta_input' => $reviewValues,
31
+			'ping_status' => 'closed',
32
+			'post_content' => $reviewValues['_content'],
33
+			'post_date' => $reviewValues['_date'],
34
+			'post_date_gmt' => get_gmt_from_date($reviewValues['_date']),
35
+			'post_name' => $reviewValues['_review_type'].'-'.$reviewValues['_review_id'],
36
+			'post_status' => $this->getNewPostStatus($reviewValues, $command->blacklisted),
37
+			'post_title' => $reviewValues['_title'],
38
+			'post_type' => Application::POST_TYPE,
39
+		];
40
+		$postId = wp_insert_post($postValues, true);
41
+		if (is_wp_error($postId)) {
42
+			glsr_log()->error($postId->get_error_message())->debug($postValues);
43
+			return false;
44
+		}
45
+		$this->setTerms($postId, $command->category);
46
+		$review = $this->single(get_post($postId));
47
+		do_action('site-reviews/review/created', $review, $command);
48
+		return $review;
49
+	}
50 50
 
51
-    /**
52
-     * @param string $metaReviewId
53
-     * @return void
54
-     */
55
-    public function delete($metaReviewId)
56
-    {
57
-        if ($postId = $this->getPostId($metaReviewId)) {
58
-            wp_delete_post($postId, true);
59
-        }
60
-    }
51
+	/**
52
+	 * @param string $metaReviewId
53
+	 * @return void
54
+	 */
55
+	public function delete($metaReviewId)
56
+	{
57
+		if ($postId = $this->getPostId($metaReviewId)) {
58
+			wp_delete_post($postId, true);
59
+		}
60
+	}
61 61
 
62
-    /**
63
-     * @return object
64
-     */
65
-    public function get(array $args = [])
66
-    {
67
-        $args = glsr(ReviewsDefaults::class)->merge($args);
68
-        $metaQuery = glsr(QueryBuilder::class)->buildQuery(
69
-            ['assigned_to', 'email', 'ip_address', 'type', 'rating'],
70
-            $args
71
-        );
72
-        $taxQuery = glsr(QueryBuilder::class)->buildQuery(
73
-            ['category'],
74
-            ['category' => $this->normalizeTermIds($args['category'])]
75
-        );
76
-        $paged = glsr(QueryBuilder::class)->getPaged(
77
-            wp_validate_boolean($args['pagination'])
78
-        );
79
-        $parameters = [
80
-            'meta_key' => '_pinned',
81
-            'meta_query' => $metaQuery,
82
-            'offset' => $args['offset'],
83
-            'order' => $args['order'],
84
-            'orderby' => 'meta_value '.$args['orderby'],
85
-            'paged' => glsr_get($args, 'paged', $paged),
86
-            'post__in' => $args['post__in'],
87
-            'post__not_in' => $args['post__not_in'],
88
-            'post_status' => 'publish',
89
-            'post_type' => Application::POST_TYPE,
90
-            'posts_per_page' => $args['count'],
91
-            'tax_query' => $taxQuery,
92
-        ];
93
-        $parameters = apply_filters('site-reviews/get/reviews/query', $parameters, $args);
94
-        $query = new WP_Query($parameters);
95
-        $results = array_map([$this, 'single'], $query->posts);
96
-        $reviews = new Reviews($results, $query->max_num_pages, $args);
97
-        return apply_filters('site-reviews/get/reviews', $reviews, $query);
98
-    }
62
+	/**
63
+	 * @return object
64
+	 */
65
+	public function get(array $args = [])
66
+	{
67
+		$args = glsr(ReviewsDefaults::class)->merge($args);
68
+		$metaQuery = glsr(QueryBuilder::class)->buildQuery(
69
+			['assigned_to', 'email', 'ip_address', 'type', 'rating'],
70
+			$args
71
+		);
72
+		$taxQuery = glsr(QueryBuilder::class)->buildQuery(
73
+			['category'],
74
+			['category' => $this->normalizeTermIds($args['category'])]
75
+		);
76
+		$paged = glsr(QueryBuilder::class)->getPaged(
77
+			wp_validate_boolean($args['pagination'])
78
+		);
79
+		$parameters = [
80
+			'meta_key' => '_pinned',
81
+			'meta_query' => $metaQuery,
82
+			'offset' => $args['offset'],
83
+			'order' => $args['order'],
84
+			'orderby' => 'meta_value '.$args['orderby'],
85
+			'paged' => glsr_get($args, 'paged', $paged),
86
+			'post__in' => $args['post__in'],
87
+			'post__not_in' => $args['post__not_in'],
88
+			'post_status' => 'publish',
89
+			'post_type' => Application::POST_TYPE,
90
+			'posts_per_page' => $args['count'],
91
+			'tax_query' => $taxQuery,
92
+		];
93
+		$parameters = apply_filters('site-reviews/get/reviews/query', $parameters, $args);
94
+		$query = new WP_Query($parameters);
95
+		$results = array_map([$this, 'single'], $query->posts);
96
+		$reviews = new Reviews($results, $query->max_num_pages, $args);
97
+		return apply_filters('site-reviews/get/reviews', $reviews, $query);
98
+	}
99 99
 
100
-    /**
101
-     * @param string $metaReviewId
102
-     * @return int
103
-     */
104
-    public function getPostId($metaReviewId)
105
-    {
106
-        return glsr(SqlQueries::class)->getPostIdFromReviewId($metaReviewId);
107
-    }
100
+	/**
101
+	 * @param string $metaReviewId
102
+	 * @return int
103
+	 */
104
+	public function getPostId($metaReviewId)
105
+	{
106
+		return glsr(SqlQueries::class)->getPostIdFromReviewId($metaReviewId);
107
+	}
108 108
 
109
-    /**
110
-     * @return array
111
-     */
112
-    public function getRatingCounts(array $args = [])
113
-    {
114
-        $args = glsr(SiteReviewsSummaryDefaults::class)->filter($args);
115
-        $counts = glsr(CountsManager::class)->get([
116
-            'post_ids' => glsr(Helper::class)->convertStringToArray($args['assigned_to']),
117
-            'term_ids' => $this->normalizeTermIds($args['category']),
118
-            'type' => $args['type'],
119
-        ]);
120
-        return glsr(CountsManager::class)->flatten($counts, [
121
-            'min' => $args['rating'],
122
-        ]);
123
-    }
109
+	/**
110
+	 * @return array
111
+	 */
112
+	public function getRatingCounts(array $args = [])
113
+	{
114
+		$args = glsr(SiteReviewsSummaryDefaults::class)->filter($args);
115
+		$counts = glsr(CountsManager::class)->get([
116
+			'post_ids' => glsr(Helper::class)->convertStringToArray($args['assigned_to']),
117
+			'term_ids' => $this->normalizeTermIds($args['category']),
118
+			'type' => $args['type'],
119
+		]);
120
+		return glsr(CountsManager::class)->flatten($counts, [
121
+			'min' => $args['rating'],
122
+		]);
123
+	}
124 124
 
125
-    /**
126
-     * @param string $commaSeparatedTermIds
127
-     * @return array
128
-     */
129
-    public function normalizeTermIds($commaSeparatedTermIds)
130
-    {
131
-        $termIds = glsr_array_column($this->normalizeTerms($commaSeparatedTermIds), 'term_id');
132
-        return array_unique(array_map('intval', $termIds));
133
-    }
125
+	/**
126
+	 * @param string $commaSeparatedTermIds
127
+	 * @return array
128
+	 */
129
+	public function normalizeTermIds($commaSeparatedTermIds)
130
+	{
131
+		$termIds = glsr_array_column($this->normalizeTerms($commaSeparatedTermIds), 'term_id');
132
+		return array_unique(array_map('intval', $termIds));
133
+	}
134 134
 
135
-    /**
136
-     * @param string $commaSeparatedTermIds
137
-     * @return array
138
-     */
139
-    public function normalizeTerms($commaSeparatedTermIds)
140
-    {
141
-        $terms = [];
142
-        $termIds = glsr(Helper::class)->convertStringToArray($commaSeparatedTermIds);
143
-        foreach ($termIds as $termId) {
144
-            if (is_numeric($termId)) {
145
-                $termId = intval($termId);
146
-            }
147
-            $term = term_exists($termId, Application::TAXONOMY);
148
-            if (!isset($term['term_id'])) {
149
-                continue;
150
-            }
151
-            $terms[] = $term;
152
-        }
153
-        return $terms;
154
-    }
135
+	/**
136
+	 * @param string $commaSeparatedTermIds
137
+	 * @return array
138
+	 */
139
+	public function normalizeTerms($commaSeparatedTermIds)
140
+	{
141
+		$terms = [];
142
+		$termIds = glsr(Helper::class)->convertStringToArray($commaSeparatedTermIds);
143
+		foreach ($termIds as $termId) {
144
+			if (is_numeric($termId)) {
145
+				$termId = intval($termId);
146
+			}
147
+			$term = term_exists($termId, Application::TAXONOMY);
148
+			if (!isset($term['term_id'])) {
149
+				continue;
150
+			}
151
+			$terms[] = $term;
152
+		}
153
+		return $terms;
154
+	}
155 155
 
156
-    /**
157
-     * @param int $postId
158
-     * @return void
159
-     */
160
-    public function revert($postId)
161
-    {
162
-        if (Application::POST_TYPE != get_post_field('post_type', $postId)) {
163
-            return;
164
-        }
165
-        delete_post_meta($postId, '_edit_last');
166
-        $result = wp_update_post([
167
-            'ID' => $postId,
168
-            'post_content' => glsr(Database::class)->get($postId, 'content'),
169
-            'post_date' => glsr(Database::class)->get($postId, 'date'),
170
-            'post_title' => glsr(Database::class)->get($postId, 'title'),
171
-        ]);
172
-        if (is_wp_error($result)) {
173
-            glsr_log()->error($result->get_error_message());
174
-            return;
175
-        }
176
-        do_action('site-reviews/review/reverted', glsr_get_review($postId));
177
-    }
156
+	/**
157
+	 * @param int $postId
158
+	 * @return void
159
+	 */
160
+	public function revert($postId)
161
+	{
162
+		if (Application::POST_TYPE != get_post_field('post_type', $postId)) {
163
+			return;
164
+		}
165
+		delete_post_meta($postId, '_edit_last');
166
+		$result = wp_update_post([
167
+			'ID' => $postId,
168
+			'post_content' => glsr(Database::class)->get($postId, 'content'),
169
+			'post_date' => glsr(Database::class)->get($postId, 'date'),
170
+			'post_title' => glsr(Database::class)->get($postId, 'title'),
171
+		]);
172
+		if (is_wp_error($result)) {
173
+			glsr_log()->error($result->get_error_message());
174
+			return;
175
+		}
176
+		do_action('site-reviews/review/reverted', glsr_get_review($postId));
177
+	}
178 178
 
179
-    /**
180
-     * @return Review
181
-     */
182
-    public function single(WP_Post $post)
183
-    {
184
-        if (Application::POST_TYPE != $post->post_type) {
185
-            $post = new WP_Post((object) []);
186
-        }
187
-        $review = new Review($post);
188
-        return apply_filters('site-reviews/get/review', $review, $post);
189
-    }
179
+	/**
180
+	 * @return Review
181
+	 */
182
+	public function single(WP_Post $post)
183
+	{
184
+		if (Application::POST_TYPE != $post->post_type) {
185
+			$post = new WP_Post((object) []);
186
+		}
187
+		$review = new Review($post);
188
+		return apply_filters('site-reviews/get/review', $review, $post);
189
+	}
190 190
 
191
-    /**
192
-     * @param bool $isBlacklisted
193
-     * @return string
194
-     */
195
-    protected function getNewPostStatus(array $reviewValues, $isBlacklisted)
196
-    {
197
-        $requireApproval = glsr(OptionManager::class)->getBool('settings.general.require.approval');
198
-        return 'local' == $reviewValues['_review_type'] && ($requireApproval || $isBlacklisted)
199
-            ? 'pending'
200
-            : 'publish';
201
-    }
191
+	/**
192
+	 * @param bool $isBlacklisted
193
+	 * @return string
194
+	 */
195
+	protected function getNewPostStatus(array $reviewValues, $isBlacklisted)
196
+	{
197
+		$requireApproval = glsr(OptionManager::class)->getBool('settings.general.require.approval');
198
+		return 'local' == $reviewValues['_review_type'] && ($requireApproval || $isBlacklisted)
199
+			? 'pending'
200
+			: 'publish';
201
+	}
202 202
 
203
-    /**
204
-     * @param int $postId
205
-     * @param string $termIds
206
-     * @return void
207
-     */
208
-    protected function setTerms($postId, $termIds)
209
-    {
210
-        $termIds = $this->normalizeTermIds($termIds);
211
-        if (empty($termIds)) {
212
-            return;
213
-        }
214
-        $termTaxonomyIds = wp_set_object_terms($postId, $termIds, Application::TAXONOMY);
215
-        if (is_wp_error($termTaxonomyIds)) {
216
-            glsr_log()->error($termTaxonomyIds->get_error_message());
217
-        }
218
-    }
203
+	/**
204
+	 * @param int $postId
205
+	 * @param string $termIds
206
+	 * @return void
207
+	 */
208
+	protected function setTerms($postId, $termIds)
209
+	{
210
+		$termIds = $this->normalizeTermIds($termIds);
211
+		if (empty($termIds)) {
212
+			return;
213
+		}
214
+		$termTaxonomyIds = wp_set_object_terms($postId, $termIds, Application::TAXONOMY);
215
+		if (is_wp_error($termTaxonomyIds)) {
216
+			glsr_log()->error($termTaxonomyIds->get_error_message());
217
+		}
218
+	}
219 219
 }
Please login to merge, or discard this patch.
Spacing   +72 added lines, -72 removed lines patch added patch discarded remove patch
@@ -19,11 +19,11 @@  discard block
 block discarded – undo
19 19
     /**
20 20
      * @return false|Review
21 21
      */
22
-    public function create(CreateReview $command)
22
+    public function create( CreateReview $command )
23 23
     {
24
-        $reviewValues = glsr(CreateReviewDefaults::class)->restrict((array) $command);
25
-        $reviewValues = apply_filters('site-reviews/create/review-values', $reviewValues, $command);
26
-        $reviewValues = glsr(Helper::class)->prefixArrayKeys($reviewValues);
24
+        $reviewValues = glsr( CreateReviewDefaults::class )->restrict( (array)$command );
25
+        $reviewValues = apply_filters( 'site-reviews/create/review-values', $reviewValues, $command );
26
+        $reviewValues = glsr( Helper::class )->prefixArrayKeys( $reviewValues );
27 27
         unset($reviewValues['json']); // @todo remove the need for this
28 28
         $postValues = [
29 29
             'comment_status' => 'closed',
@@ -31,20 +31,20 @@  discard block
 block discarded – undo
31 31
             'ping_status' => 'closed',
32 32
             'post_content' => $reviewValues['_content'],
33 33
             'post_date' => $reviewValues['_date'],
34
-            'post_date_gmt' => get_gmt_from_date($reviewValues['_date']),
34
+            'post_date_gmt' => get_gmt_from_date( $reviewValues['_date'] ),
35 35
             'post_name' => $reviewValues['_review_type'].'-'.$reviewValues['_review_id'],
36
-            'post_status' => $this->getNewPostStatus($reviewValues, $command->blacklisted),
36
+            'post_status' => $this->getNewPostStatus( $reviewValues, $command->blacklisted ),
37 37
             'post_title' => $reviewValues['_title'],
38 38
             'post_type' => Application::POST_TYPE,
39 39
         ];
40
-        $postId = wp_insert_post($postValues, true);
41
-        if (is_wp_error($postId)) {
42
-            glsr_log()->error($postId->get_error_message())->debug($postValues);
40
+        $postId = wp_insert_post( $postValues, true );
41
+        if( is_wp_error( $postId ) ) {
42
+            glsr_log()->error( $postId->get_error_message() )->debug( $postValues );
43 43
             return false;
44 44
         }
45
-        $this->setTerms($postId, $command->category);
46
-        $review = $this->single(get_post($postId));
47
-        do_action('site-reviews/review/created', $review, $command);
45
+        $this->setTerms( $postId, $command->category );
46
+        $review = $this->single( get_post( $postId ) );
47
+        do_action( 'site-reviews/review/created', $review, $command );
48 48
         return $review;
49 49
     }
50 50
 
@@ -52,29 +52,29 @@  discard block
 block discarded – undo
52 52
      * @param string $metaReviewId
53 53
      * @return void
54 54
      */
55
-    public function delete($metaReviewId)
55
+    public function delete( $metaReviewId )
56 56
     {
57
-        if ($postId = $this->getPostId($metaReviewId)) {
58
-            wp_delete_post($postId, true);
57
+        if( $postId = $this->getPostId( $metaReviewId ) ) {
58
+            wp_delete_post( $postId, true );
59 59
         }
60 60
     }
61 61
 
62 62
     /**
63 63
      * @return object
64 64
      */
65
-    public function get(array $args = [])
65
+    public function get( array $args = [] )
66 66
     {
67
-        $args = glsr(ReviewsDefaults::class)->merge($args);
68
-        $metaQuery = glsr(QueryBuilder::class)->buildQuery(
67
+        $args = glsr( ReviewsDefaults::class )->merge( $args );
68
+        $metaQuery = glsr( QueryBuilder::class )->buildQuery(
69 69
             ['assigned_to', 'email', 'ip_address', 'type', 'rating'],
70 70
             $args
71 71
         );
72
-        $taxQuery = glsr(QueryBuilder::class)->buildQuery(
72
+        $taxQuery = glsr( QueryBuilder::class )->buildQuery(
73 73
             ['category'],
74
-            ['category' => $this->normalizeTermIds($args['category'])]
74
+            ['category' => $this->normalizeTermIds( $args['category'] )]
75 75
         );
76
-        $paged = glsr(QueryBuilder::class)->getPaged(
77
-            wp_validate_boolean($args['pagination'])
76
+        $paged = glsr( QueryBuilder::class )->getPaged(
77
+            wp_validate_boolean( $args['pagination'] )
78 78
         );
79 79
         $parameters = [
80 80
             'meta_key' => '_pinned',
@@ -82,7 +82,7 @@  discard block
 block discarded – undo
82 82
             'offset' => $args['offset'],
83 83
             'order' => $args['order'],
84 84
             'orderby' => 'meta_value '.$args['orderby'],
85
-            'paged' => glsr_get($args, 'paged', $paged),
85
+            'paged' => glsr_get( $args, 'paged', $paged ),
86 86
             'post__in' => $args['post__in'],
87 87
             'post__not_in' => $args['post__not_in'],
88 88
             'post_status' => 'publish',
@@ -90,62 +90,62 @@  discard block
 block discarded – undo
90 90
             'posts_per_page' => $args['count'],
91 91
             'tax_query' => $taxQuery,
92 92
         ];
93
-        $parameters = apply_filters('site-reviews/get/reviews/query', $parameters, $args);
94
-        $query = new WP_Query($parameters);
95
-        $results = array_map([$this, 'single'], $query->posts);
96
-        $reviews = new Reviews($results, $query->max_num_pages, $args);
97
-        return apply_filters('site-reviews/get/reviews', $reviews, $query);
93
+        $parameters = apply_filters( 'site-reviews/get/reviews/query', $parameters, $args );
94
+        $query = new WP_Query( $parameters );
95
+        $results = array_map( [$this, 'single'], $query->posts );
96
+        $reviews = new Reviews( $results, $query->max_num_pages, $args );
97
+        return apply_filters( 'site-reviews/get/reviews', $reviews, $query );
98 98
     }
99 99
 
100 100
     /**
101 101
      * @param string $metaReviewId
102 102
      * @return int
103 103
      */
104
-    public function getPostId($metaReviewId)
104
+    public function getPostId( $metaReviewId )
105 105
     {
106
-        return glsr(SqlQueries::class)->getPostIdFromReviewId($metaReviewId);
106
+        return glsr( SqlQueries::class )->getPostIdFromReviewId( $metaReviewId );
107 107
     }
108 108
 
109 109
     /**
110 110
      * @return array
111 111
      */
112
-    public function getRatingCounts(array $args = [])
112
+    public function getRatingCounts( array $args = [] )
113 113
     {
114
-        $args = glsr(SiteReviewsSummaryDefaults::class)->filter($args);
115
-        $counts = glsr(CountsManager::class)->get([
116
-            'post_ids' => glsr(Helper::class)->convertStringToArray($args['assigned_to']),
117
-            'term_ids' => $this->normalizeTermIds($args['category']),
114
+        $args = glsr( SiteReviewsSummaryDefaults::class )->filter( $args );
115
+        $counts = glsr( CountsManager::class )->get( [
116
+            'post_ids' => glsr( Helper::class )->convertStringToArray( $args['assigned_to'] ),
117
+            'term_ids' => $this->normalizeTermIds( $args['category'] ),
118 118
             'type' => $args['type'],
119
-        ]);
120
-        return glsr(CountsManager::class)->flatten($counts, [
119
+        ] );
120
+        return glsr( CountsManager::class )->flatten( $counts, [
121 121
             'min' => $args['rating'],
122
-        ]);
122
+        ] );
123 123
     }
124 124
 
125 125
     /**
126 126
      * @param string $commaSeparatedTermIds
127 127
      * @return array
128 128
      */
129
-    public function normalizeTermIds($commaSeparatedTermIds)
129
+    public function normalizeTermIds( $commaSeparatedTermIds )
130 130
     {
131
-        $termIds = glsr_array_column($this->normalizeTerms($commaSeparatedTermIds), 'term_id');
132
-        return array_unique(array_map('intval', $termIds));
131
+        $termIds = glsr_array_column( $this->normalizeTerms( $commaSeparatedTermIds ), 'term_id' );
132
+        return array_unique( array_map( 'intval', $termIds ) );
133 133
     }
134 134
 
135 135
     /**
136 136
      * @param string $commaSeparatedTermIds
137 137
      * @return array
138 138
      */
139
-    public function normalizeTerms($commaSeparatedTermIds)
139
+    public function normalizeTerms( $commaSeparatedTermIds )
140 140
     {
141 141
         $terms = [];
142
-        $termIds = glsr(Helper::class)->convertStringToArray($commaSeparatedTermIds);
143
-        foreach ($termIds as $termId) {
144
-            if (is_numeric($termId)) {
145
-                $termId = intval($termId);
142
+        $termIds = glsr( Helper::class )->convertStringToArray( $commaSeparatedTermIds );
143
+        foreach( $termIds as $termId ) {
144
+            if( is_numeric( $termId ) ) {
145
+                $termId = intval( $termId );
146 146
             }
147
-            $term = term_exists($termId, Application::TAXONOMY);
148
-            if (!isset($term['term_id'])) {
147
+            $term = term_exists( $termId, Application::TAXONOMY );
148
+            if( !isset($term['term_id']) ) {
149 149
                 continue;
150 150
             }
151 151
             $terms[] = $term;
@@ -157,44 +157,44 @@  discard block
 block discarded – undo
157 157
      * @param int $postId
158 158
      * @return void
159 159
      */
160
-    public function revert($postId)
160
+    public function revert( $postId )
161 161
     {
162
-        if (Application::POST_TYPE != get_post_field('post_type', $postId)) {
162
+        if( Application::POST_TYPE != get_post_field( 'post_type', $postId ) ) {
163 163
             return;
164 164
         }
165
-        delete_post_meta($postId, '_edit_last');
166
-        $result = wp_update_post([
165
+        delete_post_meta( $postId, '_edit_last' );
166
+        $result = wp_update_post( [
167 167
             'ID' => $postId,
168
-            'post_content' => glsr(Database::class)->get($postId, 'content'),
169
-            'post_date' => glsr(Database::class)->get($postId, 'date'),
170
-            'post_title' => glsr(Database::class)->get($postId, 'title'),
171
-        ]);
172
-        if (is_wp_error($result)) {
173
-            glsr_log()->error($result->get_error_message());
168
+            'post_content' => glsr( Database::class )->get( $postId, 'content' ),
169
+            'post_date' => glsr( Database::class )->get( $postId, 'date' ),
170
+            'post_title' => glsr( Database::class )->get( $postId, 'title' ),
171
+        ] );
172
+        if( is_wp_error( $result ) ) {
173
+            glsr_log()->error( $result->get_error_message() );
174 174
             return;
175 175
         }
176
-        do_action('site-reviews/review/reverted', glsr_get_review($postId));
176
+        do_action( 'site-reviews/review/reverted', glsr_get_review( $postId ) );
177 177
     }
178 178
 
179 179
     /**
180 180
      * @return Review
181 181
      */
182
-    public function single(WP_Post $post)
182
+    public function single( WP_Post $post )
183 183
     {
184
-        if (Application::POST_TYPE != $post->post_type) {
185
-            $post = new WP_Post((object) []);
184
+        if( Application::POST_TYPE != $post->post_type ) {
185
+            $post = new WP_Post( (object)[] );
186 186
         }
187
-        $review = new Review($post);
188
-        return apply_filters('site-reviews/get/review', $review, $post);
187
+        $review = new Review( $post );
188
+        return apply_filters( 'site-reviews/get/review', $review, $post );
189 189
     }
190 190
 
191 191
     /**
192 192
      * @param bool $isBlacklisted
193 193
      * @return string
194 194
      */
195
-    protected function getNewPostStatus(array $reviewValues, $isBlacklisted)
195
+    protected function getNewPostStatus( array $reviewValues, $isBlacklisted )
196 196
     {
197
-        $requireApproval = glsr(OptionManager::class)->getBool('settings.general.require.approval');
197
+        $requireApproval = glsr( OptionManager::class )->getBool( 'settings.general.require.approval' );
198 198
         return 'local' == $reviewValues['_review_type'] && ($requireApproval || $isBlacklisted)
199 199
             ? 'pending'
200 200
             : 'publish';
@@ -205,15 +205,15 @@  discard block
 block discarded – undo
205 205
      * @param string $termIds
206 206
      * @return void
207 207
      */
208
-    protected function setTerms($postId, $termIds)
208
+    protected function setTerms( $postId, $termIds )
209 209
     {
210
-        $termIds = $this->normalizeTermIds($termIds);
211
-        if (empty($termIds)) {
210
+        $termIds = $this->normalizeTermIds( $termIds );
211
+        if( empty($termIds) ) {
212 212
             return;
213 213
         }
214
-        $termTaxonomyIds = wp_set_object_terms($postId, $termIds, Application::TAXONOMY);
215
-        if (is_wp_error($termTaxonomyIds)) {
216
-            glsr_log()->error($termTaxonomyIds->get_error_message());
214
+        $termTaxonomyIds = wp_set_object_terms( $postId, $termIds, Application::TAXONOMY );
215
+        if( is_wp_error( $termTaxonomyIds ) ) {
216
+            glsr_log()->error( $termTaxonomyIds->get_error_message() );
217 217
         }
218 218
     }
219 219
 }
Please login to merge, or discard this patch.
config/settings.php 2 patches
Indentation   +514 added lines, -514 removed lines patch added patch discarded remove patch
@@ -1,518 +1,518 @@
 block discarded – undo
1 1
 <?php
2 2
 
3 3
 return [
4
-    'settings.general.style' => [
5
-        'default' => 'default',
6
-        'description' => __('Site Reviews relies on the CSS of your theme to style the submission form. If your theme does not provide proper CSS rules for form elements and you are using a WordPress plugin/theme or CSS Framework listed here, please try selecting it, otherwise choose "Site Reviews (default)".', 'site-reviews'),
7
-        'label' => __('Plugin Style', 'site-reviews'),
8
-        'options' => [
9
-            'bootstrap_4' => 'CSS Framework: Bootstrap 4',
10
-            'bootstrap_4_custom' => 'CSS Framework: Bootstrap 4 (Custom Forms)',
11
-            'contact_form_7' => 'Plugin: Contact Form 7 (v5)',
12
-            'ninja_forms' => 'Plugin: Ninja Forms (v3)',
13
-            'wpforms' => 'Plugin: WPForms Lite (v1)',
14
-            'default' => __('Site Reviews (default)', 'site-reviews'),
15
-            'minimal' => __('Site Reviews (minimal)', 'site-reviews'),
16
-            'divi' => 'Theme: Divi (v3)',
17
-            'materialize' => 'Theme: Materialize',
18
-            'twentyfifteen' => 'Theme: Twenty Fifteen',
19
-            'twentyseventeen' => 'Theme: Twenty Seventeen',
20
-            'twentynineteen' => 'Theme: Twenty Nineteen',
21
-        ],
22
-        'type' => 'select',
23
-    ],
24
-    'settings.general.require.approval' => [
25
-        'default' => 'no',
26
-        'description' => __('Set the status of new review submissions to "unapproved".', 'site-reviews'),
27
-        'label' => __('Require Approval', 'site-reviews'),
28
-        'type' => 'yes_no',
29
-    ],
30
-    'settings.general.require.login' => [
31
-        'default' => 'no',
32
-        'description' => __('Only allow review submissions from registered users.', 'site-reviews'),
33
-        'label' => __('Require Login', 'site-reviews'),
34
-        'type' => 'yes_no',
35
-    ],
36
-    'settings.general.require.login_register' => [
37
-        'default' => 'no',
38
-        'depends_on' => [
39
-            'settings.general.require.login' => 'yes',
40
-        ],
41
-        'description' => sprintf(__('Show a link for a new user to register. The %s Membership option must be enabled in General Settings for this to work.', 'site-reviews'),
42
-            '<a href="'.admin_url('options-general.php#users_can_register').'">'.__('Anyone can register', 'site-reviews').'</a>'
43
-        ),
44
-        'label' => __('Show Registration Link', 'site-reviews'),
45
-        'type' => 'yes_no',
46
-    ],
47
-    'settings.general.multilingual' => [
48
-        'default' => '',
49
-        'description' => __('Integrate with a multilingual plugin to calculate ratings for all languages of a post.', 'site-reviews'),
50
-        'label' => __('Multilingual', 'site-reviews'),
51
-        'options' => [
52
-            '' => __('No Integration', 'site-reviews'),
53
-            'polylang' => __('Integrate with Polylang', 'site-reviews'),
54
-            'wpml' => __('Integrate with WPML', 'site-reviews'),
55
-        ],
56
-        'type' => 'select',
57
-    ],
58
-    'settings.general.rebusify' => [
59
-        'default' => 'no',
60
-        'description' => sprintf(__('Integrate with the %s and sync your reviews to the blockchain to increase online reputation, trust, and transparency.', 'site-reviews'),
61
-            '<a href="https://www.rebusify.com?ref=105">Rebusify Confidence System</a>'
62
-        ),
63
-        'label' => __('Sync to Blockchain', 'site-reviews'),
64
-        'type' => 'yes_no',
65
-    ],
66
-    'settings.general.rebusify_api_key' => [
67
-        'default' => '',
68
-        'depends_on' => [
69
-            'settings.general.rebusify' => ['yes'],
70
-        ],
71
-        'description' => sprintf(__('Get a free Rebusify API key from %s.', 'site-reviews'),
72
-            '<a href="https://rebusify.com?ref=105">rebusify.com</a>'
73
-        ),
74
-        'label' => __('Rebusify API key', 'site-reviews'),
75
-        'type' => 'text',
76
-    ],
77
-    'settings.general.notifications' => [
78
-        'default' => [],
79
-        'label' => __('Notifications', 'site-reviews'),
80
-        'options' => [
81
-            'admin' => __('Send to administrator', 'site-reviews').' <code>'.(string) get_option('admin_email').'</code>',
82
-            'author' => __('Send to author of the page that the review is assigned to', 'site-reviews'),
83
-            'custom' => __('Send to one or more email addresses', 'site-reviews'),
84
-            'slack' => __('Send to <a href="https://slack.com/">Slack</a>', 'site-reviews'),
85
-        ],
86
-        'type' => 'checkbox',
87
-    ],
88
-    'settings.general.notification_email' => [
89
-        'default' => '',
90
-        'depends_on' => [
91
-            'settings.general.notifications' => ['custom'],
92
-        ],
93
-        'label' => __('Send Notification Emails To', 'site-reviews'),
94
-        'placeholder' => __('Separate multiple emails with a comma', 'site-reviews'),
95
-        'type' => 'text',
96
-    ],
97
-    'settings.general.notification_slack' => [
98
-        'default' => '',
99
-        'depends_on' => [
100
-            'settings.general.notifications' => ['slack'],
101
-        ],
102
-        'description' => sprintf(__('To send notifications to Slack, create a new %s and then paste the provided Webhook URL in the field above.', 'site-reviews'),
103
-            '<a href="https://api.slack.com/incoming-webhooks">'.__('Incoming WebHook', 'site-reviews').'</a>'
104
-        ),
105
-        'label' => __('Slack Webhook URL', 'site-reviews'),
106
-        'type' => 'text',
107
-    ],
108
-    'settings.general.notification_message' => [
109
-        'default' => glsr('Modules\Html\Template')->build('templates/email-notification'),
110
-        'depends_on' => [
111
-            'settings.general.notifications' => ['admin', 'author', 'custom', 'slack'],
112
-        ],
113
-        'description' => __(
114
-            'To restore the default text, save an empty template. '.
115
-            'If you are sending notifications to Slack then this template will only be used as a fallback in the event that <a href="https://api.slack.com/docs/attachments">Message Attachments</a> have been disabled. Available template tags:'.
116
-            '<br><code>{review_rating}</code> The review rating number (1-5)'.
117
-            '<br><code>{review_title}</code> The review title'.
118
-            '<br><code>{review_content}</code> The review content'.
119
-            '<br><code>{review_author}</code> The review author'.
120
-            '<br><code>{review_email}</code> The email of the review author'.
121
-            '<br><code>{review_ip}</code> The IP address of the review author'.
122
-            '<br><code>{review_link}</code> The link to edit/view a review',
123
-            'site-reviews'
124
-        ),
125
-        'label' => __('Notification Template', 'site-reviews'),
126
-        'rows' => 10,
127
-        'type' => 'code',
128
-    ],
129
-    'settings.reviews.date.format' => [
130
-        'default' => '',
131
-        'description' => sprintf(__('The default date format is the one set in your %s.', 'site-reviews'),
132
-            '<a href="'.admin_url('options-general.php#date_format_custom').'">'.__('WordPress settings', 'site-reviews').'</a>'
133
-        ),
134
-        'label' => __('Date Format', 'site-reviews'),
135
-        'options' => [
136
-            '' => __('Use the default date format', 'site-reviews'),
137
-            'relative' => __('Use a relative date format', 'site-reviews'),
138
-            'custom' => __('Use a custom date format', 'site-reviews'),
139
-        ],
140
-        'type' => 'select',
141
-    ],
142
-    'settings.reviews.date.custom' => [
143
-        'default' => get_option('date_format'),
144
-        'depends_on' => [
145
-            'settings.reviews.date.format' => 'custom',
146
-        ],
147
-        'description' => __('Enter a custom date format (<a href="https://codex.wordpress.org/Formatting_Date_and_Time">documentation on date and time formatting</a>).', 'site-reviews'),
148
-        'label' => __('Custom Date Format', 'site-reviews'),
149
-        'type' => 'text',
150
-    ],
151
-    'settings.reviews.assigned_links' => [
152
-        'default' => 'no',
153
-        'description' => __('Display a link to the assigned post of a review.', 'site-reviews'),
154
-        'label' => __('Enable Assigned Links', 'site-reviews'),
155
-        'type' => 'yes_no',
156
-    ],
157
-    'settings.reviews.avatars' => [
158
-        'default' => 'no',
159
-        'description' => __('Display reviewer avatars. These are generated from the email address of the reviewer using <a href="https://gravatar.com">Gravatar</a>.', 'site-reviews'),
160
-        'label' => __('Enable Avatars', 'site-reviews'),
161
-        'type' => 'yes_no',
162
-    ],
163
-    'settings.reviews.avatars_regenerate' => [
164
-        'default' => 'no',
165
-        'depends_on' => [
166
-            'settings.reviews.avatars' => 'yes',
167
-        ],
168
-        'description' => __('Regenerate the avatar whenever a local review is shown?', 'site-reviews'),
169
-        'label' => __('Regenerate Avatars', 'site-reviews'),
170
-        'type' => 'yes_no',
171
-    ],
172
-    'settings.reviews.avatars_size' => [
173
-        'default' => 40,
174
-        'depends_on' => [
175
-            'settings.reviews.avatars' => 'yes',
176
-        ],
177
-        'description' => __('Set the avatar size in pixels.', 'site-reviews'),
178
-        'label' => __('Avatar Size', 'site-reviews'),
179
-        'type' => 'number',
180
-    ],
181
-    'settings.reviews.excerpts' => [
182
-        'default' => 'yes',
183
-        'description' => __('Display an excerpt instead of the full review.', 'site-reviews'),
184
-        'label' => __('Enable Excerpts', 'site-reviews'),
185
-        'type' => 'yes_no',
186
-    ],
187
-    'settings.reviews.excerpts_length' => [
188
-        'default' => 55,
189
-        'depends_on' => [
190
-            'settings.reviews.excerpts' => 'yes',
191
-        ],
192
-        'description' => __('Set the excerpt word length.', 'site-reviews'),
193
-        'label' => __('Excerpt Length', 'site-reviews'),
194
-        'type' => 'number',
195
-    ],
196
-    'settings.reviews.fallback' => [
197
-        'default' => 'yes',
198
-        'description' => sprintf(__('Display the fallback text when there are no reviews to display. This can be changed on the %s page. You may also override this by using the "fallback" option on the shortcode. The default fallback text is: %s', 'site-reviews'),
199
-            '<a href="'.admin_url('edit.php?post_type=site-review&page=settings#!translations').'">'.__('Translations', 'site-reviews').'</a>',
200
-            '<code>'.__('There are no reviews yet. Be the first one to write one.', 'site-reviews').'</code>'
201
-        ),
202
-        'label' => __('Enable Fallback Text', 'site-reviews'),
203
-        'type' => 'yes_no',
204
-    ],
205
-    'settings.schema.type.default' => [
206
-        'default' => 'LocalBusiness',
207
-        'description' => __('Custom Field name', 'site-reviews').': <code>schema_type</code>',
208
-        'label' => __('Default Schema Type', 'site-reviews'),
209
-        'options' => [
210
-            'LocalBusiness' => __('Local Business', 'site-reviews'),
211
-            'Product' => __('Product', 'site-reviews'),
212
-            'custom' => __('Custom', 'site-reviews'),
213
-        ],
214
-        'type' => 'select',
215
-    ],
216
-    'settings.schema.type.custom' => [
217
-        'default' => '',
218
-        'depends_on' => [
219
-            'settings.schema.type.default' => 'custom',
220
-        ],
221
-        'description' => '<a href="https://schema.org/docs/schemas.html">'.__('View more information on schema types here', 'site-reviews').'</a>',
222
-        'label' => __('Custom Schema Type', 'site-reviews'),
223
-        'type' => 'text',
224
-    ],
225
-    'settings.schema.name.default' => [
226
-        'default' => 'post',
227
-        'description' => __('Custom Field name', 'site-reviews').': <code>schema_name</code>',
228
-        'label' => __('Default Name', 'site-reviews'),
229
-        'options' => [
230
-            'post' => __('Use the assigned or current page title', 'site-reviews'),
231
-            'custom' => __('Enter a custom title', 'site-reviews'),
232
-        ],
233
-        'type' => 'select',
234
-    ],
235
-    'settings.schema.name.custom' => [
236
-        'default' => '',
237
-        'depends_on' => [
238
-            'settings.schema.name.default' => 'custom',
239
-        ],
240
-        'label' => __('Custom Name', 'site-reviews'),
241
-        'type' => 'text',
242
-    ],
243
-    'settings.schema.description.default' => [
244
-        'default' => 'post',
245
-        'description' => __('Custom Field name', 'site-reviews').': <code>schema_description</code>',
246
-        'label' => __('Default Description', 'site-reviews'),
247
-        'options' => [
248
-            'post' => __('Use the assigned or current page excerpt', 'site-reviews'),
249
-            'custom' => __('Enter a custom description', 'site-reviews'),
250
-        ],
251
-        'type' => 'select',
252
-    ],
253
-    'settings.schema.description.custom' => [
254
-        'default' => '',
255
-        'depends_on' => [
256
-            'settings.schema.description.default' => 'custom',
257
-        ],
258
-        'label' => __('Custom Description', 'site-reviews'),
259
-        'type' => 'text',
260
-    ],
261
-    'settings.schema.url.default' => [
262
-        'default' => 'post',
263
-        'description' => __('Custom Field name', 'site-reviews').': <code>schema_url</code>',
264
-        'label' => __('Default URL', 'site-reviews'),
265
-        'options' => [
266
-            'post' => __('Use the assigned or current page URL', 'site-reviews'),
267
-            'custom' => __('Enter a custom URL', 'site-reviews'),
268
-        ],
269
-        'type' => 'select',
270
-    ],
271
-    'settings.schema.url.custom' => [
272
-        'default' => '',
273
-        'depends_on' => [
274
-            'settings.schema.url.default' => 'custom',
275
-        ],
276
-        'label' => __('Custom URL', 'site-reviews'),
277
-        'type' => 'text',
278
-    ],
279
-    'settings.schema.image.default' => [
280
-        'default' => 'post',
281
-        'description' => __('Custom Field name', 'site-reviews').': <code>schema_image</code>',
282
-        'label' => __('Default Image', 'site-reviews'),
283
-        'options' => [
284
-            'post' => __('Use the featured image of the assigned or current page', 'site-reviews'),
285
-            'custom' => __('Enter a custom image URL', 'site-reviews'),
286
-        ],
287
-        'type' => 'select',
288
-    ],
289
-    'settings.schema.image.custom' => [
290
-        'default' => '',
291
-        'depends_on' => [
292
-            'settings.schema.image.default' => 'custom',
293
-        ],
294
-        'label' => __('Custom Image URL', 'site-reviews'),
295
-        'type' => 'text',
296
-    ],
297
-    'settings.schema.address' => [
298
-        'default' => '',
299
-        'depends_on' => [
300
-            'settings.schema.type.default' => 'LocalBusiness',
301
-        ],
302
-        'description' => __('Custom Field name', 'site-reviews').': <code>schema_address</code>',
303
-        'label' => __('Address', 'site-reviews'),
304
-        'placeholder' => '60 29th Street #343, San Francisco, CA 94110, US',
305
-        'type' => 'text',
306
-    ],
307
-    'settings.schema.telephone' => [
308
-        'default' => '',
309
-        'depends_on' => [
310
-            'settings.schema.type.default' => 'LocalBusiness',
311
-        ],
312
-        'description' => __('Custom Field name', 'site-reviews').': <code>schema_telephone</code>',
313
-        'label' => __('Telephone Number', 'site-reviews'),
314
-        'placeholder' => '+1 (877) 273-3049',
315
-        'type' => 'text',
316
-    ],
317
-    'settings.schema.pricerange' => [
318
-        'default' => '',
319
-        'depends_on' => [
320
-            'settings.schema.type.default' => 'LocalBusiness',
321
-        ],
322
-        'description' => __('Custom Field name', 'site-reviews').': <code>schema_pricerange</code>',
323
-        'label' => __('Price Range', 'site-reviews'),
324
-        'placeholder' => '$$-$$$',
325
-        'type' => 'text',
326
-    ],
327
-    'settings.schema.offertype' => [
328
-        'default' => 'AggregateOffer',
329
-        'depends_on' => [
330
-            'settings.schema.type.default' => 'Product',
331
-        ],
332
-        'description' => __('Custom Field name', 'site-reviews').': <code>schema_offertype</code>',
333
-        'label' => __('Offer Type', 'site-reviews'),
334
-        'options' => [
335
-            'AggregateOffer' => __('AggregateOffer', 'site-reviews'),
336
-            'Offer' => __('Offer', 'site-reviews'),
337
-        ],
338
-        'type' => 'select',
339
-    ],
340
-    'settings.schema.price' => [
341
-        'default' => '',
342
-        'depends_on' => [
343
-            'settings.schema.type.default' => 'Product',
344
-            'settings.schema.offertype' => 'Offer',
345
-        ],
346
-        'description' => __('Custom Field name', 'site-reviews').': <code>schema_price</code>',
347
-        'label' => __('Price', 'site-reviews'),
348
-        'placeholder' => '50.00',
349
-        'type' => 'text',
350
-    ],
351
-    'settings.schema.lowprice' => [
352
-        'default' => '',
353
-        'depends_on' => [
354
-            'settings.schema.type.default' => 'Product',
355
-            'settings.schema.offertype' => 'AggregateOffer',
356
-        ],
357
-        'description' => __('Custom Field name', 'site-reviews').': <code>schema_lowprice</code>',
358
-        'label' => __('Low Price', 'site-reviews'),
359
-        'placeholder' => '10.00',
360
-        'type' => 'text',
361
-    ],
362
-    'settings.schema.highprice' => [
363
-        'default' => '',
364
-        'depends_on' => [
365
-            'settings.schema.type.default' => 'Product',
366
-            'settings.schema.offertype' => 'AggregateOffer',
367
-        ],
368
-        'description' => __('Custom Field name', 'site-reviews').': <code>schema_highprice</code>',
369
-        'label' => __('High Price', 'site-reviews'),
370
-        'placeholder' => '100.00',
371
-        'type' => 'text',
372
-    ],
373
-    'settings.schema.pricecurrency' => [
374
-        'default' => '',
375
-        'depends_on' => [
376
-            'settings.schema.type.default' => 'Product',
377
-        ],
378
-        'description' => __('Custom Field name', 'site-reviews').': <code>schema_pricecurrency</code>',
379
-        'label' => __('Price Currency', 'site-reviews'),
380
-        'placeholder' => 'USD',
381
-        'type' => 'text',
382
-    ],
383
-    'settings.submissions.required' => [
384
-        'default' => ['content', 'email', 'name', 'rating', 'terms', 'title'],
385
-        'description' => __('Choose which fields should be required in the submission form.', 'site-reviews'),
386
-        'label' => __('Required Fields', 'site-reviews'),
387
-        'options' => [
388
-            'rating' => __('Rating', 'site-reviews'),
389
-            'title' => __('Title', 'site-reviews'),
390
-            'content' => __('Review', 'site-reviews'),
391
-            'name' => __('Name', 'site-reviews'),
392
-            'email' => __('Email', 'site-reviews'),
393
-            'terms' => __('Terms', 'site-reviews'),
394
-        ],
395
-        'type' => 'checkbox',
396
-    ],
397
-    'settings.submissions.limit' => [
398
-        'default' => '',
399
-        'description' => __('Limits the number of reviews that can be submitted to one-per-person. If you are assigning reviews, then the limit will be applied to the assigned page or category.', 'site-reviews'),
400
-        'label' => __('Limit Reviews', 'site-reviews'),
401
-        'options' => [
402
-            '' => __('No Limit', 'site-reviews'),
403
-            'email' => __('By Email Address', 'site-reviews'),
404
-            'ip_address' => __('By IP Address', 'site-reviews'),
405
-            'username' => __('By Username (will only work for registered users)', 'site-reviews'),
406
-        ],
407
-        'type' => 'select',
408
-    ],
409
-    'settings.submissions.limit_whitelist.email' => [
410
-        'default' => '',
411
-        'depends_on' => [
412
-            'settings.submissions.limit' => ['email'],
413
-        ],
414
-        'description' => __('One Email per line. All emails in the whitelist will be excluded from the review submission limit.', 'site-reviews'),
415
-        'label' => __('Email Whitelist', 'site-reviews'),
416
-        'rows' => 5,
417
-        'type' => 'code',
418
-    ],
419
-    'settings.submissions.limit_whitelist.ip_address' => [
420
-        'default' => '',
421
-        'depends_on' => [
422
-            'settings.submissions.limit' => ['ip_address'],
423
-        ],
424
-        'description' => __('One IP Address per line. All IP Addresses in the whitelist will be excluded from the review submission limit..', 'site-reviews'),
425
-        'label' => __('IP Address Whitelist', 'site-reviews'),
426
-        'rows' => 5,
427
-        'type' => 'code',
428
-    ],
429
-    'settings.submissions.limit_whitelist.username' => [
430
-        'default' => '',
431
-        'depends_on' => [
432
-            'settings.submissions.limit' => ['username'],
433
-        ],
434
-        'description' => __('One Username per line. All registered users with a Username in the whitelist will be excluded from the review submission limit.', 'site-reviews'),
435
-        'label' => __('Username Whitelist', 'site-reviews'),
436
-        'rows' => 5,
437
-        'type' => 'code',
438
-    ],
439
-    'settings.submissions.recaptcha.integration' => [
440
-        'default' => '',
441
-        'description' => __('Invisible reCAPTCHA is a free anti-spam service from Google. To use it, you will need to <a href="https://www.google.com/recaptcha/admin" target="_blank">sign up</a> for an API key pair for your site.', 'site-reviews'),
442
-        'label' => __('Invisible reCAPTCHA', 'site-reviews'),
443
-        'options' => [
444
-            '' => 'Do not use reCAPTCHA',
445
-            'all' => 'Use reCAPTCHA',
446
-            'guest' => 'Use reCAPTCHA only for guest users',
447
-        ],
448
-        'type' => 'select',
449
-    ],
450
-    'settings.submissions.recaptcha.key' => [
451
-        'default' => '',
452
-        'depends_on' => [
453
-            'settings.submissions.recaptcha.integration' => ['all', 'guest'],
454
-        ],
455
-        'label' => __('Site Key', 'site-reviews'),
456
-        'type' => 'text',
457
-    ],
458
-    'settings.submissions.recaptcha.secret' => [
459
-        'default' => '',
460
-        'depends_on' => [
461
-            'settings.submissions.recaptcha.integration' => ['all', 'guest'],
462
-        ],
463
-        'label' => __('Site Secret', 'site-reviews'),
464
-        'type' => 'text',
465
-    ],
466
-    'settings.submissions.recaptcha.position' => [
467
-        'default' => 'bottomleft',
468
-        'depends_on' => [
469
-            'settings.submissions.recaptcha.integration' => ['all', 'guest'],
470
-        ],
471
-        'description' => __('This option may not work consistently if another plugin is loading reCAPTCHA on the same page as Site Reviews.', 'site-reviews'),
472
-        'label' => __('Badge Position', 'site-reviews'),
473
-        'options' => [
474
-            'bottomleft' => 'Bottom Left',
475
-            'bottomright' => 'Bottom Right',
476
-            'inline' => 'Inline',
477
-        ],
478
-        'type' => 'select',
479
-    ],
480
-    'settings.submissions.akismet' => [
481
-        'default' => 'no',
482
-        'description' => __('The <a href="https://akismet.com" target="_blank">Akismet plugin</a> integration provides spam-filtering for your reviews. In order for this setting to have any affect, you will need to first install and activate the Akismet plugin and set up a WordPress.com API key.', 'site-reviews'),
483
-        'label' => __('Enable Akismet Integration', 'site-reviews'),
484
-        'type' => 'yes_no',
485
-    ],
486
-    'settings.submissions.blacklist.integration' => [
487
-        'default' => '',
488
-        'description' => sprintf(__('Choose which Blacklist you would prefer to use for reviews. The %s can be found in the WordPress Discussion Settings page.', 'site-reviews'),
489
-            '<a href="'.admin_url('options-discussion.php#users_can_register').'">'.__('Comment Blacklist', 'site-reviews').'</a>'
490
-        ),
491
-        'label' => __('Blacklist', 'site-reviews'),
492
-        'options' => [
493
-            '' => 'Use the Site Reviews Blacklist',
494
-            'comments' => 'Use the WordPress Comment Blacklist',
495
-        ],
496
-        'type' => 'select',
497
-    ],
498
-    'settings.submissions.blacklist.entries' => [
499
-        'default' => '',
500
-        'depends_on' => [
501
-            'settings.submissions.blacklist.integration' => [''],
502
-        ],
503
-        'description' => __('One entry or IP address per line. When a review contains any of these entries in its title, content, name, email, or IP address, it will be rejected. It is case-insensitive and will match partial words, so "press" will match "WordPress".', 'site-reviews'),
504
-        'label' => __('Review Blacklist', 'site-reviews'),
505
-        'rows' => 10,
506
-        'type' => 'code',
507
-    ],
508
-    'settings.submissions.blacklist.action' => [
509
-        'default' => 'unapprove',
510
-        'description' => __('Choose the action that should be taken when a review is blacklisted.', 'site-reviews'),
511
-        'label' => __('Blacklist Action', 'site-reviews'),
512
-        'options' => [
513
-            'unapprove' => __('Require approval', 'site-reviews'),
514
-            'reject' => __('Reject submission', 'site-reviews'),
515
-        ],
516
-        'type' => 'select',
517
-    ],
4
+	'settings.general.style' => [
5
+		'default' => 'default',
6
+		'description' => __('Site Reviews relies on the CSS of your theme to style the submission form. If your theme does not provide proper CSS rules for form elements and you are using a WordPress plugin/theme or CSS Framework listed here, please try selecting it, otherwise choose "Site Reviews (default)".', 'site-reviews'),
7
+		'label' => __('Plugin Style', 'site-reviews'),
8
+		'options' => [
9
+			'bootstrap_4' => 'CSS Framework: Bootstrap 4',
10
+			'bootstrap_4_custom' => 'CSS Framework: Bootstrap 4 (Custom Forms)',
11
+			'contact_form_7' => 'Plugin: Contact Form 7 (v5)',
12
+			'ninja_forms' => 'Plugin: Ninja Forms (v3)',
13
+			'wpforms' => 'Plugin: WPForms Lite (v1)',
14
+			'default' => __('Site Reviews (default)', 'site-reviews'),
15
+			'minimal' => __('Site Reviews (minimal)', 'site-reviews'),
16
+			'divi' => 'Theme: Divi (v3)',
17
+			'materialize' => 'Theme: Materialize',
18
+			'twentyfifteen' => 'Theme: Twenty Fifteen',
19
+			'twentyseventeen' => 'Theme: Twenty Seventeen',
20
+			'twentynineteen' => 'Theme: Twenty Nineteen',
21
+		],
22
+		'type' => 'select',
23
+	],
24
+	'settings.general.require.approval' => [
25
+		'default' => 'no',
26
+		'description' => __('Set the status of new review submissions to "unapproved".', 'site-reviews'),
27
+		'label' => __('Require Approval', 'site-reviews'),
28
+		'type' => 'yes_no',
29
+	],
30
+	'settings.general.require.login' => [
31
+		'default' => 'no',
32
+		'description' => __('Only allow review submissions from registered users.', 'site-reviews'),
33
+		'label' => __('Require Login', 'site-reviews'),
34
+		'type' => 'yes_no',
35
+	],
36
+	'settings.general.require.login_register' => [
37
+		'default' => 'no',
38
+		'depends_on' => [
39
+			'settings.general.require.login' => 'yes',
40
+		],
41
+		'description' => sprintf(__('Show a link for a new user to register. The %s Membership option must be enabled in General Settings for this to work.', 'site-reviews'),
42
+			'<a href="'.admin_url('options-general.php#users_can_register').'">'.__('Anyone can register', 'site-reviews').'</a>'
43
+		),
44
+		'label' => __('Show Registration Link', 'site-reviews'),
45
+		'type' => 'yes_no',
46
+	],
47
+	'settings.general.multilingual' => [
48
+		'default' => '',
49
+		'description' => __('Integrate with a multilingual plugin to calculate ratings for all languages of a post.', 'site-reviews'),
50
+		'label' => __('Multilingual', 'site-reviews'),
51
+		'options' => [
52
+			'' => __('No Integration', 'site-reviews'),
53
+			'polylang' => __('Integrate with Polylang', 'site-reviews'),
54
+			'wpml' => __('Integrate with WPML', 'site-reviews'),
55
+		],
56
+		'type' => 'select',
57
+	],
58
+	'settings.general.rebusify' => [
59
+		'default' => 'no',
60
+		'description' => sprintf(__('Integrate with the %s and sync your reviews to the blockchain to increase online reputation, trust, and transparency.', 'site-reviews'),
61
+			'<a href="https://www.rebusify.com?ref=105">Rebusify Confidence System</a>'
62
+		),
63
+		'label' => __('Sync to Blockchain', 'site-reviews'),
64
+		'type' => 'yes_no',
65
+	],
66
+	'settings.general.rebusify_api_key' => [
67
+		'default' => '',
68
+		'depends_on' => [
69
+			'settings.general.rebusify' => ['yes'],
70
+		],
71
+		'description' => sprintf(__('Get a free Rebusify API key from %s.', 'site-reviews'),
72
+			'<a href="https://rebusify.com?ref=105">rebusify.com</a>'
73
+		),
74
+		'label' => __('Rebusify API key', 'site-reviews'),
75
+		'type' => 'text',
76
+	],
77
+	'settings.general.notifications' => [
78
+		'default' => [],
79
+		'label' => __('Notifications', 'site-reviews'),
80
+		'options' => [
81
+			'admin' => __('Send to administrator', 'site-reviews').' <code>'.(string) get_option('admin_email').'</code>',
82
+			'author' => __('Send to author of the page that the review is assigned to', 'site-reviews'),
83
+			'custom' => __('Send to one or more email addresses', 'site-reviews'),
84
+			'slack' => __('Send to <a href="https://slack.com/">Slack</a>', 'site-reviews'),
85
+		],
86
+		'type' => 'checkbox',
87
+	],
88
+	'settings.general.notification_email' => [
89
+		'default' => '',
90
+		'depends_on' => [
91
+			'settings.general.notifications' => ['custom'],
92
+		],
93
+		'label' => __('Send Notification Emails To', 'site-reviews'),
94
+		'placeholder' => __('Separate multiple emails with a comma', 'site-reviews'),
95
+		'type' => 'text',
96
+	],
97
+	'settings.general.notification_slack' => [
98
+		'default' => '',
99
+		'depends_on' => [
100
+			'settings.general.notifications' => ['slack'],
101
+		],
102
+		'description' => sprintf(__('To send notifications to Slack, create a new %s and then paste the provided Webhook URL in the field above.', 'site-reviews'),
103
+			'<a href="https://api.slack.com/incoming-webhooks">'.__('Incoming WebHook', 'site-reviews').'</a>'
104
+		),
105
+		'label' => __('Slack Webhook URL', 'site-reviews'),
106
+		'type' => 'text',
107
+	],
108
+	'settings.general.notification_message' => [
109
+		'default' => glsr('Modules\Html\Template')->build('templates/email-notification'),
110
+		'depends_on' => [
111
+			'settings.general.notifications' => ['admin', 'author', 'custom', 'slack'],
112
+		],
113
+		'description' => __(
114
+			'To restore the default text, save an empty template. '.
115
+			'If you are sending notifications to Slack then this template will only be used as a fallback in the event that <a href="https://api.slack.com/docs/attachments">Message Attachments</a> have been disabled. Available template tags:'.
116
+			'<br><code>{review_rating}</code> The review rating number (1-5)'.
117
+			'<br><code>{review_title}</code> The review title'.
118
+			'<br><code>{review_content}</code> The review content'.
119
+			'<br><code>{review_author}</code> The review author'.
120
+			'<br><code>{review_email}</code> The email of the review author'.
121
+			'<br><code>{review_ip}</code> The IP address of the review author'.
122
+			'<br><code>{review_link}</code> The link to edit/view a review',
123
+			'site-reviews'
124
+		),
125
+		'label' => __('Notification Template', 'site-reviews'),
126
+		'rows' => 10,
127
+		'type' => 'code',
128
+	],
129
+	'settings.reviews.date.format' => [
130
+		'default' => '',
131
+		'description' => sprintf(__('The default date format is the one set in your %s.', 'site-reviews'),
132
+			'<a href="'.admin_url('options-general.php#date_format_custom').'">'.__('WordPress settings', 'site-reviews').'</a>'
133
+		),
134
+		'label' => __('Date Format', 'site-reviews'),
135
+		'options' => [
136
+			'' => __('Use the default date format', 'site-reviews'),
137
+			'relative' => __('Use a relative date format', 'site-reviews'),
138
+			'custom' => __('Use a custom date format', 'site-reviews'),
139
+		],
140
+		'type' => 'select',
141
+	],
142
+	'settings.reviews.date.custom' => [
143
+		'default' => get_option('date_format'),
144
+		'depends_on' => [
145
+			'settings.reviews.date.format' => 'custom',
146
+		],
147
+		'description' => __('Enter a custom date format (<a href="https://codex.wordpress.org/Formatting_Date_and_Time">documentation on date and time formatting</a>).', 'site-reviews'),
148
+		'label' => __('Custom Date Format', 'site-reviews'),
149
+		'type' => 'text',
150
+	],
151
+	'settings.reviews.assigned_links' => [
152
+		'default' => 'no',
153
+		'description' => __('Display a link to the assigned post of a review.', 'site-reviews'),
154
+		'label' => __('Enable Assigned Links', 'site-reviews'),
155
+		'type' => 'yes_no',
156
+	],
157
+	'settings.reviews.avatars' => [
158
+		'default' => 'no',
159
+		'description' => __('Display reviewer avatars. These are generated from the email address of the reviewer using <a href="https://gravatar.com">Gravatar</a>.', 'site-reviews'),
160
+		'label' => __('Enable Avatars', 'site-reviews'),
161
+		'type' => 'yes_no',
162
+	],
163
+	'settings.reviews.avatars_regenerate' => [
164
+		'default' => 'no',
165
+		'depends_on' => [
166
+			'settings.reviews.avatars' => 'yes',
167
+		],
168
+		'description' => __('Regenerate the avatar whenever a local review is shown?', 'site-reviews'),
169
+		'label' => __('Regenerate Avatars', 'site-reviews'),
170
+		'type' => 'yes_no',
171
+	],
172
+	'settings.reviews.avatars_size' => [
173
+		'default' => 40,
174
+		'depends_on' => [
175
+			'settings.reviews.avatars' => 'yes',
176
+		],
177
+		'description' => __('Set the avatar size in pixels.', 'site-reviews'),
178
+		'label' => __('Avatar Size', 'site-reviews'),
179
+		'type' => 'number',
180
+	],
181
+	'settings.reviews.excerpts' => [
182
+		'default' => 'yes',
183
+		'description' => __('Display an excerpt instead of the full review.', 'site-reviews'),
184
+		'label' => __('Enable Excerpts', 'site-reviews'),
185
+		'type' => 'yes_no',
186
+	],
187
+	'settings.reviews.excerpts_length' => [
188
+		'default' => 55,
189
+		'depends_on' => [
190
+			'settings.reviews.excerpts' => 'yes',
191
+		],
192
+		'description' => __('Set the excerpt word length.', 'site-reviews'),
193
+		'label' => __('Excerpt Length', 'site-reviews'),
194
+		'type' => 'number',
195
+	],
196
+	'settings.reviews.fallback' => [
197
+		'default' => 'yes',
198
+		'description' => sprintf(__('Display the fallback text when there are no reviews to display. This can be changed on the %s page. You may also override this by using the "fallback" option on the shortcode. The default fallback text is: %s', 'site-reviews'),
199
+			'<a href="'.admin_url('edit.php?post_type=site-review&page=settings#!translations').'">'.__('Translations', 'site-reviews').'</a>',
200
+			'<code>'.__('There are no reviews yet. Be the first one to write one.', 'site-reviews').'</code>'
201
+		),
202
+		'label' => __('Enable Fallback Text', 'site-reviews'),
203
+		'type' => 'yes_no',
204
+	],
205
+	'settings.schema.type.default' => [
206
+		'default' => 'LocalBusiness',
207
+		'description' => __('Custom Field name', 'site-reviews').': <code>schema_type</code>',
208
+		'label' => __('Default Schema Type', 'site-reviews'),
209
+		'options' => [
210
+			'LocalBusiness' => __('Local Business', 'site-reviews'),
211
+			'Product' => __('Product', 'site-reviews'),
212
+			'custom' => __('Custom', 'site-reviews'),
213
+		],
214
+		'type' => 'select',
215
+	],
216
+	'settings.schema.type.custom' => [
217
+		'default' => '',
218
+		'depends_on' => [
219
+			'settings.schema.type.default' => 'custom',
220
+		],
221
+		'description' => '<a href="https://schema.org/docs/schemas.html">'.__('View more information on schema types here', 'site-reviews').'</a>',
222
+		'label' => __('Custom Schema Type', 'site-reviews'),
223
+		'type' => 'text',
224
+	],
225
+	'settings.schema.name.default' => [
226
+		'default' => 'post',
227
+		'description' => __('Custom Field name', 'site-reviews').': <code>schema_name</code>',
228
+		'label' => __('Default Name', 'site-reviews'),
229
+		'options' => [
230
+			'post' => __('Use the assigned or current page title', 'site-reviews'),
231
+			'custom' => __('Enter a custom title', 'site-reviews'),
232
+		],
233
+		'type' => 'select',
234
+	],
235
+	'settings.schema.name.custom' => [
236
+		'default' => '',
237
+		'depends_on' => [
238
+			'settings.schema.name.default' => 'custom',
239
+		],
240
+		'label' => __('Custom Name', 'site-reviews'),
241
+		'type' => 'text',
242
+	],
243
+	'settings.schema.description.default' => [
244
+		'default' => 'post',
245
+		'description' => __('Custom Field name', 'site-reviews').': <code>schema_description</code>',
246
+		'label' => __('Default Description', 'site-reviews'),
247
+		'options' => [
248
+			'post' => __('Use the assigned or current page excerpt', 'site-reviews'),
249
+			'custom' => __('Enter a custom description', 'site-reviews'),
250
+		],
251
+		'type' => 'select',
252
+	],
253
+	'settings.schema.description.custom' => [
254
+		'default' => '',
255
+		'depends_on' => [
256
+			'settings.schema.description.default' => 'custom',
257
+		],
258
+		'label' => __('Custom Description', 'site-reviews'),
259
+		'type' => 'text',
260
+	],
261
+	'settings.schema.url.default' => [
262
+		'default' => 'post',
263
+		'description' => __('Custom Field name', 'site-reviews').': <code>schema_url</code>',
264
+		'label' => __('Default URL', 'site-reviews'),
265
+		'options' => [
266
+			'post' => __('Use the assigned or current page URL', 'site-reviews'),
267
+			'custom' => __('Enter a custom URL', 'site-reviews'),
268
+		],
269
+		'type' => 'select',
270
+	],
271
+	'settings.schema.url.custom' => [
272
+		'default' => '',
273
+		'depends_on' => [
274
+			'settings.schema.url.default' => 'custom',
275
+		],
276
+		'label' => __('Custom URL', 'site-reviews'),
277
+		'type' => 'text',
278
+	],
279
+	'settings.schema.image.default' => [
280
+		'default' => 'post',
281
+		'description' => __('Custom Field name', 'site-reviews').': <code>schema_image</code>',
282
+		'label' => __('Default Image', 'site-reviews'),
283
+		'options' => [
284
+			'post' => __('Use the featured image of the assigned or current page', 'site-reviews'),
285
+			'custom' => __('Enter a custom image URL', 'site-reviews'),
286
+		],
287
+		'type' => 'select',
288
+	],
289
+	'settings.schema.image.custom' => [
290
+		'default' => '',
291
+		'depends_on' => [
292
+			'settings.schema.image.default' => 'custom',
293
+		],
294
+		'label' => __('Custom Image URL', 'site-reviews'),
295
+		'type' => 'text',
296
+	],
297
+	'settings.schema.address' => [
298
+		'default' => '',
299
+		'depends_on' => [
300
+			'settings.schema.type.default' => 'LocalBusiness',
301
+		],
302
+		'description' => __('Custom Field name', 'site-reviews').': <code>schema_address</code>',
303
+		'label' => __('Address', 'site-reviews'),
304
+		'placeholder' => '60 29th Street #343, San Francisco, CA 94110, US',
305
+		'type' => 'text',
306
+	],
307
+	'settings.schema.telephone' => [
308
+		'default' => '',
309
+		'depends_on' => [
310
+			'settings.schema.type.default' => 'LocalBusiness',
311
+		],
312
+		'description' => __('Custom Field name', 'site-reviews').': <code>schema_telephone</code>',
313
+		'label' => __('Telephone Number', 'site-reviews'),
314
+		'placeholder' => '+1 (877) 273-3049',
315
+		'type' => 'text',
316
+	],
317
+	'settings.schema.pricerange' => [
318
+		'default' => '',
319
+		'depends_on' => [
320
+			'settings.schema.type.default' => 'LocalBusiness',
321
+		],
322
+		'description' => __('Custom Field name', 'site-reviews').': <code>schema_pricerange</code>',
323
+		'label' => __('Price Range', 'site-reviews'),
324
+		'placeholder' => '$$-$$$',
325
+		'type' => 'text',
326
+	],
327
+	'settings.schema.offertype' => [
328
+		'default' => 'AggregateOffer',
329
+		'depends_on' => [
330
+			'settings.schema.type.default' => 'Product',
331
+		],
332
+		'description' => __('Custom Field name', 'site-reviews').': <code>schema_offertype</code>',
333
+		'label' => __('Offer Type', 'site-reviews'),
334
+		'options' => [
335
+			'AggregateOffer' => __('AggregateOffer', 'site-reviews'),
336
+			'Offer' => __('Offer', 'site-reviews'),
337
+		],
338
+		'type' => 'select',
339
+	],
340
+	'settings.schema.price' => [
341
+		'default' => '',
342
+		'depends_on' => [
343
+			'settings.schema.type.default' => 'Product',
344
+			'settings.schema.offertype' => 'Offer',
345
+		],
346
+		'description' => __('Custom Field name', 'site-reviews').': <code>schema_price</code>',
347
+		'label' => __('Price', 'site-reviews'),
348
+		'placeholder' => '50.00',
349
+		'type' => 'text',
350
+	],
351
+	'settings.schema.lowprice' => [
352
+		'default' => '',
353
+		'depends_on' => [
354
+			'settings.schema.type.default' => 'Product',
355
+			'settings.schema.offertype' => 'AggregateOffer',
356
+		],
357
+		'description' => __('Custom Field name', 'site-reviews').': <code>schema_lowprice</code>',
358
+		'label' => __('Low Price', 'site-reviews'),
359
+		'placeholder' => '10.00',
360
+		'type' => 'text',
361
+	],
362
+	'settings.schema.highprice' => [
363
+		'default' => '',
364
+		'depends_on' => [
365
+			'settings.schema.type.default' => 'Product',
366
+			'settings.schema.offertype' => 'AggregateOffer',
367
+		],
368
+		'description' => __('Custom Field name', 'site-reviews').': <code>schema_highprice</code>',
369
+		'label' => __('High Price', 'site-reviews'),
370
+		'placeholder' => '100.00',
371
+		'type' => 'text',
372
+	],
373
+	'settings.schema.pricecurrency' => [
374
+		'default' => '',
375
+		'depends_on' => [
376
+			'settings.schema.type.default' => 'Product',
377
+		],
378
+		'description' => __('Custom Field name', 'site-reviews').': <code>schema_pricecurrency</code>',
379
+		'label' => __('Price Currency', 'site-reviews'),
380
+		'placeholder' => 'USD',
381
+		'type' => 'text',
382
+	],
383
+	'settings.submissions.required' => [
384
+		'default' => ['content', 'email', 'name', 'rating', 'terms', 'title'],
385
+		'description' => __('Choose which fields should be required in the submission form.', 'site-reviews'),
386
+		'label' => __('Required Fields', 'site-reviews'),
387
+		'options' => [
388
+			'rating' => __('Rating', 'site-reviews'),
389
+			'title' => __('Title', 'site-reviews'),
390
+			'content' => __('Review', 'site-reviews'),
391
+			'name' => __('Name', 'site-reviews'),
392
+			'email' => __('Email', 'site-reviews'),
393
+			'terms' => __('Terms', 'site-reviews'),
394
+		],
395
+		'type' => 'checkbox',
396
+	],
397
+	'settings.submissions.limit' => [
398
+		'default' => '',
399
+		'description' => __('Limits the number of reviews that can be submitted to one-per-person. If you are assigning reviews, then the limit will be applied to the assigned page or category.', 'site-reviews'),
400
+		'label' => __('Limit Reviews', 'site-reviews'),
401
+		'options' => [
402
+			'' => __('No Limit', 'site-reviews'),
403
+			'email' => __('By Email Address', 'site-reviews'),
404
+			'ip_address' => __('By IP Address', 'site-reviews'),
405
+			'username' => __('By Username (will only work for registered users)', 'site-reviews'),
406
+		],
407
+		'type' => 'select',
408
+	],
409
+	'settings.submissions.limit_whitelist.email' => [
410
+		'default' => '',
411
+		'depends_on' => [
412
+			'settings.submissions.limit' => ['email'],
413
+		],
414
+		'description' => __('One Email per line. All emails in the whitelist will be excluded from the review submission limit.', 'site-reviews'),
415
+		'label' => __('Email Whitelist', 'site-reviews'),
416
+		'rows' => 5,
417
+		'type' => 'code',
418
+	],
419
+	'settings.submissions.limit_whitelist.ip_address' => [
420
+		'default' => '',
421
+		'depends_on' => [
422
+			'settings.submissions.limit' => ['ip_address'],
423
+		],
424
+		'description' => __('One IP Address per line. All IP Addresses in the whitelist will be excluded from the review submission limit..', 'site-reviews'),
425
+		'label' => __('IP Address Whitelist', 'site-reviews'),
426
+		'rows' => 5,
427
+		'type' => 'code',
428
+	],
429
+	'settings.submissions.limit_whitelist.username' => [
430
+		'default' => '',
431
+		'depends_on' => [
432
+			'settings.submissions.limit' => ['username'],
433
+		],
434
+		'description' => __('One Username per line. All registered users with a Username in the whitelist will be excluded from the review submission limit.', 'site-reviews'),
435
+		'label' => __('Username Whitelist', 'site-reviews'),
436
+		'rows' => 5,
437
+		'type' => 'code',
438
+	],
439
+	'settings.submissions.recaptcha.integration' => [
440
+		'default' => '',
441
+		'description' => __('Invisible reCAPTCHA is a free anti-spam service from Google. To use it, you will need to <a href="https://www.google.com/recaptcha/admin" target="_blank">sign up</a> for an API key pair for your site.', 'site-reviews'),
442
+		'label' => __('Invisible reCAPTCHA', 'site-reviews'),
443
+		'options' => [
444
+			'' => 'Do not use reCAPTCHA',
445
+			'all' => 'Use reCAPTCHA',
446
+			'guest' => 'Use reCAPTCHA only for guest users',
447
+		],
448
+		'type' => 'select',
449
+	],
450
+	'settings.submissions.recaptcha.key' => [
451
+		'default' => '',
452
+		'depends_on' => [
453
+			'settings.submissions.recaptcha.integration' => ['all', 'guest'],
454
+		],
455
+		'label' => __('Site Key', 'site-reviews'),
456
+		'type' => 'text',
457
+	],
458
+	'settings.submissions.recaptcha.secret' => [
459
+		'default' => '',
460
+		'depends_on' => [
461
+			'settings.submissions.recaptcha.integration' => ['all', 'guest'],
462
+		],
463
+		'label' => __('Site Secret', 'site-reviews'),
464
+		'type' => 'text',
465
+	],
466
+	'settings.submissions.recaptcha.position' => [
467
+		'default' => 'bottomleft',
468
+		'depends_on' => [
469
+			'settings.submissions.recaptcha.integration' => ['all', 'guest'],
470
+		],
471
+		'description' => __('This option may not work consistently if another plugin is loading reCAPTCHA on the same page as Site Reviews.', 'site-reviews'),
472
+		'label' => __('Badge Position', 'site-reviews'),
473
+		'options' => [
474
+			'bottomleft' => 'Bottom Left',
475
+			'bottomright' => 'Bottom Right',
476
+			'inline' => 'Inline',
477
+		],
478
+		'type' => 'select',
479
+	],
480
+	'settings.submissions.akismet' => [
481
+		'default' => 'no',
482
+		'description' => __('The <a href="https://akismet.com" target="_blank">Akismet plugin</a> integration provides spam-filtering for your reviews. In order for this setting to have any affect, you will need to first install and activate the Akismet plugin and set up a WordPress.com API key.', 'site-reviews'),
483
+		'label' => __('Enable Akismet Integration', 'site-reviews'),
484
+		'type' => 'yes_no',
485
+	],
486
+	'settings.submissions.blacklist.integration' => [
487
+		'default' => '',
488
+		'description' => sprintf(__('Choose which Blacklist you would prefer to use for reviews. The %s can be found in the WordPress Discussion Settings page.', 'site-reviews'),
489
+			'<a href="'.admin_url('options-discussion.php#users_can_register').'">'.__('Comment Blacklist', 'site-reviews').'</a>'
490
+		),
491
+		'label' => __('Blacklist', 'site-reviews'),
492
+		'options' => [
493
+			'' => 'Use the Site Reviews Blacklist',
494
+			'comments' => 'Use the WordPress Comment Blacklist',
495
+		],
496
+		'type' => 'select',
497
+	],
498
+	'settings.submissions.blacklist.entries' => [
499
+		'default' => '',
500
+		'depends_on' => [
501
+			'settings.submissions.blacklist.integration' => [''],
502
+		],
503
+		'description' => __('One entry or IP address per line. When a review contains any of these entries in its title, content, name, email, or IP address, it will be rejected. It is case-insensitive and will match partial words, so "press" will match "WordPress".', 'site-reviews'),
504
+		'label' => __('Review Blacklist', 'site-reviews'),
505
+		'rows' => 10,
506
+		'type' => 'code',
507
+	],
508
+	'settings.submissions.blacklist.action' => [
509
+		'default' => 'unapprove',
510
+		'description' => __('Choose the action that should be taken when a review is blacklisted.', 'site-reviews'),
511
+		'label' => __('Blacklist Action', 'site-reviews'),
512
+		'options' => [
513
+			'unapprove' => __('Require approval', 'site-reviews'),
514
+			'reject' => __('Reject submission', 'site-reviews'),
515
+		],
516
+		'type' => 'select',
517
+	],
518 518
 ];
Please login to merge, or discard this patch.
Spacing   +139 added lines, -139 removed lines patch added patch discarded remove patch
@@ -3,16 +3,16 @@  discard block
 block discarded – undo
3 3
 return [
4 4
     'settings.general.style' => [
5 5
         'default' => 'default',
6
-        'description' => __('Site Reviews relies on the CSS of your theme to style the submission form. If your theme does not provide proper CSS rules for form elements and you are using a WordPress plugin/theme or CSS Framework listed here, please try selecting it, otherwise choose "Site Reviews (default)".', 'site-reviews'),
7
-        'label' => __('Plugin Style', 'site-reviews'),
6
+        'description' => __( 'Site Reviews relies on the CSS of your theme to style the submission form. If your theme does not provide proper CSS rules for form elements and you are using a WordPress plugin/theme or CSS Framework listed here, please try selecting it, otherwise choose "Site Reviews (default)".', 'site-reviews' ),
7
+        'label' => __( 'Plugin Style', 'site-reviews' ),
8 8
         'options' => [
9 9
             'bootstrap_4' => 'CSS Framework: Bootstrap 4',
10 10
             'bootstrap_4_custom' => 'CSS Framework: Bootstrap 4 (Custom Forms)',
11 11
             'contact_form_7' => 'Plugin: Contact Form 7 (v5)',
12 12
             'ninja_forms' => 'Plugin: Ninja Forms (v3)',
13 13
             'wpforms' => 'Plugin: WPForms Lite (v1)',
14
-            'default' => __('Site Reviews (default)', 'site-reviews'),
15
-            'minimal' => __('Site Reviews (minimal)', 'site-reviews'),
14
+            'default' => __( 'Site Reviews (default)', 'site-reviews' ),
15
+            'minimal' => __( 'Site Reviews (minimal)', 'site-reviews' ),
16 16
             'divi' => 'Theme: Divi (v3)',
17 17
             'materialize' => 'Theme: Materialize',
18 18
             'twentyfifteen' => 'Theme: Twenty Fifteen',
@@ -23,14 +23,14 @@  discard block
 block discarded – undo
23 23
     ],
24 24
     'settings.general.require.approval' => [
25 25
         'default' => 'no',
26
-        'description' => __('Set the status of new review submissions to "unapproved".', 'site-reviews'),
27
-        'label' => __('Require Approval', 'site-reviews'),
26
+        'description' => __( 'Set the status of new review submissions to "unapproved".', 'site-reviews' ),
27
+        'label' => __( 'Require Approval', 'site-reviews' ),
28 28
         'type' => 'yes_no',
29 29
     ],
30 30
     'settings.general.require.login' => [
31 31
         'default' => 'no',
32
-        'description' => __('Only allow review submissions from registered users.', 'site-reviews'),
33
-        'label' => __('Require Login', 'site-reviews'),
32
+        'description' => __( 'Only allow review submissions from registered users.', 'site-reviews' ),
33
+        'label' => __( 'Require Login', 'site-reviews' ),
34 34
         'type' => 'yes_no',
35 35
     ],
36 36
     'settings.general.require.login_register' => [
@@ -38,29 +38,29 @@  discard block
 block discarded – undo
38 38
         'depends_on' => [
39 39
             'settings.general.require.login' => 'yes',
40 40
         ],
41
-        'description' => sprintf(__('Show a link for a new user to register. The %s Membership option must be enabled in General Settings for this to work.', 'site-reviews'),
42
-            '<a href="'.admin_url('options-general.php#users_can_register').'">'.__('Anyone can register', 'site-reviews').'</a>'
41
+        'description' => sprintf( __( 'Show a link for a new user to register. The %s Membership option must be enabled in General Settings for this to work.', 'site-reviews' ),
42
+            '<a href="'.admin_url( 'options-general.php#users_can_register' ).'">'.__( 'Anyone can register', 'site-reviews' ).'</a>'
43 43
         ),
44
-        'label' => __('Show Registration Link', 'site-reviews'),
44
+        'label' => __( 'Show Registration Link', 'site-reviews' ),
45 45
         'type' => 'yes_no',
46 46
     ],
47 47
     'settings.general.multilingual' => [
48 48
         'default' => '',
49
-        'description' => __('Integrate with a multilingual plugin to calculate ratings for all languages of a post.', 'site-reviews'),
50
-        'label' => __('Multilingual', 'site-reviews'),
49
+        'description' => __( 'Integrate with a multilingual plugin to calculate ratings for all languages of a post.', 'site-reviews' ),
50
+        'label' => __( 'Multilingual', 'site-reviews' ),
51 51
         'options' => [
52
-            '' => __('No Integration', 'site-reviews'),
53
-            'polylang' => __('Integrate with Polylang', 'site-reviews'),
54
-            'wpml' => __('Integrate with WPML', 'site-reviews'),
52
+            '' => __( 'No Integration', 'site-reviews' ),
53
+            'polylang' => __( 'Integrate with Polylang', 'site-reviews' ),
54
+            'wpml' => __( 'Integrate with WPML', 'site-reviews' ),
55 55
         ],
56 56
         'type' => 'select',
57 57
     ],
58 58
     'settings.general.rebusify' => [
59 59
         'default' => 'no',
60
-        'description' => sprintf(__('Integrate with the %s and sync your reviews to the blockchain to increase online reputation, trust, and transparency.', 'site-reviews'),
60
+        'description' => sprintf( __( 'Integrate with the %s and sync your reviews to the blockchain to increase online reputation, trust, and transparency.', 'site-reviews' ),
61 61
             '<a href="https://www.rebusify.com?ref=105">Rebusify Confidence System</a>'
62 62
         ),
63
-        'label' => __('Sync to Blockchain', 'site-reviews'),
63
+        'label' => __( 'Sync to Blockchain', 'site-reviews' ),
64 64
         'type' => 'yes_no',
65 65
     ],
66 66
     'settings.general.rebusify_api_key' => [
@@ -68,20 +68,20 @@  discard block
 block discarded – undo
68 68
         'depends_on' => [
69 69
             'settings.general.rebusify' => ['yes'],
70 70
         ],
71
-        'description' => sprintf(__('Get a free Rebusify API key from %s.', 'site-reviews'),
71
+        'description' => sprintf( __( 'Get a free Rebusify API key from %s.', 'site-reviews' ),
72 72
             '<a href="https://rebusify.com?ref=105">rebusify.com</a>'
73 73
         ),
74
-        'label' => __('Rebusify API key', 'site-reviews'),
74
+        'label' => __( 'Rebusify API key', 'site-reviews' ),
75 75
         'type' => 'text',
76 76
     ],
77 77
     'settings.general.notifications' => [
78 78
         'default' => [],
79
-        'label' => __('Notifications', 'site-reviews'),
79
+        'label' => __( 'Notifications', 'site-reviews' ),
80 80
         'options' => [
81
-            'admin' => __('Send to administrator', 'site-reviews').' <code>'.(string) get_option('admin_email').'</code>',
82
-            'author' => __('Send to author of the page that the review is assigned to', 'site-reviews'),
83
-            'custom' => __('Send to one or more email addresses', 'site-reviews'),
84
-            'slack' => __('Send to <a href="https://slack.com/">Slack</a>', 'site-reviews'),
81
+            'admin' => __( 'Send to administrator', 'site-reviews' ).' <code>'.(string)get_option( 'admin_email' ).'</code>',
82
+            'author' => __( 'Send to author of the page that the review is assigned to', 'site-reviews' ),
83
+            'custom' => __( 'Send to one or more email addresses', 'site-reviews' ),
84
+            'slack' => __( 'Send to <a href="https://slack.com/">Slack</a>', 'site-reviews' ),
85 85
         ],
86 86
         'type' => 'checkbox',
87 87
     ],
@@ -90,8 +90,8 @@  discard block
 block discarded – undo
90 90
         'depends_on' => [
91 91
             'settings.general.notifications' => ['custom'],
92 92
         ],
93
-        'label' => __('Send Notification Emails To', 'site-reviews'),
94
-        'placeholder' => __('Separate multiple emails with a comma', 'site-reviews'),
93
+        'label' => __( 'Send Notification Emails To', 'site-reviews' ),
94
+        'placeholder' => __( 'Separate multiple emails with a comma', 'site-reviews' ),
95 95
         'type' => 'text',
96 96
     ],
97 97
     'settings.general.notification_slack' => [
@@ -99,14 +99,14 @@  discard block
 block discarded – undo
99 99
         'depends_on' => [
100 100
             'settings.general.notifications' => ['slack'],
101 101
         ],
102
-        'description' => sprintf(__('To send notifications to Slack, create a new %s and then paste the provided Webhook URL in the field above.', 'site-reviews'),
103
-            '<a href="https://api.slack.com/incoming-webhooks">'.__('Incoming WebHook', 'site-reviews').'</a>'
102
+        'description' => sprintf( __( 'To send notifications to Slack, create a new %s and then paste the provided Webhook URL in the field above.', 'site-reviews' ),
103
+            '<a href="https://api.slack.com/incoming-webhooks">'.__( 'Incoming WebHook', 'site-reviews' ).'</a>'
104 104
         ),
105
-        'label' => __('Slack Webhook URL', 'site-reviews'),
105
+        'label' => __( 'Slack Webhook URL', 'site-reviews' ),
106 106
         'type' => 'text',
107 107
     ],
108 108
     'settings.general.notification_message' => [
109
-        'default' => glsr('Modules\Html\Template')->build('templates/email-notification'),
109
+        'default' => glsr( 'Modules\Html\Template' )->build( 'templates/email-notification' ),
110 110
         'depends_on' => [
111 111
             'settings.general.notifications' => ['admin', 'author', 'custom', 'slack'],
112 112
         ],
@@ -122,42 +122,42 @@  discard block
 block discarded – undo
122 122
             '<br><code>{review_link}</code> The link to edit/view a review',
123 123
             'site-reviews'
124 124
         ),
125
-        'label' => __('Notification Template', 'site-reviews'),
125
+        'label' => __( 'Notification Template', 'site-reviews' ),
126 126
         'rows' => 10,
127 127
         'type' => 'code',
128 128
     ],
129 129
     'settings.reviews.date.format' => [
130 130
         'default' => '',
131
-        'description' => sprintf(__('The default date format is the one set in your %s.', 'site-reviews'),
132
-            '<a href="'.admin_url('options-general.php#date_format_custom').'">'.__('WordPress settings', 'site-reviews').'</a>'
131
+        'description' => sprintf( __( 'The default date format is the one set in your %s.', 'site-reviews' ),
132
+            '<a href="'.admin_url( 'options-general.php#date_format_custom' ).'">'.__( 'WordPress settings', 'site-reviews' ).'</a>'
133 133
         ),
134
-        'label' => __('Date Format', 'site-reviews'),
134
+        'label' => __( 'Date Format', 'site-reviews' ),
135 135
         'options' => [
136
-            '' => __('Use the default date format', 'site-reviews'),
137
-            'relative' => __('Use a relative date format', 'site-reviews'),
138
-            'custom' => __('Use a custom date format', 'site-reviews'),
136
+            '' => __( 'Use the default date format', 'site-reviews' ),
137
+            'relative' => __( 'Use a relative date format', 'site-reviews' ),
138
+            'custom' => __( 'Use a custom date format', 'site-reviews' ),
139 139
         ],
140 140
         'type' => 'select',
141 141
     ],
142 142
     'settings.reviews.date.custom' => [
143
-        'default' => get_option('date_format'),
143
+        'default' => get_option( 'date_format' ),
144 144
         'depends_on' => [
145 145
             'settings.reviews.date.format' => 'custom',
146 146
         ],
147
-        'description' => __('Enter a custom date format (<a href="https://codex.wordpress.org/Formatting_Date_and_Time">documentation on date and time formatting</a>).', 'site-reviews'),
148
-        'label' => __('Custom Date Format', 'site-reviews'),
147
+        'description' => __( 'Enter a custom date format (<a href="https://codex.wordpress.org/Formatting_Date_and_Time">documentation on date and time formatting</a>).', 'site-reviews' ),
148
+        'label' => __( 'Custom Date Format', 'site-reviews' ),
149 149
         'type' => 'text',
150 150
     ],
151 151
     'settings.reviews.assigned_links' => [
152 152
         'default' => 'no',
153
-        'description' => __('Display a link to the assigned post of a review.', 'site-reviews'),
154
-        'label' => __('Enable Assigned Links', 'site-reviews'),
153
+        'description' => __( 'Display a link to the assigned post of a review.', 'site-reviews' ),
154
+        'label' => __( 'Enable Assigned Links', 'site-reviews' ),
155 155
         'type' => 'yes_no',
156 156
     ],
157 157
     'settings.reviews.avatars' => [
158 158
         'default' => 'no',
159
-        'description' => __('Display reviewer avatars. These are generated from the email address of the reviewer using <a href="https://gravatar.com">Gravatar</a>.', 'site-reviews'),
160
-        'label' => __('Enable Avatars', 'site-reviews'),
159
+        'description' => __( 'Display reviewer avatars. These are generated from the email address of the reviewer using <a href="https://gravatar.com">Gravatar</a>.', 'site-reviews' ),
160
+        'label' => __( 'Enable Avatars', 'site-reviews' ),
161 161
         'type' => 'yes_no',
162 162
     ],
163 163
     'settings.reviews.avatars_regenerate' => [
@@ -165,8 +165,8 @@  discard block
 block discarded – undo
165 165
         'depends_on' => [
166 166
             'settings.reviews.avatars' => 'yes',
167 167
         ],
168
-        'description' => __('Regenerate the avatar whenever a local review is shown?', 'site-reviews'),
169
-        'label' => __('Regenerate Avatars', 'site-reviews'),
168
+        'description' => __( 'Regenerate the avatar whenever a local review is shown?', 'site-reviews' ),
169
+        'label' => __( 'Regenerate Avatars', 'site-reviews' ),
170 170
         'type' => 'yes_no',
171 171
     ],
172 172
     'settings.reviews.avatars_size' => [
@@ -174,14 +174,14 @@  discard block
 block discarded – undo
174 174
         'depends_on' => [
175 175
             'settings.reviews.avatars' => 'yes',
176 176
         ],
177
-        'description' => __('Set the avatar size in pixels.', 'site-reviews'),
178
-        'label' => __('Avatar Size', 'site-reviews'),
177
+        'description' => __( 'Set the avatar size in pixels.', 'site-reviews' ),
178
+        'label' => __( 'Avatar Size', 'site-reviews' ),
179 179
         'type' => 'number',
180 180
     ],
181 181
     'settings.reviews.excerpts' => [
182 182
         'default' => 'yes',
183
-        'description' => __('Display an excerpt instead of the full review.', 'site-reviews'),
184
-        'label' => __('Enable Excerpts', 'site-reviews'),
183
+        'description' => __( 'Display an excerpt instead of the full review.', 'site-reviews' ),
184
+        'label' => __( 'Enable Excerpts', 'site-reviews' ),
185 185
         'type' => 'yes_no',
186 186
     ],
187 187
     'settings.reviews.excerpts_length' => [
@@ -189,27 +189,27 @@  discard block
 block discarded – undo
189 189
         'depends_on' => [
190 190
             'settings.reviews.excerpts' => 'yes',
191 191
         ],
192
-        'description' => __('Set the excerpt word length.', 'site-reviews'),
193
-        'label' => __('Excerpt Length', 'site-reviews'),
192
+        'description' => __( 'Set the excerpt word length.', 'site-reviews' ),
193
+        'label' => __( 'Excerpt Length', 'site-reviews' ),
194 194
         'type' => 'number',
195 195
     ],
196 196
     'settings.reviews.fallback' => [
197 197
         'default' => 'yes',
198
-        'description' => sprintf(__('Display the fallback text when there are no reviews to display. This can be changed on the %s page. You may also override this by using the "fallback" option on the shortcode. The default fallback text is: %s', 'site-reviews'),
199
-            '<a href="'.admin_url('edit.php?post_type=site-review&page=settings#!translations').'">'.__('Translations', 'site-reviews').'</a>',
200
-            '<code>'.__('There are no reviews yet. Be the first one to write one.', 'site-reviews').'</code>'
198
+        'description' => sprintf( __( 'Display the fallback text when there are no reviews to display. This can be changed on the %s page. You may also override this by using the "fallback" option on the shortcode. The default fallback text is: %s', 'site-reviews' ),
199
+            '<a href="'.admin_url( 'edit.php?post_type=site-review&page=settings#!translations' ).'">'.__( 'Translations', 'site-reviews' ).'</a>',
200
+            '<code>'.__( 'There are no reviews yet. Be the first one to write one.', 'site-reviews' ).'</code>'
201 201
         ),
202
-        'label' => __('Enable Fallback Text', 'site-reviews'),
202
+        'label' => __( 'Enable Fallback Text', 'site-reviews' ),
203 203
         'type' => 'yes_no',
204 204
     ],
205 205
     'settings.schema.type.default' => [
206 206
         'default' => 'LocalBusiness',
207
-        'description' => __('Custom Field name', 'site-reviews').': <code>schema_type</code>',
208
-        'label' => __('Default Schema Type', 'site-reviews'),
207
+        'description' => __( 'Custom Field name', 'site-reviews' ).': <code>schema_type</code>',
208
+        'label' => __( 'Default Schema Type', 'site-reviews' ),
209 209
         'options' => [
210
-            'LocalBusiness' => __('Local Business', 'site-reviews'),
211
-            'Product' => __('Product', 'site-reviews'),
212
-            'custom' => __('Custom', 'site-reviews'),
210
+            'LocalBusiness' => __( 'Local Business', 'site-reviews' ),
211
+            'Product' => __( 'Product', 'site-reviews' ),
212
+            'custom' => __( 'Custom', 'site-reviews' ),
213 213
         ],
214 214
         'type' => 'select',
215 215
     ],
@@ -218,17 +218,17 @@  discard block
 block discarded – undo
218 218
         'depends_on' => [
219 219
             'settings.schema.type.default' => 'custom',
220 220
         ],
221
-        'description' => '<a href="https://schema.org/docs/schemas.html">'.__('View more information on schema types here', 'site-reviews').'</a>',
222
-        'label' => __('Custom Schema Type', 'site-reviews'),
221
+        'description' => '<a href="https://schema.org/docs/schemas.html">'.__( 'View more information on schema types here', 'site-reviews' ).'</a>',
222
+        'label' => __( 'Custom Schema Type', 'site-reviews' ),
223 223
         'type' => 'text',
224 224
     ],
225 225
     'settings.schema.name.default' => [
226 226
         'default' => 'post',
227
-        'description' => __('Custom Field name', 'site-reviews').': <code>schema_name</code>',
228
-        'label' => __('Default Name', 'site-reviews'),
227
+        'description' => __( 'Custom Field name', 'site-reviews' ).': <code>schema_name</code>',
228
+        'label' => __( 'Default Name', 'site-reviews' ),
229 229
         'options' => [
230
-            'post' => __('Use the assigned or current page title', 'site-reviews'),
231
-            'custom' => __('Enter a custom title', 'site-reviews'),
230
+            'post' => __( 'Use the assigned or current page title', 'site-reviews' ),
231
+            'custom' => __( 'Enter a custom title', 'site-reviews' ),
232 232
         ],
233 233
         'type' => 'select',
234 234
     ],
@@ -237,16 +237,16 @@  discard block
 block discarded – undo
237 237
         'depends_on' => [
238 238
             'settings.schema.name.default' => 'custom',
239 239
         ],
240
-        'label' => __('Custom Name', 'site-reviews'),
240
+        'label' => __( 'Custom Name', 'site-reviews' ),
241 241
         'type' => 'text',
242 242
     ],
243 243
     'settings.schema.description.default' => [
244 244
         'default' => 'post',
245
-        'description' => __('Custom Field name', 'site-reviews').': <code>schema_description</code>',
246
-        'label' => __('Default Description', 'site-reviews'),
245
+        'description' => __( 'Custom Field name', 'site-reviews' ).': <code>schema_description</code>',
246
+        'label' => __( 'Default Description', 'site-reviews' ),
247 247
         'options' => [
248
-            'post' => __('Use the assigned or current page excerpt', 'site-reviews'),
249
-            'custom' => __('Enter a custom description', 'site-reviews'),
248
+            'post' => __( 'Use the assigned or current page excerpt', 'site-reviews' ),
249
+            'custom' => __( 'Enter a custom description', 'site-reviews' ),
250 250
         ],
251 251
         'type' => 'select',
252 252
     ],
@@ -255,16 +255,16 @@  discard block
 block discarded – undo
255 255
         'depends_on' => [
256 256
             'settings.schema.description.default' => 'custom',
257 257
         ],
258
-        'label' => __('Custom Description', 'site-reviews'),
258
+        'label' => __( 'Custom Description', 'site-reviews' ),
259 259
         'type' => 'text',
260 260
     ],
261 261
     'settings.schema.url.default' => [
262 262
         'default' => 'post',
263
-        'description' => __('Custom Field name', 'site-reviews').': <code>schema_url</code>',
264
-        'label' => __('Default URL', 'site-reviews'),
263
+        'description' => __( 'Custom Field name', 'site-reviews' ).': <code>schema_url</code>',
264
+        'label' => __( 'Default URL', 'site-reviews' ),
265 265
         'options' => [
266
-            'post' => __('Use the assigned or current page URL', 'site-reviews'),
267
-            'custom' => __('Enter a custom URL', 'site-reviews'),
266
+            'post' => __( 'Use the assigned or current page URL', 'site-reviews' ),
267
+            'custom' => __( 'Enter a custom URL', 'site-reviews' ),
268 268
         ],
269 269
         'type' => 'select',
270 270
     ],
@@ -273,16 +273,16 @@  discard block
 block discarded – undo
273 273
         'depends_on' => [
274 274
             'settings.schema.url.default' => 'custom',
275 275
         ],
276
-        'label' => __('Custom URL', 'site-reviews'),
276
+        'label' => __( 'Custom URL', 'site-reviews' ),
277 277
         'type' => 'text',
278 278
     ],
279 279
     'settings.schema.image.default' => [
280 280
         'default' => 'post',
281
-        'description' => __('Custom Field name', 'site-reviews').': <code>schema_image</code>',
282
-        'label' => __('Default Image', 'site-reviews'),
281
+        'description' => __( 'Custom Field name', 'site-reviews' ).': <code>schema_image</code>',
282
+        'label' => __( 'Default Image', 'site-reviews' ),
283 283
         'options' => [
284
-            'post' => __('Use the featured image of the assigned or current page', 'site-reviews'),
285
-            'custom' => __('Enter a custom image URL', 'site-reviews'),
284
+            'post' => __( 'Use the featured image of the assigned or current page', 'site-reviews' ),
285
+            'custom' => __( 'Enter a custom image URL', 'site-reviews' ),
286 286
         ],
287 287
         'type' => 'select',
288 288
     ],
@@ -291,7 +291,7 @@  discard block
 block discarded – undo
291 291
         'depends_on' => [
292 292
             'settings.schema.image.default' => 'custom',
293 293
         ],
294
-        'label' => __('Custom Image URL', 'site-reviews'),
294
+        'label' => __( 'Custom Image URL', 'site-reviews' ),
295 295
         'type' => 'text',
296 296
     ],
297 297
     'settings.schema.address' => [
@@ -299,8 +299,8 @@  discard block
 block discarded – undo
299 299
         'depends_on' => [
300 300
             'settings.schema.type.default' => 'LocalBusiness',
301 301
         ],
302
-        'description' => __('Custom Field name', 'site-reviews').': <code>schema_address</code>',
303
-        'label' => __('Address', 'site-reviews'),
302
+        'description' => __( 'Custom Field name', 'site-reviews' ).': <code>schema_address</code>',
303
+        'label' => __( 'Address', 'site-reviews' ),
304 304
         'placeholder' => '60 29th Street #343, San Francisco, CA 94110, US',
305 305
         'type' => 'text',
306 306
     ],
@@ -309,8 +309,8 @@  discard block
 block discarded – undo
309 309
         'depends_on' => [
310 310
             'settings.schema.type.default' => 'LocalBusiness',
311 311
         ],
312
-        'description' => __('Custom Field name', 'site-reviews').': <code>schema_telephone</code>',
313
-        'label' => __('Telephone Number', 'site-reviews'),
312
+        'description' => __( 'Custom Field name', 'site-reviews' ).': <code>schema_telephone</code>',
313
+        'label' => __( 'Telephone Number', 'site-reviews' ),
314 314
         'placeholder' => '+1 (877) 273-3049',
315 315
         'type' => 'text',
316 316
     ],
@@ -319,8 +319,8 @@  discard block
 block discarded – undo
319 319
         'depends_on' => [
320 320
             'settings.schema.type.default' => 'LocalBusiness',
321 321
         ],
322
-        'description' => __('Custom Field name', 'site-reviews').': <code>schema_pricerange</code>',
323
-        'label' => __('Price Range', 'site-reviews'),
322
+        'description' => __( 'Custom Field name', 'site-reviews' ).': <code>schema_pricerange</code>',
323
+        'label' => __( 'Price Range', 'site-reviews' ),
324 324
         'placeholder' => '$$-$$$',
325 325
         'type' => 'text',
326 326
     ],
@@ -329,11 +329,11 @@  discard block
 block discarded – undo
329 329
         'depends_on' => [
330 330
             'settings.schema.type.default' => 'Product',
331 331
         ],
332
-        'description' => __('Custom Field name', 'site-reviews').': <code>schema_offertype</code>',
333
-        'label' => __('Offer Type', 'site-reviews'),
332
+        'description' => __( 'Custom Field name', 'site-reviews' ).': <code>schema_offertype</code>',
333
+        'label' => __( 'Offer Type', 'site-reviews' ),
334 334
         'options' => [
335
-            'AggregateOffer' => __('AggregateOffer', 'site-reviews'),
336
-            'Offer' => __('Offer', 'site-reviews'),
335
+            'AggregateOffer' => __( 'AggregateOffer', 'site-reviews' ),
336
+            'Offer' => __( 'Offer', 'site-reviews' ),
337 337
         ],
338 338
         'type' => 'select',
339 339
     ],
@@ -343,8 +343,8 @@  discard block
 block discarded – undo
343 343
             'settings.schema.type.default' => 'Product',
344 344
             'settings.schema.offertype' => 'Offer',
345 345
         ],
346
-        'description' => __('Custom Field name', 'site-reviews').': <code>schema_price</code>',
347
-        'label' => __('Price', 'site-reviews'),
346
+        'description' => __( 'Custom Field name', 'site-reviews' ).': <code>schema_price</code>',
347
+        'label' => __( 'Price', 'site-reviews' ),
348 348
         'placeholder' => '50.00',
349 349
         'type' => 'text',
350 350
     ],
@@ -354,8 +354,8 @@  discard block
 block discarded – undo
354 354
             'settings.schema.type.default' => 'Product',
355 355
             'settings.schema.offertype' => 'AggregateOffer',
356 356
         ],
357
-        'description' => __('Custom Field name', 'site-reviews').': <code>schema_lowprice</code>',
358
-        'label' => __('Low Price', 'site-reviews'),
357
+        'description' => __( 'Custom Field name', 'site-reviews' ).': <code>schema_lowprice</code>',
358
+        'label' => __( 'Low Price', 'site-reviews' ),
359 359
         'placeholder' => '10.00',
360 360
         'type' => 'text',
361 361
     ],
@@ -365,8 +365,8 @@  discard block
 block discarded – undo
365 365
             'settings.schema.type.default' => 'Product',
366 366
             'settings.schema.offertype' => 'AggregateOffer',
367 367
         ],
368
-        'description' => __('Custom Field name', 'site-reviews').': <code>schema_highprice</code>',
369
-        'label' => __('High Price', 'site-reviews'),
368
+        'description' => __( 'Custom Field name', 'site-reviews' ).': <code>schema_highprice</code>',
369
+        'label' => __( 'High Price', 'site-reviews' ),
370 370
         'placeholder' => '100.00',
371 371
         'type' => 'text',
372 372
     ],
@@ -375,34 +375,34 @@  discard block
 block discarded – undo
375 375
         'depends_on' => [
376 376
             'settings.schema.type.default' => 'Product',
377 377
         ],
378
-        'description' => __('Custom Field name', 'site-reviews').': <code>schema_pricecurrency</code>',
379
-        'label' => __('Price Currency', 'site-reviews'),
378
+        'description' => __( 'Custom Field name', 'site-reviews' ).': <code>schema_pricecurrency</code>',
379
+        'label' => __( 'Price Currency', 'site-reviews' ),
380 380
         'placeholder' => 'USD',
381 381
         'type' => 'text',
382 382
     ],
383 383
     'settings.submissions.required' => [
384 384
         'default' => ['content', 'email', 'name', 'rating', 'terms', 'title'],
385
-        'description' => __('Choose which fields should be required in the submission form.', 'site-reviews'),
386
-        'label' => __('Required Fields', 'site-reviews'),
385
+        'description' => __( 'Choose which fields should be required in the submission form.', 'site-reviews' ),
386
+        'label' => __( 'Required Fields', 'site-reviews' ),
387 387
         'options' => [
388
-            'rating' => __('Rating', 'site-reviews'),
389
-            'title' => __('Title', 'site-reviews'),
390
-            'content' => __('Review', 'site-reviews'),
391
-            'name' => __('Name', 'site-reviews'),
392
-            'email' => __('Email', 'site-reviews'),
393
-            'terms' => __('Terms', 'site-reviews'),
388
+            'rating' => __( 'Rating', 'site-reviews' ),
389
+            'title' => __( 'Title', 'site-reviews' ),
390
+            'content' => __( 'Review', 'site-reviews' ),
391
+            'name' => __( 'Name', 'site-reviews' ),
392
+            'email' => __( 'Email', 'site-reviews' ),
393
+            'terms' => __( 'Terms', 'site-reviews' ),
394 394
         ],
395 395
         'type' => 'checkbox',
396 396
     ],
397 397
     'settings.submissions.limit' => [
398 398
         'default' => '',
399
-        'description' => __('Limits the number of reviews that can be submitted to one-per-person. If you are assigning reviews, then the limit will be applied to the assigned page or category.', 'site-reviews'),
400
-        'label' => __('Limit Reviews', 'site-reviews'),
399
+        'description' => __( 'Limits the number of reviews that can be submitted to one-per-person. If you are assigning reviews, then the limit will be applied to the assigned page or category.', 'site-reviews' ),
400
+        'label' => __( 'Limit Reviews', 'site-reviews' ),
401 401
         'options' => [
402
-            '' => __('No Limit', 'site-reviews'),
403
-            'email' => __('By Email Address', 'site-reviews'),
404
-            'ip_address' => __('By IP Address', 'site-reviews'),
405
-            'username' => __('By Username (will only work for registered users)', 'site-reviews'),
402
+            '' => __( 'No Limit', 'site-reviews' ),
403
+            'email' => __( 'By Email Address', 'site-reviews' ),
404
+            'ip_address' => __( 'By IP Address', 'site-reviews' ),
405
+            'username' => __( 'By Username (will only work for registered users)', 'site-reviews' ),
406 406
         ],
407 407
         'type' => 'select',
408 408
     ],
@@ -411,8 +411,8 @@  discard block
 block discarded – undo
411 411
         'depends_on' => [
412 412
             'settings.submissions.limit' => ['email'],
413 413
         ],
414
-        'description' => __('One Email per line. All emails in the whitelist will be excluded from the review submission limit.', 'site-reviews'),
415
-        'label' => __('Email Whitelist', 'site-reviews'),
414
+        'description' => __( 'One Email per line. All emails in the whitelist will be excluded from the review submission limit.', 'site-reviews' ),
415
+        'label' => __( 'Email Whitelist', 'site-reviews' ),
416 416
         'rows' => 5,
417 417
         'type' => 'code',
418 418
     ],
@@ -421,8 +421,8 @@  discard block
 block discarded – undo
421 421
         'depends_on' => [
422 422
             'settings.submissions.limit' => ['ip_address'],
423 423
         ],
424
-        'description' => __('One IP Address per line. All IP Addresses in the whitelist will be excluded from the review submission limit..', 'site-reviews'),
425
-        'label' => __('IP Address Whitelist', 'site-reviews'),
424
+        'description' => __( 'One IP Address per line. All IP Addresses in the whitelist will be excluded from the review submission limit..', 'site-reviews' ),
425
+        'label' => __( 'IP Address Whitelist', 'site-reviews' ),
426 426
         'rows' => 5,
427 427
         'type' => 'code',
428 428
     ],
@@ -431,15 +431,15 @@  discard block
 block discarded – undo
431 431
         'depends_on' => [
432 432
             'settings.submissions.limit' => ['username'],
433 433
         ],
434
-        'description' => __('One Username per line. All registered users with a Username in the whitelist will be excluded from the review submission limit.', 'site-reviews'),
435
-        'label' => __('Username Whitelist', 'site-reviews'),
434
+        'description' => __( 'One Username per line. All registered users with a Username in the whitelist will be excluded from the review submission limit.', 'site-reviews' ),
435
+        'label' => __( 'Username Whitelist', 'site-reviews' ),
436 436
         'rows' => 5,
437 437
         'type' => 'code',
438 438
     ],
439 439
     'settings.submissions.recaptcha.integration' => [
440 440
         'default' => '',
441
-        'description' => __('Invisible reCAPTCHA is a free anti-spam service from Google. To use it, you will need to <a href="https://www.google.com/recaptcha/admin" target="_blank">sign up</a> for an API key pair for your site.', 'site-reviews'),
442
-        'label' => __('Invisible reCAPTCHA', 'site-reviews'),
441
+        'description' => __( 'Invisible reCAPTCHA is a free anti-spam service from Google. To use it, you will need to <a href="https://www.google.com/recaptcha/admin" target="_blank">sign up</a> for an API key pair for your site.', 'site-reviews' ),
442
+        'label' => __( 'Invisible reCAPTCHA', 'site-reviews' ),
443 443
         'options' => [
444 444
             '' => 'Do not use reCAPTCHA',
445 445
             'all' => 'Use reCAPTCHA',
@@ -452,7 +452,7 @@  discard block
 block discarded – undo
452 452
         'depends_on' => [
453 453
             'settings.submissions.recaptcha.integration' => ['all', 'guest'],
454 454
         ],
455
-        'label' => __('Site Key', 'site-reviews'),
455
+        'label' => __( 'Site Key', 'site-reviews' ),
456 456
         'type' => 'text',
457 457
     ],
458 458
     'settings.submissions.recaptcha.secret' => [
@@ -460,7 +460,7 @@  discard block
 block discarded – undo
460 460
         'depends_on' => [
461 461
             'settings.submissions.recaptcha.integration' => ['all', 'guest'],
462 462
         ],
463
-        'label' => __('Site Secret', 'site-reviews'),
463
+        'label' => __( 'Site Secret', 'site-reviews' ),
464 464
         'type' => 'text',
465 465
     ],
466 466
     'settings.submissions.recaptcha.position' => [
@@ -468,8 +468,8 @@  discard block
 block discarded – undo
468 468
         'depends_on' => [
469 469
             'settings.submissions.recaptcha.integration' => ['all', 'guest'],
470 470
         ],
471
-        'description' => __('This option may not work consistently if another plugin is loading reCAPTCHA on the same page as Site Reviews.', 'site-reviews'),
472
-        'label' => __('Badge Position', 'site-reviews'),
471
+        'description' => __( 'This option may not work consistently if another plugin is loading reCAPTCHA on the same page as Site Reviews.', 'site-reviews' ),
472
+        'label' => __( 'Badge Position', 'site-reviews' ),
473 473
         'options' => [
474 474
             'bottomleft' => 'Bottom Left',
475 475
             'bottomright' => 'Bottom Right',
@@ -479,16 +479,16 @@  discard block
 block discarded – undo
479 479
     ],
480 480
     'settings.submissions.akismet' => [
481 481
         'default' => 'no',
482
-        'description' => __('The <a href="https://akismet.com" target="_blank">Akismet plugin</a> integration provides spam-filtering for your reviews. In order for this setting to have any affect, you will need to first install and activate the Akismet plugin and set up a WordPress.com API key.', 'site-reviews'),
483
-        'label' => __('Enable Akismet Integration', 'site-reviews'),
482
+        'description' => __( 'The <a href="https://akismet.com" target="_blank">Akismet plugin</a> integration provides spam-filtering for your reviews. In order for this setting to have any affect, you will need to first install and activate the Akismet plugin and set up a WordPress.com API key.', 'site-reviews' ),
483
+        'label' => __( 'Enable Akismet Integration', 'site-reviews' ),
484 484
         'type' => 'yes_no',
485 485
     ],
486 486
     'settings.submissions.blacklist.integration' => [
487 487
         'default' => '',
488
-        'description' => sprintf(__('Choose which Blacklist you would prefer to use for reviews. The %s can be found in the WordPress Discussion Settings page.', 'site-reviews'),
489
-            '<a href="'.admin_url('options-discussion.php#users_can_register').'">'.__('Comment Blacklist', 'site-reviews').'</a>'
488
+        'description' => sprintf( __( 'Choose which Blacklist you would prefer to use for reviews. The %s can be found in the WordPress Discussion Settings page.', 'site-reviews' ),
489
+            '<a href="'.admin_url( 'options-discussion.php#users_can_register' ).'">'.__( 'Comment Blacklist', 'site-reviews' ).'</a>'
490 490
         ),
491
-        'label' => __('Blacklist', 'site-reviews'),
491
+        'label' => __( 'Blacklist', 'site-reviews' ),
492 492
         'options' => [
493 493
             '' => 'Use the Site Reviews Blacklist',
494 494
             'comments' => 'Use the WordPress Comment Blacklist',
@@ -500,18 +500,18 @@  discard block
 block discarded – undo
500 500
         'depends_on' => [
501 501
             'settings.submissions.blacklist.integration' => [''],
502 502
         ],
503
-        'description' => __('One entry or IP address per line. When a review contains any of these entries in its title, content, name, email, or IP address, it will be rejected. It is case-insensitive and will match partial words, so "press" will match "WordPress".', 'site-reviews'),
504
-        'label' => __('Review Blacklist', 'site-reviews'),
503
+        'description' => __( 'One entry or IP address per line. When a review contains any of these entries in its title, content, name, email, or IP address, it will be rejected. It is case-insensitive and will match partial words, so "press" will match "WordPress".', 'site-reviews' ),
504
+        'label' => __( 'Review Blacklist', 'site-reviews' ),
505 505
         'rows' => 10,
506 506
         'type' => 'code',
507 507
     ],
508 508
     'settings.submissions.blacklist.action' => [
509 509
         'default' => 'unapprove',
510
-        'description' => __('Choose the action that should be taken when a review is blacklisted.', 'site-reviews'),
511
-        'label' => __('Blacklist Action', 'site-reviews'),
510
+        'description' => __( 'Choose the action that should be taken when a review is blacklisted.', 'site-reviews' ),
511
+        'label' => __( 'Blacklist Action', 'site-reviews' ),
512 512
         'options' => [
513
-            'unapprove' => __('Require approval', 'site-reviews'),
514
-            'reject' => __('Reject submission', 'site-reviews'),
513
+            'unapprove' => __( 'Require approval', 'site-reviews' ),
514
+            'reject' => __( 'Reject submission', 'site-reviews' ),
515 515
         ],
516 516
         'type' => 'select',
517 517
     ],
Please login to merge, or discard this patch.