Issues (823)

classes/class-frontend.php (327 issues)

1
<?php
2
/**
3
 * LSX Search Frontend Class.
4
 *
5
 * @package lsx-search
6
 */
7
8
namespace lsx\search\classes;
9
10
class Frontend {
11
12
	/**
13
	 * Holds class instance
14
	 *
15
	 * @since 1.0.0
16
	 *
17
	 * @var      object \lsx\search\classes\Frontend()
18
	 */
19
	protected static $instance = null;
20
21
	public $options = false;
22
23
	public $tabs = false;
24
25
	public $facet_data = false;
26
27
	/**
28
	 * Determine weather or not search is enabled for this page.
29
	 *
30
	 * @var boolean
31
	 */
32
	public $search_enabled = false;
33
34
	public $search_core_suffix = false;
35
36
	public $search_prefix = false;
37
38
	/**
39
	 * Holds the post types enabled
40
	 *
41
	 * @var array
42
	 */
43
	public $post_types = array();
44
45
	/**
46
	 * Holds the taxonomies enabled for search
47
	 *
48
	 * @var array
49
	 */
50
	public $taxonomies = array();
51
52
	/**
53
	 * If the current search page has posts or not
54
	 *
55
	 * @var boolean
56
	 */
57
	public $has_posts = false;
58
59
	/**
60
	 * If we are using the CMB2 options or not.
61
	 *
62
	 * @var boolean
63
	 */
64
	public $new_options = false;
65
66
	/**
67
	 * Construct method.
68
	 */
69
	public function __construct() {
0 ignored issues
show
Expected 2 blank lines before function; 1 found
Loading history...
70
		$this->options = \lsx\search\includes\get_options();
71
		$this->load_classes();
72
73
		add_filter( 'wpseo_json_ld_search_url', array( $this, 'change_json_ld_search_url' ), 10, 1 );
74
		add_action( 'wp', array( $this, 'set_vars' ), 21 );
75
		add_action( 'wp', array( $this, 'set_facetwp_vars' ), 22 );
76
		add_action( 'wp', array( $this, 'core' ), 23 );
77
		add_action( 'lsx_body_top', array( $this, 'check_for_results' ) );
78
79
		add_filter( 'pre_get_posts', array( $this, 'ignore_sticky_search' ) );
80
		add_action( 'pre_get_posts', array( $this, 'filter_post_types' ) );
81
82
		add_filter( 'lsx_search_post_types', array( $this, 'register_post_types' ) );
83
		add_filter( 'lsx_search_taxonomies', array( $this, 'register_taxonomies' ) );
84
		add_filter( 'lsx_search_post_types_plural', array( $this, 'register_post_type_tabs' ) );
85
		add_filter( 'facetwp_sort_options', array( $this, 'facetwp_sort_options' ), 10, 2 );
86
		add_filter( 'wp_kses_allowed_html', array( $this, 'kses_allowed_html' ), 20, 2 );
87
		add_filter( 'get_search_query', array( $this, 'get_search_query' ) );
88
89
		// Redirects.
90
		add_action( 'template_redirect', array( $this, 'pretty_search_redirect' ) );
91
		add_filter( 'pre_get_posts', array( $this, 'pretty_search_parse_query' ) );
92
93
		add_action( 'lsx_search_sidebar_top', array( $this, 'search_sidebar_top' ) );
94
		add_filter( 'facetwp_facet_html', array( $this, 'search_facet_html' ), 10, 2 );
95
	}
0 ignored issues
show
Expected 2 blank lines after function; 1 found
Loading history...
Expected 1 blank line before closing function brace; 0 found
Loading history...
96
97
	/**
98
	 * Return an instance of this class.
99
	 *
100
	 * @since 1.0.0
101
	 *
102
	 * @return    object \lsx\member_directory\search\Frontend()    A single instance of this class.
103
	 */
104
	public static function get_instance() {
0 ignored issues
show
Method name "Frontend::get_instance" is not in camel caps format
Loading history...
105
		// If the single instance hasn't been set, set it now.
106
		if ( null === self::$instance ) {
0 ignored issues
show
Expected 0 spaces before closing bracket; 1 found
Loading history...
107
			self::$instance = new self();
108
		}
109
		return self::$instance;
110
	}
0 ignored issues
show
Expected 2 blank lines after function; 1 found
Loading history...
Expected 1 blank line before closing function brace; 0 found
Loading history...
111
112
	/**
113
	 * Loads the variable classes and the static classes.
114
	 */
115
	private function load_classes() {
0 ignored issues
show
Method name "Frontend::load_classes" is not in camel caps format
Loading history...
116
		require_once LSX_SEARCH_PATH . 'classes/frontend/class-layout.php';
117
		$this->layout = frontend\Layout::get_instance();
0 ignored issues
show
Bug Best Practice introduced by
The property layout does not exist. Although not strictly required by PHP, it is generally a best practice to declare properties explicitly.
Loading history...
118
	}
0 ignored issues
show
Expected 2 blank lines after function; 1 found
Loading history...
Expected 1 blank line before closing function brace; 0 found
Loading history...
119
120
	/**
121
	 * Check all settings.
122
	 */
123
	public function set_vars() {
0 ignored issues
show
Method name "Frontend::set_vars" is not in camel caps format
Loading history...
124
		$post_type = '';
125
126
		$this->post_types      = apply_filters( 'lsx_search_post_types', array() );
127
		$this->taxonomies      = apply_filters( 'lsx_search_taxonomies', array() );
128
		$this->tabs            = apply_filters( 'lsx_search_post_types_plural', array() );
129
		$this->options         = apply_filters( 'lsx_search_options', $this->options );
130
		$this->post_types      = get_post_types();
131
		$this->post_type_slugs = array(
0 ignored issues
show
Bug Best Practice introduced by
The property post_type_slugs does not exist. Although not strictly required by PHP, it is generally a best practice to declare properties explicitly.
Loading history...
132
			'post'        => 'posts',
133
			'project'     => 'projects',
134
			'service'     => 'services',
135
			'team'        => 'team',
136
			'testimonial' => 'testimonials',
137
			'video'       => 'videos',
138
			'product'     => 'products',
139
		);
140
		$this->set_search_prefix();
141
		$this->get_cmb2_options();
142
		$this->search_enabled = apply_filters( 'lsx_search_enabled', $this->is_search_enabled(), $this );
143
		$this->search_prefix  = apply_filters( 'lsx_search_prefix', $this->search_prefix, $this );
144
	}
0 ignored issues
show
Expected 2 blank lines after function; 1 found
Loading history...
Expected 1 blank line before closing function brace; 0 found
Loading history...
145
146
	private function get_cmb2_options() {
0 ignored issues
show
Method name "Frontend::get_cmb2_options" is not in camel caps format
Loading history...
147
		$cmb2_options = get_option( 'lsx-search-settings' );
148
		if ( false !== $cmb2_options && ! empty( $cmb2_options ) ) {
0 ignored issues
show
Expected 0 spaces before closing bracket; 1 found
Loading history...
149
			$this->set_search_prefix( true );
150
			$this->options['display'] = $cmb2_options;
151
			foreach ( $this->options['display'] as $option_key => $option_value ) {
0 ignored issues
show
Expected 0 spaces before closing bracket; 1 found
Loading history...
152
				if ( is_array( $option_value ) && ! empty( $option_value ) ) {
0 ignored issues
show
Expected 0 spaces before closing bracket; 1 found
Loading history...
153
					$new_values = array();
154
					foreach ( $option_value as $empty_key => $key_value ) {
0 ignored issues
show
Expected 0 spaces before closing bracket; 1 found
Loading history...
155
						$new_values[ $key_value ] = 'on';
156
					}
157
					$this->options['display'][ $option_key ] = $new_values;
158
				}
159
			}
160
			$this->new_options = true;
161
			$this->disable_to_search_actions();
162
		}
163
	}
0 ignored issues
show
Expected 2 blank lines after function; 1 found
Loading history...
Expected 1 blank line before closing function brace; 0 found
Loading history...
164
165
	private function disable_to_search_actions() {
0 ignored issues
show
Method name "Frontend::disable_to_search_actions" is not in camel caps format
Loading history...
166
		global $lsx_to_search_fwp, $lsx_to_search;
167
		if ( null !== $lsx_to_search ) {
0 ignored issues
show
Expected 0 spaces before closing bracket; 1 found
Loading history...
168
			// Redirects.
169
			remove_filter( 'template_include', array( $lsx_to_search, 'search_template_include' ), 99 );
170
			remove_action( 'template_redirect', array( $lsx_to_search, 'pretty_search_redirect' ) );
171
			remove_filter( 'pre_get_posts', array( $lsx_to_search, 'pretty_search_parse_query' ) );
172
173
			// Layout Filter.
174
			remove_filter( 'lsx_layout', array( $lsx_to_search, 'lsx_layout' ), 20, 1 );
0 ignored issues
show
The call to remove_filter() has too many arguments starting with 1. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

174
			/** @scrutinizer ignore-call */ 
175
   remove_filter( 'lsx_layout', array( $lsx_to_search, 'lsx_layout' ), 20, 1 );

This check compares calls to functions or methods with their respective definitions. If the call has more arguments than are defined, it raises an issue.

If a function is defined several times with a different number of parameters, the check may pick up the wrong definition and report false positives. One codebase where this has been known to happen is Wordpress. Please note the @ignore annotation hint above.

Loading history...
175
			remove_filter( 'lsx_layout_selector', array( $lsx_to_search, 'lsx_layout_selector' ), 10, 4 );
176
			remove_filter( 'lsx_to_archive_layout', array( $lsx_to_search, 'lsx_to_search_archive_layout' ), 10, 2 );
177
178
			remove_action( 'lsx_search_sidebar_top', array( $lsx_to_search, 'search_sidebar_top' ) );
179
			remove_action( 'pre_get_posts', array( $lsx_to_search, 'price_sorting' ), 100 );
180
181
			//add_shortcode( 'lsx_search_form', array( 'LSX_TO_Search_Frontend', 'search_form' ) );
0 ignored issues
show
Unused Code Comprehensibility introduced by
62% of this comment could be valid code. Did you maybe forget this after debugging?

Sometimes obsolete code just ends up commented out instead of removed. In this case it is better to remove the code once you have checked you do not need it.

The code might also have been commented out for debugging purposes. In this case it is vital that someone uncomments it again or your project may behave in very unexpected ways in production.

This check looks for comments that seem to be mostly valid code and reports them.

Loading history...
182
			remove_filter( 'searchwp_short_circuit', array( $lsx_to_search, 'searchwp_short_circuit' ), 10, 2 );
183
			remove_filter( 'get_search_query', array( $lsx_to_search, 'get_search_query' ) );
184
			remove_filter( 'body_class', array( $lsx_to_search, 'to_add_search_url_class' ), 20 );
185
186
			remove_filter( 'facetwp_preload_url_vars', array( $lsx_to_search, 'preload_url_vars' ), 10, 1 );
187
			remove_filter( 'wpseo_json_ld_search_url', array( $lsx_to_search, 'change_json_ld_search_url' ), 10, 1 );
188
		}
189
		if ( null !== $lsx_to_search_fwp ) {
0 ignored issues
show
Expected 0 spaces before closing bracket; 1 found
Loading history...
190
			remove_filter( 'facetwp_indexer_row_data', array( $lsx_to_search_fwp, 'facetwp_index_row_data' ), 10, 2 );
191
			remove_filter( 'facetwp_index_row', array( $lsx_to_search_fwp, 'facetwp_index_row' ), 10, 2 );
192
193
			remove_filter( 'facetwp_sort_options', array( $lsx_to_search_fwp, 'facet_sort_options' ), 10, 2 );
194
195
			remove_filter( 'facetwp_pager_html', array( $lsx_to_search_fwp, 'facetwp_pager_html' ), 10, 2 );
196
			remove_filter( 'facetwp_result_count', array( $lsx_to_search_fwp, 'facetwp_result_count' ), 10, 2 );
197
198
			remove_filter( 'facetwp_facet_html', array( $lsx_to_search_fwp, 'destination_facet_html' ), 10, 2 );
199
			remove_filter( 'facetwp_facet_html', array( $lsx_to_search_fwp, 'slide_facet_html' ), 10, 2 );
200
			remove_filter( 'facetwp_facet_html', array( $lsx_to_search_fwp, 'search_facet_html' ), 10, 2 );
201
			remove_filter( 'facetwp_load_css', array( $lsx_to_search_fwp, 'facetwp_load_css' ), 10, 1 );
202
203
			if ( class_exists( 'LSX_Currencies' ) ) {
0 ignored issues
show
Expected 0 spaces before closing bracket; 1 found
Loading history...
204
				remove_filter( 'facetwp_render_output', array( $lsx_to_search_fwp, 'slide_price_lsx_currencies' ), 10, 2 );
205
			} else {
206
				remove_filter( 'facetwp_render_output', array( $lsx_to_search_fwp, 'slide_price_to_currencies' ), 10, 2 );
207
			}
208
		}
209
	}
0 ignored issues
show
Expected 2 blank lines after function; 1 found
Loading history...
Expected 1 blank line before closing function brace; 0 found
Loading history...
210
211
	/**
212
	 * Returns if the search is enabled.
213
	 *
214
	 * @return boolean
215
	 */
216
	public function is_search_enabled() {
0 ignored issues
show
Method name "Frontend::is_search_enabled" is not in camel caps format
Loading history...
217
		$search_enabled = false;
218
219
		if ( false === $this->new_options ) {
0 ignored issues
show
Expected 0 spaces before closing bracket; 1 found
Loading history...
220
			if ( isset( $this->options['display'][ $this->search_prefix . '_enable_' . $this->search_core_suffix ] ) && ( ! empty( $this->options ) ) && 'on' == $this->options['display'][ $this->search_prefix . '_enable_' . $this->search_core_suffix ] ) {
0 ignored issues
show
Found: ==. Use strict comparisons (=== or !==).
Loading history...
Expected 0 spaces before closing bracket; 1 found
Loading history...
221
				$search_enabled = true;
222
			}
223
		} else {
224
			$enable_prefix = $this->search_prefix;
225
			if ( ! empty( $this->options ) && isset( $this->options['display'] ) && isset( $this->options['display'][ $enable_prefix . '_enable' ] ) && 'on' === $this->options['display'][ $enable_prefix . '_enable' ] ) {
0 ignored issues
show
Expected 0 spaces before closing bracket; 1 found
Loading history...
226
				$search_enabled = true;
227
			}
228
		}
229
230
		// These are specific plugin exclusions.
231
		if ( is_tax( array( 'wcpv_product_vendors' ) ) ) {
0 ignored issues
show
Expected 0 spaces before closing bracket; 1 found
Loading history...
232
			$search_enabled = false;
233
		}
234
		return $search_enabled;
235
	}
0 ignored issues
show
Expected 1 blank line before closing function brace; 0 found
Loading history...
Expected 2 blank lines after function; 1 found
Loading history...
236
237
	/**
238
	 * Sets the search prefix.
239
	 *
240
	 * @return void
241
	 */
242
	private function set_search_prefix( $new_prefixes = false ) {
0 ignored issues
show
Method name "Frontend::set_search_prefix" is not in camel caps format
Loading history...
243
		$page_for_posts = get_option( 'page_for_posts' );
244
		if ( false !== $new_prefixes ) {
0 ignored issues
show
Expected 0 spaces before closing bracket; 1 found
Loading history...
245
			$this->taxonomies = array();
246
			$this->post_types = array();
247
		}
248
249
		if ( is_search() ) {
0 ignored issues
show
Expected 0 spaces before closing bracket; 1 found
Loading history...
250
			if ( false === $new_prefixes ) {
0 ignored issues
show
Expected 0 spaces before closing bracket; 1 found
Loading history...
251
				$this->search_core_suffix = 'core';
252
				$this->search_prefix      = 'search';
253
			} else {
254
				$this->search_core_suffix = 'enable';
255
				$this->search_prefix      = 'engine_search';
256
			}
257
		} elseif ( is_post_type_archive( $this->post_types ) || is_tax() || is_page( $page_for_posts ) || is_home() || is_category() || is_tag() ) {
0 ignored issues
show
Expected 0 spaces before closing bracket; 1 found
Loading history...
258
			if ( false === $new_prefixes ) {
0 ignored issues
show
Expected 0 spaces before closing bracket; 1 found
Loading history...
259
				$this->search_core_suffix = 'search';
260
			} else {
261
				$this->search_core_suffix = 'enable';
262
			}
263
264
			if ( is_tax() ) {
0 ignored issues
show
Expected 0 spaces before closing bracket; 1 found
Loading history...
265
				$tax = get_query_var( 'taxonomy' );
0 ignored issues
show
Equals sign not aligned with surrounding assignments; expected 7 spaces but found 1 space

This check looks for multiple assignments in successive lines of code. It will report an issue if the operators are not in a straight line.

To visualize

$a = "a";
$ab = "ab";
$abc = "abc";

will produce issues in the first and second line, while this second example

$a   = "a";
$ab  = "ab";
$abc = "abc";

will produce no issues.

Loading history...
266
				$tax = get_taxonomy( $tax );
0 ignored issues
show
Equals sign not aligned with surrounding assignments; expected 7 spaces but found 1 space

This check looks for multiple assignments in successive lines of code. It will report an issue if the operators are not in a straight line.

To visualize

$a = "a";
$ab = "ab";
$abc = "abc";

will produce issues in the first and second line, while this second example

$a   = "a";
$ab  = "ab";
$abc = "abc";

will produce no issues.

Loading history...
267
				$post_type = $tax->object_type[0];
268
			} else if ( is_page( $page_for_posts ) || is_category() || is_tag() || is_home() ) {
0 ignored issues
show
Expected 0 spaces before closing bracket; 1 found
Loading history...
269
				$post_type = 'post';
270
			} else {
271
				$post_type = get_query_var( 'post_type' );
272
			}
273
274
			if ( false === $new_prefixes ) {
0 ignored issues
show
Expected 0 spaces before closing bracket; 1 found
Loading history...
275
				if ( isset( $this->tabs[ $post_type ] ) ) {
0 ignored issues
show
Expected 0 spaces before closing bracket; 1 found
Loading history...
276
					$this->search_prefix = $this->tabs[ $post_type ] . '_archive';
277
				}
278
			} else {
279
				$this->search_prefix = $post_type . '_search';
280
			}
281
		}
282
	}
0 ignored issues
show
Expected 1 blank line before closing function brace; 0 found
Loading history...
Expected 2 blank lines after function; 1 found
Loading history...
283
284
	/**
285
	 * Sets the FacetWP variables.
286
	 */
287
	public function set_facetwp_vars() {
0 ignored issues
show
Expected 0 blank lines after opening function brace; 1 found
Loading history...
Method name "Frontend::set_facetwp_vars" is not in camel caps format
Loading history...
288
289
		if ( class_exists( 'FacetWP' ) ) {
0 ignored issues
show
Expected 0 spaces before closing bracket; 1 found
Loading history...
290
			$facet_data = FWP()->helper->get_facets();
0 ignored issues
show
The function FWP was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

290
			$facet_data = /** @scrutinizer ignore-call */ FWP()->helper->get_facets();
Loading history...
291
		}
292
293
		$this->facet_data = array();
294
295
		$this->facet_data['search_form'] = array(
296
			'name' => 'search_form',
0 ignored issues
show
Array double arrow not aligned correctly; expected 2 space(s) between "'name'" and double arrow, but found 1.
Loading history...
297
			'label' => esc_html__( 'Search Form', 'lsx-search' ),
298
		);
299
300
		if ( ! empty( $facet_data ) && is_array( $facet_data ) ) {
0 ignored issues
show
Expected 0 spaces before closing bracket; 1 found
Loading history...
301
			foreach ( $facet_data as $facet ) {
0 ignored issues
show
Expected 0 spaces before closing bracket; 1 found
Loading history...
302
				$this->facet_data[ $facet['name'] ] = $facet;
303
			}
304
		}
305
	}
0 ignored issues
show
Expected 1 blank line before closing function brace; 0 found
Loading history...
Expected 2 blank lines after function; 1 found
Loading history...
306
307
	/**
308
	 * Check all settings.
309
	 */
310
	public function core() {
0 ignored issues
show
Expected 0 blank lines after opening function brace; 1 found
Loading history...
311
312
		if ( true === $this->search_enabled ) {
0 ignored issues
show
Expected 0 spaces before closing bracket; 1 found
Loading history...
313
			add_action( 'wp_enqueue_scripts', array( $this, 'assets' ), 999 );
314
315
			add_filter( 'lsx_layout', array( $this, 'lsx_layout' ), 20, 1 );
316
			add_filter( 'lsx_layout_selector', array( $this, 'lsx_layout_selector' ), 10, 4 );
317
			add_filter( 'lsx_slot_class', array( $this, 'change_slot_column_class' ) );
318
			add_action( 'lsx_entry_top', array( $this, 'add_label_to_title' ) );
319
			add_filter( 'body_class', array( $this, 'body_class' ), 10 );
320
321
			add_filter( 'lsx_blog_customizer_top_of_blog_action', array( $this, 'top_of_blog_action' ), 10, 1 );
322
			add_filter( 'lsx_blog_customizer_blog_description_class', array( $this, 'blog_description_class' ), 10, 1 );
323
324
			if ( class_exists( 'LSX_Videos' ) ) {
0 ignored issues
show
Expected 0 spaces before closing bracket; 1 found
Loading history...
325
				global $lsx_videos_frontend;
326
				remove_action( 'lsx_content_top', array( $lsx_videos_frontend, 'categories_tabs' ), 15 );
327
			}
328
329
			add_filter( 'lsx_paging_nav_disable', '__return_true' );
330
			add_action( 'lsx_content_top', array( $this, 'facet_top_bar' ) );
331
			add_action( 'lsx_content_top', array( $this, 'facetwp_tempate_open' ) );
332
			add_action( 'lsx_content_bottom', array( $this, 'facetwp_tempate_close' ) );
333
			add_action( 'lsx_content_bottom', array( $this, 'facet_bottom_bar' ) );
334
335
			if ( ! empty( $this->options['display'][ $this->search_prefix . '_layout' ] ) && '1c' !== $this->options['display'][ $this->search_prefix . '_layout' ] ) {
0 ignored issues
show
Expected 0 spaces before closing bracket; 1 found
Loading history...
336
				add_filter( 'lsx_sidebar_enable', array( $this, 'lsx_sidebar_enable' ), 10, 1 );
337
			}
338
339
			add_action( 'lsx_content_wrap_before', array( $this, 'search_sidebar' ), 150 );
340
341
			if ( class_exists( 'WooCommerce' ) && ( is_shop() || is_product_category() || is_product_tag() ) ) {
0 ignored issues
show
The function is_product_category was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

341
			if ( class_exists( 'WooCommerce' ) && ( is_shop() || /** @scrutinizer ignore-call */ is_product_category() || is_product_tag() ) ) {
Loading history...
The function is_product_tag was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

341
			if ( class_exists( 'WooCommerce' ) && ( is_shop() || is_product_category() || /** @scrutinizer ignore-call */ is_product_tag() ) ) {
Loading history...
The function is_shop was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

341
			if ( class_exists( 'WooCommerce' ) && ( /** @scrutinizer ignore-call */ is_shop() || is_product_category() || is_product_tag() ) ) {
Loading history...
Expected 0 spaces before closing bracket; 1 found
Loading history...
342
				remove_action( 'woocommerce_archive_description', 'woocommerce_taxonomy_archive_description' );
343
				remove_action( 'woocommerce_archive_description', 'woocommerce_product_archive_description' );
344
				add_filter( 'woocommerce_show_page_title', '__return_false' );
345
346
				add_filter( 'loop_shop_columns', function() {
0 ignored issues
show
The opening parenthesis of a multi-line function call should be the last content on the line.
Loading history...
For multi-line function calls, each argument should be on a separate line.

For a function calls that spawns multiple lines, the coding style suggests to split arguments to separate lines like this:

someFunctionCall(
    $firstArgument,
    $secondArgument,
    $thirdArgument
);
Loading history...
Expected 1 space after FUNCTION keyword; 0 found
Loading history...
347
					return 3;
348
				} );
0 ignored issues
show
For multi-line function calls, the closing parenthesis should be on a new line.

If a function call spawns multiple lines, the coding standard suggests to move the closing parenthesis to a new line:

someFunctionCall(
    $firstArgument,
    $secondArgument,
    $thirdArgument
); // Closing parenthesis on a new line.
Loading history...
349
350
				// Actions added by LSX theme
351
				remove_action( 'lsx_content_wrap_before', 'lsx_global_header' );
352
353
				// Actions added be LSX theme / woocommerce.php file
354
				remove_action( 'woocommerce_after_shop_loop', 'lsx_wc_sorting_wrapper', 9 );
355
				remove_action( 'woocommerce_after_shop_loop', 'woocommerce_catalog_ordering', 10 );
356
				remove_action( 'woocommerce_after_shop_loop', 'woocommerce_result_count', 20 );
357
				remove_action( 'woocommerce_after_shop_loop', 'woocommerce_pagination', 30 );
358
				remove_action( 'woocommerce_after_shop_loop', 'lsx_wc_sorting_wrapper_close', 31 );
359
360
				// Actions added be LSX theme / woocommerce.php file
361
				remove_action( 'woocommerce_before_shop_loop', 'lsx_wc_sorting_wrapper', 9 );
362
				remove_action( 'woocommerce_before_shop_loop', 'woocommerce_catalog_ordering', 10 );
363
				remove_action( 'woocommerce_before_shop_loop', 'woocommerce_result_count', 20 );
364
				remove_action( 'woocommerce_before_shop_loop', 'lsx_wc_woocommerce_pagination', 30 );
365
				remove_action( 'woocommerce_before_shop_loop', 'lsx_wc_sorting_wrapper_close', 31 );
366
			}
367
		}
368
	}
0 ignored issues
show
Expected 2 blank lines after function; 1 found
Loading history...
Expected 1 blank line before closing function brace; 0 found
Loading history...
369
370
	/**
371
	 * Adds a search class to the body to allow the styling of the sidebars etc.
372
	 *
373
	 * @param  array $classes The classes.
374
	 * @return array $classes The classes.
375
	 */
376
	public function body_class( $classes ) {
0 ignored issues
show
Method name "Frontend::body_class" is not in camel caps format
Loading history...
377
		$classes[] = 'lsx-search-enabled';
378
		return $classes;
379
	}
0 ignored issues
show
Expected 2 blank lines after function; 1 found
Loading history...
Expected 1 blank line before closing function brace; 0 found
Loading history...
380
381
	/**
382
	 * Moves the blog description to above the content columns.
383
	 *
384
	 * @param  string $action
385
	 * @return string $action
386
	 */
387
	public function top_of_blog_action( $action = '' ) {
0 ignored issues
show
Method name "Frontend::top_of_blog_action" is not in camel caps format
Loading history...
388
		$action = 'lsx_content_wrap_before';
389
		return $action;
390
	}
0 ignored issues
show
Expected 1 blank line before closing function brace; 0 found
Loading history...
Expected 2 blank lines after function; 1 found
Loading history...
391
392
	/**
393
	 * Adds a class to the blog description.
394
	 *
395
	 * @param  string $action
396
	 * @return string $action
397
	 */
398
	public function blog_description_class( $class = '' ) {
0 ignored issues
show
Method name "Frontend::blog_description_class" is not in camel caps format
Loading history...
399
		$class .= ' col-md-12 search-description';
400
		return $class;
401
	}
0 ignored issues
show
Expected 1 blank line before closing function brace; 0 found
Loading history...
Expected 2 blank lines after function; 1 found
Loading history...
402
403
	/**
404
	 * Check the $wp_query global to see if there are posts in the current query.
405
	 *
406
	 * @return void
407
	 */
408
	public function check_for_results() {
0 ignored issues
show
Method name "Frontend::check_for_results" is not in camel caps format
Loading history...
409
		if ( true === $this->search_enabled ) {
0 ignored issues
show
Expected 0 spaces before closing bracket; 1 found
Loading history...
410
			global $wp_query;
411
			if ( empty( $wp_query->posts ) ) {
0 ignored issues
show
Expected 0 spaces before closing bracket; 1 found
Loading history...
412
				$this->has_posts = false;
413
				remove_action( 'lsx_content_top', array( $this, 'facet_top_bar' ) );
414
				remove_action( 'lsx_content_bottom', array( $this, 'facet_bottom_bar' ) );
415
				remove_action( 'lsx_content_wrap_before', array( $this, 'search_sidebar' ), 150 );
416
			} else {
417
				$this->has_posts = true;
418
			}
419
		}
420
	}
0 ignored issues
show
Expected 2 blank lines after function; 1 found
Loading history...
Expected 1 blank line before closing function brace; 0 found
Loading history...
421
422
	/**
423
	 * Filter the post types.
424
	 */
425
	public function filter_post_types( $query ) {
0 ignored issues
show
Method name "Frontend::filter_post_types" is not in camel caps format
Loading history...
426
		if ( ! is_admin() && $query->is_main_query() && $query->is_search() ) {
0 ignored issues
show
Expected 0 spaces before closing bracket; 1 found
Loading history...
427
			if ( ! empty( $this->options ) && ! empty( $this->options['display']['search_enable_core'] ) ) {
0 ignored issues
show
Expected 0 spaces before closing bracket; 1 found
Loading history...
428
				if ( ! empty( $this->options['general']['search_post_types'] ) && is_array( $this->options['general']['search_post_types'] ) ) {
0 ignored issues
show
Expected 0 spaces before closing bracket; 1 found
Loading history...
429
					$post_types = array_keys( $this->options['general']['search_post_types'] );
430
					$query->set( 'post_type', $post_types );
431
				}
432
			}
433
		}
434
	}
0 ignored issues
show
Expected 2 blank lines after function; 1 found
Loading history...
Expected 1 blank line before closing function brace; 0 found
Loading history...
435
436
	/**
437
	 * Sets post types with active search options.
438
	 */
439
	public function register_post_types( $post_types ) {
0 ignored issues
show
Method name "Frontend::register_post_types" is not in camel caps format
Loading history...
440
		$post_types = array( 'post', 'project', 'service', 'team', 'testimonial', 'video', 'product' );
441
		return $post_types;
442
	}
0 ignored issues
show
Expected 1 blank line before closing function brace; 0 found
Loading history...
Expected 2 blank lines after function; 1 found
Loading history...
443
444
	/**
445
	 * Sets taxonomies with active search options.
446
	 */
447
	public function register_taxonomies( $taxonomies ) {
0 ignored issues
show
Method name "Frontend::register_taxonomies" is not in camel caps format
Loading history...
448
		$taxonomies = array( 'category', 'post_tag', 'project-group', 'service-group', 'team_role', 'video-category', 'product_cat', 'product_tag' );
449
		return $taxonomies;
450
	}
0 ignored issues
show
Expected 2 blank lines after function; 1 found
Loading history...
Expected 1 blank line before closing function brace; 0 found
Loading history...
451
452
	/**
453
	 * Sets post types with active search options.
454
	 */
455
	public function register_post_type_tabs( $post_types_plural ) {
0 ignored issues
show
Method name "Frontend::register_post_type_tabs" is not in camel caps format
Loading history...
456
		$post_types_plural = array(
457
			'post' => 'posts',
0 ignored issues
show
Array double arrow not aligned correctly; expected 8 space(s) between "'post'" and double arrow, but found 1.
Loading history...
458
			'project' => 'projects',
0 ignored issues
show
Array double arrow not aligned correctly; expected 5 space(s) between "'project'" and double arrow, but found 1.
Loading history...
459
			'service' => 'services',
0 ignored issues
show
Array double arrow not aligned correctly; expected 5 space(s) between "'service'" and double arrow, but found 1.
Loading history...
460
			'team' => 'team',
0 ignored issues
show
Array double arrow not aligned correctly; expected 8 space(s) between "'team'" and double arrow, but found 1.
Loading history...
461
			'testimonial' => 'testimonials',
462
			'video' => 'videos',
0 ignored issues
show
Array double arrow not aligned correctly; expected 7 space(s) between "'video'" and double arrow, but found 1.
Loading history...
463
			'product' => 'products', // WooCommerce
0 ignored issues
show
Array double arrow not aligned correctly; expected 5 space(s) between "'product'" and double arrow, but found 1.
Loading history...
464
		);
465
		return $post_types_plural;
466
	}
0 ignored issues
show
Expected 1 blank line before closing function brace; 0 found
Loading history...
Expected 2 blank lines after function; 1 found
Loading history...
467
468
	/**
469
	 * Enqueue styles and scripts.
470
	 */
471
	public function assets() {
472
		add_filter( 'lsx_defer_parsing_of_js', array( $this, 'skip_js_defer' ), 10, 4 );
473
		wp_enqueue_script( 'touchSwipe', LSX_SEARCH_URL . 'assets/js/vendor/jquery.touchSwipe.min.js', array( 'jquery' ), LSX_SEARCH_VER, true );
474
		wp_enqueue_script( 'slideandswipe', LSX_SEARCH_URL . 'assets/js/vendor/jquery.slideandswipe.min.js', array( 'jquery', 'touchSwipe' ), LSX_SEARCH_VER, true );
475
		wp_enqueue_script( 'lsx-search', LSX_SEARCH_URL . 'assets/js/src/lsx-search.js', array( 'jquery', 'touchSwipe', 'slideandswipe', 'jquery-ui-datepicker' ), LSX_SEARCH_VER, true );
476
477
		$params = apply_filters( 'lsx_search_js_params', array(
0 ignored issues
show
The opening parenthesis of a multi-line function call should be the last content on the line.
Loading history...
For multi-line function calls, each argument should be on a separate line.

For a function calls that spawns multiple lines, the coding style suggests to split arguments to separate lines like this:

someFunctionCall(
    $firstArgument,
    $secondArgument,
    $thirdArgument
);
Loading history...
478
			'ajax_url' => admin_url( 'admin-ajax.php' ),
479
		));
0 ignored issues
show
For multi-line function calls, the closing parenthesis should be on a new line.

If a function call spawns multiple lines, the coding standard suggests to move the closing parenthesis to a new line:

someFunctionCall(
    $firstArgument,
    $secondArgument,
    $thirdArgument
); // Closing parenthesis on a new line.
Loading history...
480
481
		wp_localize_script( 'lsx-search', 'lsx_customizer_params', $params );
482
483
		wp_enqueue_style( 'lsx-search', LSX_SEARCH_URL . 'assets/css/lsx-search.css', array(), LSX_SEARCH_VER );
484
		wp_style_add_data( 'lsx-search', 'rtl', 'replace' );
485
486
		if ( true === $this->new_options ) {
0 ignored issues
show
Expected 0 spaces before closing bracket; 1 found
Loading history...
487
			wp_deregister_style( 'lsx_to_search' );
488
			wp_deregister_script( 'lsx_to_search' );
489
		}
490
	}
0 ignored issues
show
Expected 1 blank line before closing function brace; 0 found
Loading history...
Expected 2 blank lines after function; 1 found
Loading history...
491
492
	/**
493
	 * Adds the to-search.min.js and the to-search.js
494
	 *
495
	 * @param boolean $should_skip
496
	 * @param string  $tag
497
	 * @param string  $handle
498
	 * @param string  $href
499
	 * @return boolean
500
	 */
501
	public function skip_js_defer( $should_skip, $tag, $handle, $href ) {
0 ignored issues
show
Method name "Frontend::skip_js_defer" is not in camel caps format
Loading history...
502
		if ( ! is_admin() && ( false !== stripos( $href, 'lsx-search.min.js' ) || false !== stripos( $href, 'lsx-search.js' ) ) ) {
0 ignored issues
show
Expected 0 spaces before closing bracket; 1 found
Loading history...
503
			$should_skip = true;
504
		}
505
		return $should_skip;
506
	}
0 ignored issues
show
Expected 2 blank lines after function; 1 found
Loading history...
Expected 1 blank line before closing function brace; 0 found
Loading history...
507
508
	/**
509
	 * Redirect wordpress to the search template located in the plugin
0 ignored issues
show
Please spell "WordPress" correctly. Found 1 misspelling(s): wordpress
Loading history...
510
	 *
511
	 * @param	$template
0 ignored issues
show
Spaces must be used for mid-line alignment; tabs are not allowed
Loading history...
512
	 * @return	$template
0 ignored issues
show
Spaces must be used for mid-line alignment; tabs are not allowed
Loading history...
Documentation Bug introduced by
The doc comment $template at position 0 could not be parsed: Unknown type name '$template' at position 0 in $template.
Loading history...
513
	 */
514
	public function search_template_include( $template ) {
0 ignored issues
show
Method name "Frontend::search_template_include" is not in camel caps format
Loading history...
515
		if ( is_main_query() && is_search() ) {
0 ignored issues
show
Expected 0 spaces before closing bracket; 1 found
Loading history...
516
			if ( file_exists( LSX_SEARCH_PATH . 'templates/search.php' ) ) {
0 ignored issues
show
Expected 0 spaces before closing bracket; 1 found
Loading history...
517
				$template = LSX_SEARCH_PATH . 'templates/search.php';
518
			}
519
		}
520
521
		return $template;
522
	}
0 ignored issues
show
Expected 1 blank line before closing function brace; 0 found
Loading history...
Expected 2 blank lines after function; 1 found
Loading history...
523
524
	/**
525
	 * Ignore sticky posts on Blog search.
526
	 *
527
	 * @param [type] $query
0 ignored issues
show
Documentation Bug introduced by
The doc comment [type] at position 0 could not be parsed: Unknown type name '[' at position 0 in [type].
Loading history...
528
	 * @return void
529
	 */
530
	public function ignore_sticky_search( $query ) {
0 ignored issues
show
Method name "Frontend::ignore_sticky_search" is not in camel caps format
Loading history...
531
		if ( $query->is_main_query() && is_home() ) {
0 ignored issues
show
Expected 0 spaces before closing bracket; 1 found
Loading history...
532
			$query->set( 'ignore_sticky_posts', true );
533
		}
534
	}
0 ignored issues
show
Expected 1 blank line before closing function brace; 0 found
Loading history...
Expected 2 blank lines after function; 1 found
Loading history...
535
536
	/**
537
	 * Rewrite the search URL
538
	 */
539
	public function pretty_search_redirect() {
0 ignored issues
show
Method name "Frontend::pretty_search_redirect" is not in camel caps format
Loading history...
540
		global $wp_rewrite,$wp_query;
541
542
		if ( ! isset( $wp_rewrite ) || ! is_object( $wp_rewrite ) || ! $wp_rewrite->using_permalinks() ) {
0 ignored issues
show
Expected 0 spaces before closing bracket; 1 found
Loading history...
543
			return;
544
		}
545
546
		$search_base = $wp_rewrite->search_base;
547
548
		if ( is_search() && ! is_admin() && strpos( $_SERVER['REQUEST_URI'], "/{$search_base}/" ) === false ) {
0 ignored issues
show
$_SERVER data not unslashed before sanitization. Use wp_unslash() or similar
Loading history...
Detected usage of a non-sanitized input variable: $_SERVER['REQUEST_URI']
Loading history...
Expected 0 spaces before closing bracket; 1 found
Loading history...
Detected usage of a possibly undefined superglobal array index: $_SERVER['REQUEST_URI']. Use isset() or empty() to check the index exists before using it
Loading history...
549
			$search_query = get_query_var( 's' );
550
			if ( empty( $search_query ) && isset( $_GET['s'] ) ) {
0 ignored issues
show
Processing form data without nonce verification.
Loading history...
Expected 0 spaces before closing bracket; 1 found
Loading history...
551
				$search_query = $_GET['s'];
0 ignored issues
show
Processing form data without nonce verification.
Loading history...
$_GET data not unslashed before sanitization. Use wp_unslash() or similar
Loading history...
Detected usage of a non-sanitized input variable: $_GET['s']
Loading history...
552
			}
553
			$engine = '';
554
555
			// If the search was triggered by a supplemental engine.
556
			if ( isset( $_GET['engine'] ) && 'default' !== $_GET['engine'] ) {
0 ignored issues
show
Expected 0 spaces before closing bracket; 1 found
Loading history...
Processing form data without nonce verification.
Loading history...
557
				$engine = sanitize_text_field( wp_unslash( $_GET['engine'] ) );
0 ignored issues
show
Processing form data without nonce verification.
Loading history...
It seems like wp_unslash($_GET['engine']) can also be of type array; however, parameter $str of sanitize_text_field() does only seem to accept string, maybe add an additional type check? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

557
				$engine = sanitize_text_field( /** @scrutinizer ignore-type */ wp_unslash( $_GET['engine'] ) );
Loading history...
558
				$index  = array_search( $engine, $this->post_type_slugs, true );
559
				if ( false !== $index ) {
0 ignored issues
show
Expected 0 spaces before closing bracket; 1 found
Loading history...
560
					$engine = $index;
561
				}
562
				$engine = $engine . '/';
563
			}
564
565
			$get_array = $_GET;
0 ignored issues
show
Processing form data without nonce verification.
Loading history...
566
567
			if ( is_array( $get_array ) && ! empty( $get_array ) ) {
0 ignored issues
show
Expected 0 spaces before closing bracket; 1 found
Loading history...
568
				$vars_to_maintain = array();
569
570
				foreach ( $get_array as $ga_key => $ga_value ) {
0 ignored issues
show
Expected 0 spaces before closing bracket; 1 found
Loading history...
571
					if ( false !== strpos( $ga_key, 'fwp_' ) ) {
0 ignored issues
show
Expected 0 spaces before closing bracket; 1 found
Loading history...
572
						$vars_to_maintain[] = $ga_key . '=' . $ga_value;
573
					}
574
				}
575
			}
576
577
			$redirect_url = home_url( "/{$search_base}/" . $engine . urlencode( $search_query ) );
0 ignored issues
show
urlencode() should only be used when dealing with legacy applications rawurlencode() should now be used instead. See http://php.net/manual/en/function.rawurlencode.php and http://www.faqs.org/rfcs/rfc3986.html
Loading history...
578
579
			if ( ! empty( $vars_to_maintain ) ) {
0 ignored issues
show
Expected 0 spaces before closing bracket; 1 found
Loading history...
580
				$redirect_url .= '?' . implode( '&', $vars_to_maintain );
581
			}
582
			wp_redirect( $redirect_url );
0 ignored issues
show
wp_redirect() found. Using wp_safe_redirect(), along with the allowed_redirect_hosts filter if needed, can help avoid any chances of malicious redirects within code. It is also important to remember to call exit() after a redirect so that no other unwanted code is executed.
Loading history...
583
			exit();
0 ignored issues
show
Using exit here is not recommended.

In general, usage of exit should be done with care and only when running in a scripting context like a CLI script.

Loading history...
584
		}
585
	}
0 ignored issues
show
Expected 2 blank lines after function; 1 found
Loading history...
Expected 1 blank line before closing function brace; 0 found
Loading history...
586
587
	/**
588
	 * Parse the Query and trigger a search
589
	 */
590
	public function pretty_search_parse_query( $query ) {
0 ignored issues
show
Method name "Frontend::pretty_search_parse_query" is not in camel caps format
Loading history...
591
		$this->post_type_slugs = array(
0 ignored issues
show
Bug Best Practice introduced by
The property post_type_slugs does not exist. Although not strictly required by PHP, it is generally a best practice to declare properties explicitly.
Loading history...
592
			'post' => 'posts',
0 ignored issues
show
Array double arrow not aligned correctly; expected 8 space(s) between "'post'" and double arrow, but found 1.
Loading history...
593
			'project' => 'projects',
0 ignored issues
show
Array double arrow not aligned correctly; expected 5 space(s) between "'project'" and double arrow, but found 1.
Loading history...
594
			'service' => 'services',
0 ignored issues
show
Array double arrow not aligned correctly; expected 5 space(s) between "'service'" and double arrow, but found 1.
Loading history...
595
			'team' => 'team',
0 ignored issues
show
Array double arrow not aligned correctly; expected 8 space(s) between "'team'" and double arrow, but found 1.
Loading history...
596
			'testimonial' => 'testimonials',
597
			'video' => 'videos',
0 ignored issues
show
Array double arrow not aligned correctly; expected 7 space(s) between "'video'" and double arrow, but found 1.
Loading history...
598
			'product' => 'products', // WooCommerce
0 ignored issues
show
Array double arrow not aligned correctly; expected 5 space(s) between "'product'" and double arrow, but found 1.
Loading history...
599
		);
600
		if ( $query->is_search() && ! is_admin() && $query->is_main_query() ) {
0 ignored issues
show
Expected 0 spaces before closing bracket; 1 found
Loading history...
601
			$search_query = $query->get( 's' );
602
			$keyword_test = explode( '/', $search_query );
603
604
			$index = array_search( $keyword_test[0], $this->post_type_slugs, true );
605
			if ( false !== $index ) {
0 ignored issues
show
Expected 0 spaces before closing bracket; 1 found
Loading history...
606
				$engine = $this->post_type_slugs[ $index ];
607
608
				$query->set( 'post_type', $engine );
609
				$query->set( 'engine', $engine );
610
611
				if ( count( $keyword_test ) > 1 ) {
0 ignored issues
show
Expected 0 spaces before closing bracket; 1 found
Loading history...
612
					$query->set( 's', $keyword_test[1] );
613
				} elseif ( post_type_exists( $engine ) ) {
0 ignored issues
show
Expected 0 spaces before closing bracket; 1 found
Loading history...
614
					$query->set( 's', '' );
615
				}
616
			} else {
617
				if ( isset( $this->options['general']['search_post_types'] ) && is_array( $this->options['general']['search_post_types'] ) ) {
0 ignored issues
show
Expected 0 spaces before closing bracket; 1 found
Loading history...
618
					$post_types = array_keys( $this->options['general']['search_post_types'] );
619
					$query->set( 'post_type', $post_types );
620
				}
621
			}
622
		}
623
		return $query;
624
	}
0 ignored issues
show
Expected 2 blank lines after function; 1 found
Loading history...
Expected 1 blank line before closing function brace; 0 found
Loading history...
625
626
	/**
627
	 * Change the search slug to /search/ for the JSON+LD output in Yoast SEO
628
	 *
629
	 * @return url
0 ignored issues
show
The type lsx\search\classes\url was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
630
	 */
631
	public function change_json_ld_search_url() {
0 ignored issues
show
Method name "Frontend::change_json_ld_search_url" is not in camel caps format
Loading history...
632
		return trailingslashit( home_url() ) . 'search/{search_term_string}';
633
	}
0 ignored issues
show
Expected 1 blank line before closing function brace; 0 found
Loading history...
Expected 2 blank lines after function; 1 found
Loading history...
634
635
	/**
636
	 * A filter to set the layout to 2 column.
637
	 */
638
	public function lsx_layout( $layout ) {
0 ignored issues
show
Method name "Frontend::lsx_layout" is not in camel caps format
Loading history...
639
		if ( ! empty( $this->options['display'][ $this->search_prefix . '_layout' ] ) ) {
0 ignored issues
show
Expected 0 spaces before closing bracket; 1 found
Loading history...
640
			if ( false === $this->has_posts ) {
0 ignored issues
show
Expected 0 spaces before closing bracket; 1 found
Loading history...
641
				$layout = '1c';
642
			} else {
643
				$layout = $this->options['display'][ $this->search_prefix . '_layout' ];
644
			}
645
		}
646
		return $layout;
647
	}
0 ignored issues
show
Expected 2 blank lines after function; 1 found
Loading history...
Expected 1 blank line before closing function brace; 0 found
Loading history...
648
649
	/**
650
	 * Outputs the Search Title Facet
651
	 */
652
	public function search_sidebar_top() {
0 ignored issues
show
Method name "Frontend::search_sidebar_top" is not in camel caps format
Loading history...
653
		if ( ! empty( $this->options['display'][ $this->search_prefix . '_facets' ] ) && is_array( $this->options['display'][ $this->search_prefix . '_facets' ] ) && true !== apply_filters( 'lsx_search_hide_search_box', false ) ) {
0 ignored issues
show
Expected 0 spaces before closing bracket; 1 found
Loading history...
Blank line found at start of control structure
Loading history...
654
655
			if ( ! is_search() ) {
0 ignored issues
show
Expected 0 spaces before closing bracket; 1 found
Loading history...
Blank line found at start of control structure
Loading history...
656
657
				foreach ( $this->options['display'][ $this->search_prefix . '_facets' ] as $facet => $facet_useless ) {
0 ignored issues
show
Expected 0 spaces before closing bracket; 1 found
Loading history...
Blank line found at start of control structure
Loading history...
658
659
					if ( isset( $this->facet_data[ $facet ] ) && 'search' === $this->facet_data[ $facet ]['type'] ) {
0 ignored issues
show
Expected 0 spaces before closing bracket; 1 found
Loading history...
660
						echo wp_kses_post( '<div class="row">' );
661
							$this->display_facet_default( $facet );
662
						echo wp_kses_post( '</div>' );
663
						unset( $this->options['display'][ $this->search_prefix . '_facets' ][ $facet ] );
664
					}
665
				}
666
			} else {
667
				echo wp_kses_post( '<div class="row">' );
668
					$this->display_facet_search();
669
				echo wp_kses_post( '</div>' );
670
			}
671
		}
672
	}
0 ignored issues
show
Expected 1 blank line before closing function brace; 0 found
Loading history...
Expected 2 blank lines after function; 1 found
Loading history...
673
674
	/**
675
	 * Overrides the search facet HTML
676
	 * @param $output
677
	 * @param $params
678
	 *
679
	 * @return string
680
	 */
681
	public function search_facet_html( $output, $params ) {
0 ignored issues
show
Method name "Frontend::search_facet_html" is not in camel caps format
Loading history...
682
		if ( 'search' == $params['facet']['type'] ) {
0 ignored issues
show
Found: ==. Use strict comparisons (=== or !==).
Loading history...
Expected 0 spaces before closing bracket; 1 found
Loading history...
Blank line found at start of control structure
Loading history...
683
684
			$value = (array) $params['selected_values'];
0 ignored issues
show
Equals sign not aligned with surrounding assignments; expected 7 spaces but found 1 space

This check looks for multiple assignments in successive lines of code. It will report an issue if the operators are not in a straight line.

To visualize

$a = "a";
$ab = "ab";
$abc = "abc";

will produce issues in the first and second line, while this second example

$a   = "a";
$ab  = "ab";
$abc = "abc";

will produce no issues.

Loading history...
685
			$value = empty( $value ) ? '' : stripslashes( $value[0] );
0 ignored issues
show
Equals sign not aligned with surrounding assignments; expected 7 spaces but found 1 space

This check looks for multiple assignments in successive lines of code. It will report an issue if the operators are not in a straight line.

To visualize

$a = "a";
$ab = "ab";
$abc = "abc";

will produce issues in the first and second line, while this second example

$a   = "a";
$ab  = "ab";
$abc = "abc";

will produce no issues.

Loading history...
686
			$placeholder = isset( $params['facet']['placeholder'] ) ? $params['facet']['placeholder'] : __( 'Search...', 'lsx-search' );
687
			$placeholder = facetwp_i18n( $placeholder );
0 ignored issues
show
The function facetwp_i18n was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

687
			$placeholder = /** @scrutinizer ignore-call */ facetwp_i18n( $placeholder );
Loading history...
688
689
			ob_start();
690
			?>
691
			<div class="col-xs-12 facetwp-item facetwp-form">
692
				<div class="search-form lsx-search-form 2">
693
					<div class="input-group facetwp-search-wrap">
694
						<div class="field">
695
							<input class="facetwp-search search-field form-control" type="text" placeholder="<?php echo esc_attr( $placeholder ); ?>" autocomplete="off" value="<?php echo esc_attr( $value ); ?>">
696
						</div>
697
698
						<div class="field submit-button">
699
							<button class="search-submit btn facetwp-btn" type="submit"><?php esc_html_e( 'Search', 'lsx-search' ); ?></button>
700
						</div>
701
					</div>
702
				</div>
703
			</div>
704
			<?php
705
			$output = ob_get_clean();
706
		}
707
		return $output;
708
	}
0 ignored issues
show
Expected 1 blank line before closing function brace; 0 found
Loading history...
Expected 2 blank lines after function; 1 found
Loading history...
709
710
	/**
711
	 * Change the primary and secondary column classes.
712
	 */
713
	public function lsx_layout_selector( $return_class, $class, $layout, $size ) {
0 ignored issues
show
Method name "Frontend::lsx_layout_selector" is not in camel caps format
Loading history...
714
		if ( ! empty( $this->options['display'][ $this->search_prefix . '_layout' ] ) ) {
0 ignored issues
show
Expected 0 spaces before closing bracket; 1 found
Loading history...
Blank line found at start of control structure
Loading history...
715
716
			if ( '2cl' === $layout || '2cr' === $layout ) {
0 ignored issues
show
Expected 0 spaces before closing bracket; 1 found
Loading history...
717
				$main_class    = 'col-sm-8 col-md-9';
718
				$sidebar_class = 'col-sm-4 col-md-3';
719
720
				if ( '2cl' === $layout ) {
0 ignored issues
show
Expected 0 spaces before closing bracket; 1 found
Loading history...
721
					$main_class    .= ' col-sm-pull-4 col-md-pull-3 search-sidebar-left';
722
					$sidebar_class .= ' col-sm-push-8 col-md-push-9';
723
				}
724
725
				if ( 'main' === $class ) {
0 ignored issues
show
Expected 0 spaces before closing bracket; 1 found
Loading history...
726
					return $main_class;
727
				}
728
729
				if ( 'sidebar' === $class ) {
0 ignored issues
show
Expected 0 spaces before closing bracket; 1 found
Loading history...
730
					return $sidebar_class;
731
				}
732
			}
733
		}
734
735
		return $return_class;
736
	}
0 ignored issues
show
Expected 1 blank line before closing function brace; 0 found
Loading history...
Expected 2 blank lines after function; 1 found
Loading history...
737
738
	/**
739
	 * Displays the Alphabet sorter above the facets.
740
	 *
741
	 * @return void
742
	 */
743
	public function display_alphabet_facet() {
0 ignored issues
show
Method name "Frontend::display_alphabet_facet" is not in camel caps format
Loading history...
744
		if ( isset( $this->options['display'][ $this->search_prefix . '_az_pagination' ] ) ) {
0 ignored issues
show
Expected 0 spaces before closing bracket; 1 found
Loading history...
745
			$az_pagination = $this->options['display'][ $this->search_prefix . '_az_pagination' ];
746
		} else {
747
			$az_pagination = false;
748
		}
749
		$az_pagination = apply_filters( 'lsx_search_top_az_pagination', $az_pagination );
750
		if ( false !== $az_pagination && '' !== $az_pagination ) {
0 ignored issues
show
Expected 0 spaces before closing bracket; 1 found
Loading history...
751
			echo do_shortcode( '[facetwp facet="' . $az_pagination . '"]' );
752
		}
753
	}
0 ignored issues
show
Expected 1 blank line before closing function brace; 0 found
Loading history...
Expected 2 blank lines after function; 1 found
Loading history...
754
755
	/**
756
	 * Outputs top.
757
	 */
758
	public function facet_top_bar() {
0 ignored issues
show
Method name "Frontend::facet_top_bar" is not in camel caps format
Loading history...
759
		if ( true === apply_filters( 'lsx_search_hide_top_bar', false ) ) {
0 ignored issues
show
Expected 0 spaces before closing bracket; 1 found
Loading history...
760
			return;
761
		}
762
763
		$show_pagination     = true;
764
		$pagination_visible  = false;
765
		$show_per_page_combo = empty( $this->options['display'][ $this->search_prefix . '_disable_per_page' ] );
766
		$show_sort_combo     = empty( $this->options['display'][ $this->search_prefix . '_disable_sorting' ] );
767
768
		$show_pagination     = apply_filters( 'lsx_search_top_show_pagination', $show_pagination );
769
		$pagination_visible  = apply_filters( 'lsx_search_top_pagination_visible', $pagination_visible );
770
		$show_per_page_combo = apply_filters( 'lsx_search_top_show_per_page_combo', $show_per_page_combo );
771
		$show_sort_combo     = apply_filters( 'lsx_search_top_show_sort_combo', $show_sort_combo );
772
		$facet_row_classes   = apply_filters( 'lsx_search_top_facetwp_row_classes', '' );
773
		?>
774
		<div id="facetwp-top">
775
			<?php if ( $show_sort_combo || ( $show_pagination && $show_per_page_combo ) ) { ?>
0 ignored issues
show
Expected 0 spaces before closing bracket; 1 found
Loading history...
776
				<div class="row facetwp-top-row-1 hidden-xs <?php echo esc_attr( $facet_row_classes ); ?>">
777
					<div class="col-xs-12">
778
779
						<?php if ( ! empty( $this->options['display'][ $this->search_prefix . '_display_result_count' ] ) && false === apply_filters( 'lsx_search_hide_result_count', false ) ) { ?>
0 ignored issues
show
Expected 0 spaces before closing bracket; 1 found
Loading history...
780
							<div class="row">
781
								<div class="col-md-12 facetwp-item facetwp-results">
782
									<h3 class="lsx-search-title lsx-search-title-results"><?php esc_html_e( 'Results', 'lsx-search' ); ?> <?php echo '(' . do_shortcode( '[facetwp counts="true"]' ) . ')&nbsp;'; ?>
783
									<?php if ( false !== $this->options && isset( $this->options['display'] ) && ( ! empty( $this->options['display'][ $this->search_prefix . '_display_clear_button' ] ) ) && 'on' === $this->options['display'][ $this->search_prefix . '_display_clear_button' ] ) { ?>
0 ignored issues
show
Expected 0 spaces before closing bracket; 1 found
Loading history...
784
										<span class="clear-facets hidden">- <a title="<?php esc_html_e( 'Clear the current search filters.', 'lsx-search' ); ?>" class="facetwp-results-clear" type="button" onclick="<?php echo esc_attr( apply_filters( 'lsx_search_clear_function', 'lsx_search.clearFacets(this);' ) ); ?>"><?php esc_html_e( 'Clear', 'lsx-search' ); ?></a></span>
785
									<?php } ?>
786
									</h3>
787
								</div>
788
							</div>
789
						<?php } ?>
790
791
						<?php do_action( 'lsx_search_facetwp_top_row' ); ?>
792
793
						<?php $this->display_alphabet_facet(); ?>
794
795
						<?php
796
						if ( $show_sort_combo ) { 
0 ignored issues
show
Expected 0 spaces before closing bracket; 1 found
Loading history...
797
							$new_sorter = $this->has_facet( 'sort' );
798
							if ( false !== $new_sorter ) {
0 ignored issues
show
Expected 0 spaces before closing bracket; 1 found
Loading history...
799
								echo do_shortcode( '[facetwp facet="' . $new_sorter . '"]' );
800
							} else {
801
								echo do_shortcode( '[facetwp sort="true"]' );
802
							}	
0 ignored issues
show
Spaces must be used for mid-line alignment; tabs are not allowed
Loading history...
803
						}
804
						?>
805
					</div>
806
				</div>
807
			<?php } ?>
808
		</div>
809
		<?php
810
	}
0 ignored issues
show
Expected 1 blank line before closing function brace; 0 found
Loading history...
Expected 2 blank lines after function; 1 found
Loading history...
811
812
	public function has_facet( $type ) {
0 ignored issues
show
Method name "Frontend::has_facet" is not in camel caps format
Loading history...
813
		$has_facet = false;
814
		if ( ! empty( $this->options['display'][ $this->search_prefix . '_facets' ] ) && is_array( $this->options['display'][ $this->search_prefix . '_facets' ] ) ) {
0 ignored issues
show
Expected 0 spaces before closing bracket; 1 found
Loading history...
815
			foreach ( $this->options['display'][ $this->search_prefix . '_facets' ] as $facet => $facet_useless ) {
0 ignored issues
show
Expected 0 spaces before closing bracket; 1 found
Loading history...
816
				if ( isset( $this->facet_data[ $facet ] ) &&  $this->facet_data[ $facet ]['type'] === $type ) {
0 ignored issues
show
Expected 0 spaces before closing bracket; 1 found
Loading history...
Expected 1 space after "&&"; 2 found
Loading history...
Expected 1 space after logical operator; 2 found
Loading history...
817
					$has_facet = $facet;
818
				}
819
			}
820
		}
821
		return $has_facet;
822
	}
0 ignored issues
show
Expected 1 blank line before closing function brace; 0 found
Loading history...
Expected 2 blank lines after function; 1 found
Loading history...
823
824
	/**
825
	 * Outputs bottom.
826
	 */
827
	public function facet_bottom_bar() {
0 ignored issues
show
Method name "Frontend::facet_bottom_bar" is not in camel caps format
Loading history...
828
		if ( true === apply_filters( 'lsx_search_hide_bottom_bar', false ) ) {
0 ignored issues
show
Expected 0 spaces before closing bracket; 1 found
Loading history...
829
			return;
830
		}
831
		$show_pagination    = true;
832
		$pagination_visible = false;
833
		if ( isset( $this->options['display'][ $this->search_prefix . '_az_pagination' ] ) ) {
0 ignored issues
show
Expected 0 spaces before closing bracket; 1 found
Loading history...
834
			$az_pagination = $this->options['display'][ $this->search_prefix . '_az_pagination' ];
835
		} else {
836
			$az_pagination = false;
837
		}
838
839
		$show_per_page_combo = empty( $this->options['display'][ $this->search_prefix . '_disable_per_page' ] );
840
		$show_sort_combo     = empty( $this->options['display'][ $this->search_prefix . '_search_disable_sorting' ] );
841
842
		$show_pagination     = apply_filters( 'lsx_search_bottom_show_pagination', $show_pagination );
843
		$pagination_visible  = apply_filters( 'lsx_search_bottom_pagination_visible', $pagination_visible );
844
		$show_per_page_combo = apply_filters( 'lsx_search_bottom_show_per_page_combo', $show_per_page_combo );
845
		$show_sort_combo     = apply_filters( 'lsx_search_bottom_show_sort_combo', $show_sort_combo );
846
847
		if ( $show_pagination || ! empty( $az_pagination ) ) { ?>
0 ignored issues
show
Expected 0 spaces before closing bracket; 1 found
Loading history...
Closing PHP tag must be on a line by itself
Loading history...
848
			<div id="facetwp-bottom">
849
				<div class="row facetwp-bottom-row-1">
850
					<div class="col-xs-12">
851
						<?php do_action( 'lsx_search_facetwp_bottom_row' ); ?>
852
853
						<?php //if ( $show_sort_combo ) { ?>
0 ignored issues
show
Unused Code Comprehensibility introduced by
56% of this comment could be valid code. Did you maybe forget this after debugging?

Sometimes obsolete code just ends up commented out instead of removed. In this case it is better to remove the code once you have checked you do not need it.

The code might also have been commented out for debugging purposes. In this case it is vital that someone uncomments it again or your project may behave in very unexpected ways in production.

This check looks for comments that seem to be mostly valid code and reports them.

Loading history...
854
							<?php //echo do_shortcode( '[facetwp sort="true"]' ); ?>
0 ignored issues
show
Unused Code Comprehensibility introduced by
56% of this comment could be valid code. Did you maybe forget this after debugging?

Sometimes obsolete code just ends up commented out instead of removed. In this case it is better to remove the code once you have checked you do not need it.

The code might also have been commented out for debugging purposes. In this case it is vital that someone uncomments it again or your project may behave in very unexpected ways in production.

This check looks for comments that seem to be mostly valid code and reports them.

Loading history...
855
						<?php //} ?>
856
857
						<?php //if ( ( $show_pagination && $show_per_page_combo ) || $show_per_page_combo ) { ?>
0 ignored issues
show
Unused Code Comprehensibility introduced by
53% of this comment could be valid code. Did you maybe forget this after debugging?

Sometimes obsolete code just ends up commented out instead of removed. In this case it is better to remove the code once you have checked you do not need it.

The code might also have been commented out for debugging purposes. In this case it is vital that someone uncomments it again or your project may behave in very unexpected ways in production.

This check looks for comments that seem to be mostly valid code and reports them.

Loading history...
858
							<?php //echo do_shortcode( '[facetwp per_page="true"]' ); ?>
0 ignored issues
show
Unused Code Comprehensibility introduced by
56% of this comment could be valid code. Did you maybe forget this after debugging?

Sometimes obsolete code just ends up commented out instead of removed. In this case it is better to remove the code once you have checked you do not need it.

The code might also have been commented out for debugging purposes. In this case it is vital that someone uncomments it again or your project may behave in very unexpected ways in production.

This check looks for comments that seem to be mostly valid code and reports them.

Loading history...
859
						<?php //} ?>
860
861
						<?php
862
						if ( $show_pagination ) {
0 ignored issues
show
Expected 0 spaces before closing bracket; 1 found
Loading history...
863
							$output_pagination = do_shortcode( '[facetwp pager="true"]' );
864
							if ( ! empty( $this->options['display'][ $this->search_prefix . '_facets' ] ) && is_array( $this->options['display'][ $this->search_prefix . '_facets' ] ) ) {
0 ignored issues
show
Expected 0 spaces before closing bracket; 1 found
Loading history...
865
								foreach ( $this->options['display'][ $this->search_prefix . '_facets' ] as $facet => $facet_useless ) {
0 ignored issues
show
Expected 0 spaces before closing bracket; 1 found
Loading history...
866
									if ( isset( $this->facet_data[ $facet ] ) && in_array( $this->facet_data[ $facet ]['type'], array( 'pager' ) ) ) {
0 ignored issues
show
Not using strict comparison for in_array; supply true for third argument.
Loading history...
Expected 0 spaces before closing bracket; 1 found
Loading history...
867
										$output_pagination = do_shortcode( '[facetwp facet="pager_"]' );
868
									}
869
								}
870
							}
871
							echo wp_kses_post( $output_pagination );
872
						?>
873
						<?php } ?>
874
					</div>
875
				</div>
876
			</div>
877
		<?php }
0 ignored issues
show
Opening PHP tag must be on a line by itself
Loading history...
878
	}
0 ignored issues
show
Expected 1 blank line before closing function brace; 0 found
Loading history...
Expected 2 blank lines after function; 1 found
Loading history...
879
880
	/**
881
	 * Adds in the closing facetwp div
882
	 *
883
	 * @return void
884
	 */
885
	public function facetwp_tempate_open() {
0 ignored issues
show
Method name "Frontend::facetwp_tempate_open" is not in camel caps format
Loading history...
886
		?>
887
		<div class="facetwp-template">
888
		<?php
889
	}
0 ignored issues
show
Expected 2 blank lines after function; 1 found
Loading history...
Expected 1 blank line before closing function brace; 0 found
Loading history...
890
891
	/**
892
	 * Adds in the closing facetwp div
893
	 *
894
	 * @return void
895
	 */
896
	public function facetwp_tempate_close() {
0 ignored issues
show
Method name "Frontend::facetwp_tempate_close" is not in camel caps format
Loading history...
897
		?>
898
		</div>
899
		<?php
900
	}
0 ignored issues
show
Expected 1 blank line before closing function brace; 0 found
Loading history...
Expected 2 blank lines after function; 1 found
Loading history...
901
902
	/**
903
	 * Disables default sidebar.
904
	 */
905
	public function lsx_sidebar_enable( $sidebar_enabled ) {
0 ignored issues
show
Method name "Frontend::lsx_sidebar_enable" is not in camel caps format
Loading history...
906
		$sidebar_enabled = false;
907
		return $sidebar_enabled;
908
	}
0 ignored issues
show
Expected 1 blank line before closing function brace; 0 found
Loading history...
Expected 2 blank lines after function; 1 found
Loading history...
909
910
	/**
911
	 * Outputs custom sidebar.
912
	 */
913
	public function search_sidebar() {
0 ignored issues
show
Method name "Frontend::search_sidebar" is not in camel caps format
Loading history...
Expected 0 blank lines after opening function brace; 1 found
Loading history...
914
915
		$this->options = apply_filters( 'lsx_search_sidebar_options', $this->options );
916
		?>
917
			<?php do_action( 'lsx_search_sidebar_before' ); ?>
918
919
			<div id="secondary" class="facetwp-sidebar widget-area <?php echo esc_attr( lsx_sidebar_class() ); ?>" role="complementary">
920
921
				<?php do_action( 'lsx_search_sidebar_top' ); ?>
922
923
				<?php if ( ! empty( $this->options['display'][ $this->search_prefix . '_facets' ] ) && is_array( $this->options['display'][ $this->search_prefix . '_facets' ] ) ) { ?>
0 ignored issues
show
Expected 0 spaces before closing bracket; 1 found
Loading history...
924
					<div class="row facetwp-row lsx-search-filer-area">
925
						<h3 class="facetwp-filter-title"><?php echo esc_html_e( 'Refine by', 'lsx-search' ); ?></h3>
926
						<div class="col-xs-12 facetwp-item facetwp-filters-button hidden-sm hidden-md hidden-lg">
927
							<button class="ssm-toggle-nav btn btn-block" rel="lsx-search-filters"><?php esc_html_e( 'Filters', 'lsx-search' ); ?> <i class="fa fa-chevron-down" aria-hidden="true"></i></button>
928
						</div>
929
930
						<div class="ssm-overlay ssm-toggle-nav" rel="lsx-search-filters"></div>
931
932
						<div class="col-xs-12 facetwp-item-wrap facetwp-filters-wrap" id="lsx-search-filters">
933
							<div class="row hidden-sm hidden-md hidden-lg ssm-row-margin-bottom">
934
								<div class="col-xs-12 facetwp-item facetwp-filters-button">
935
									<button class="ssm-close-btn ssm-toggle-nav btn btn-block" rel="lsx-search-filters"><?php esc_html_e( 'Close Filters', 'lsx-search' ); ?> <i class="fa fa-times" aria-hidden="true"></i></button>
936
								</div>
937
							</div>
938
939
							<div class="row">
940
								<?php
941
								// Slider.
942
								foreach ( $this->options['display'][ $this->search_prefix . '_facets' ] as $facet => $facet_useless ) {
0 ignored issues
show
Expected 0 spaces before closing bracket; 1 found
Loading history...
943
									if ( isset( $this->facet_data[ $facet ] ) && ! in_array( $this->facet_data[ $facet ]['type'], array( 'alpha', 'search', 'pager', 'sort', 'autocomplete' ) ) ) {
0 ignored issues
show
Not using strict comparison for in_array; supply true for third argument.
Loading history...
Expected 0 spaces before closing bracket; 1 found
Loading history...
944
										$this->display_facet_default( $facet );
945
									}
946
								}
947
								?>
948
							</div>
949
950
							<div class="row hidden-sm hidden-md hidden-lg ssm-row-margin-top">
951
								<div class="col-xs-12 facetwp-item facetwp-filters-button">
952
									<button class="ssm-apply-btn ssm-toggle-nav btn btn-block" rel="lsx-search-filters"><?php esc_html_e( 'Apply Filters', 'lsx-search' ); ?> <i class="fa fa-check" aria-hidden="true"></i></button>
953
								</div>
954
							</div>
955
						</div>
956
					</div>
957
				<?php } ?>
958
959
				<?php do_action( 'lsx_search_sidebar_bottom' ); ?>
960
			</div>
961
962
			<?php do_action( 'lsx_search_sidebar_after' ); ?>
963
		<?php
964
	}
0 ignored issues
show
Expected 2 blank lines after function; 1 found
Loading history...
Expected 1 blank line before closing function brace; 0 found
Loading history...
965
966
	/**
967
	 * Check if the pager facet is on
968
	 *
969
	 * @return void
970
	 */
971
	public function pager_facet_enabled() {
0 ignored issues
show
Method name "Frontend::pager_facet_enabled" is not in camel caps format
Loading history...
Expected 0 blank lines after opening function brace; 1 found
Loading history...
972
973
		$pager_facet_off = false;
974
975
		if ( ! empty( $this->options['display'][ $this->search_prefix . '_facets' ] ) && is_array( $this->options['display'][ $this->search_prefix . '_facets' ] ) ) {
0 ignored issues
show
Expected 0 spaces before closing bracket; 1 found
Loading history...
976
			foreach ( $this->options['display'][ $this->search_prefix . '_facets' ] as $facet => $facet_useless ) {
0 ignored issues
show
Expected 0 spaces before closing bracket; 1 found
Loading history...
977
				if ( isset( $this->facet_data[ $facet ] ) && ! in_array( $this->facet_data[ $facet ]['type'], array( 'pager' ) ) ) {
0 ignored issues
show
Expected 0 spaces before closing bracket; 1 found
Loading history...
Not using strict comparison for in_array; supply true for third argument.
Loading history...
978
					$pager_facet_off = true;
979
				}
980
			}
981
		}
982
983
		return $pager_facet_off;
984
	}
0 ignored issues
show
Expected 2 blank lines after function; 1 found
Loading history...
Expected 1 blank line before closing function brace; 0 found
Loading history...
985
986
	/**
987
	 * Display facet search.
988
	 */
989
	public function display_facet_search() {
0 ignored issues
show
Method name "Frontend::display_facet_search" is not in camel caps format
Loading history...
990
		?>
991
		<div class="col-xs-12 facetwp-item facetwp-form">
992
			<form class="search-form lsx-search-form" action="<?php echo esc_attr( home_url() ); ?>" method="get">
993
				<div class="input-group">
994
					<div class="field">
995
						<input class="facetwp-search search-field form-control" name="s" type="search" placeholder="<?php esc_html_e( 'Search', 'lsx-search' ); ?>..." autocomplete="off" value="<?php echo get_search_query() ?>">
0 ignored issues
show
Inline PHP statement must end with a semicolon
Loading history...
996
					</div>
997
998
					<div class="field submit-button">
999
						<button class="search-submit btn" type="submit"><?php esc_html_e( 'Search', 'lsx-search' ); ?></button>
1000
					</div>
1001
				</div>
1002
			</form>
1003
		</div>
1004
		<?php
1005
	}
0 ignored issues
show
Expected 2 blank lines after function; 1 found
Loading history...
Expected 1 blank line before closing function brace; 0 found
Loading history...
1006
1007
	/**
1008
	 * Display facet default.
1009
	 */
1010
	public function display_facet_default( $facet ) {
0 ignored issues
show
Expected 0 blank lines after opening function brace; 1 found
Loading history...
Method name "Frontend::display_facet_default" is not in camel caps format
Loading history...
1011
1012
		$show_collapse = ! isset( $this->options['display'][$this->search_prefix . '_collapse'] ) || 'on' !== $this->options['display'][$this->search_prefix . '_collapse'];
0 ignored issues
show
Array keys must be surrounded by spaces unless they contain a string or an integer.
Loading history...
1013
		$col_class = '';
0 ignored issues
show
Equals sign not aligned with surrounding assignments; expected 5 spaces but found 1 space

This check looks for multiple assignments in successive lines of code. It will report an issue if the operators are not in a straight line.

To visualize

$a = "a";
$ab = "ab";
$abc = "abc";

will produce issues in the first and second line, while this second example

$a   = "a";
$ab  = "ab";
$abc = "abc";

will produce no issues.

Loading history...
1014
1015
		if ( 'search' === $this->facet_data[ $facet ]['type'] ) : ?>
0 ignored issues
show
Closing PHP tag must be on a line by itself
Loading history...
Expected 0 spaces before closing bracket; 1 found
Loading history...
1016
			<?php echo do_shortcode( '[facetwp facet="' . $facet . '"]' ); ?>
1017
		<?php else : ?>
1018
			<div class="col-xs-12 facetwp-item parent-facetwp-facet-<?php echo esc_html( $facet ); ?> <?php echo esc_attr( $col_class ); ?>">
1019
				<?php if ( ! $show_collapse ) { ?>
0 ignored issues
show
Expected 0 spaces before closing bracket; 1 found
Loading history...
1020
					<div class="facetwp-collapsed">
1021
						<h3 class="lsx-search-title"><?php echo wp_kses_post( $this->facet_data[ $facet ]['label'] ); ?></h3>
1022
						<button title="<?php echo esc_html_e( 'Click to Expand', 'lsx-search' ); ?>" class="facetwp-collapse" type="button" data-toggle="collapse" data-target="#collapse-<?php echo esc_html( $facet ); ?>" aria-expanded="false" aria-controls="collapse-<?php echo esc_html( $facet ); ?>"></button>
1023
					</div>
1024
					<div id="collapse-<?php echo esc_html( $facet ); ?>" class="collapse">
1025
						<?php echo do_shortcode( '[facetwp facet="' . $facet . '"]' ); ?>
1026
					</div>
1027
				<?php } else { ?>
1028
					<h3 class="lsx-search-title"><?php echo wp_kses_post( $this->facet_data[ $facet ]['label'] ); ?></h3>
1029
					<?php echo do_shortcode( '[facetwp facet="' . $facet . '"]' ); ?>
1030
				<?php } ?>
1031
			</div>
1032
		<?php
1033
		endif;
1034
	}
0 ignored issues
show
Expected 1 blank line before closing function brace; 0 found
Loading history...
Expected 2 blank lines after function; 1 found
Loading history...
1035
1036
	/**
1037
	 * Changes slot column class.
1038
	 */
1039
	public function change_slot_column_class( $class ) {
0 ignored issues
show
Method name "Frontend::change_slot_column_class" is not in camel caps format
Loading history...
1040
		if ( is_post_type_archive( 'video' ) || is_tax( 'video-category' ) ) {
0 ignored issues
show
Expected 0 spaces before closing bracket; 1 found
Loading history...
1041
			$column_class = 'col-xs-12 col-sm-4';
1042
		}
1043
1044
		return $column_class;
1045
	}
0 ignored issues
show
Expected 1 blank line before closing function brace; 0 found
Loading history...
Expected 2 blank lines after function; 1 found
Loading history...
1046
1047
	/**
1048
	 * Add post type label to the title.
1049
	 */
1050
	public function add_label_to_title() {
0 ignored issues
show
Method name "Frontend::add_label_to_title" is not in camel caps format
Loading history...
1051
		if ( is_search() ) {
0 ignored issues
show
Expected 0 spaces before closing bracket; 1 found
Loading history...
1052
			if ( ! empty( $this->options['display']['engine_search_enable_pt_label'] ) ) {
0 ignored issues
show
Expected 0 spaces before closing bracket; 1 found
Loading history...
1053
				$post_type = get_post_type();
1054
				$post_type = str_replace( '_', ' ', $post_type );
1055
				$post_type = str_replace( '-', ' ', $post_type );
1056
				if ( 'tribe events' === $post_type ) {
0 ignored issues
show
Expected 0 spaces before closing bracket; 1 found
Loading history...
1057
					$post_type = 'Events';
1058
				}
1059
				echo wp_kses_post( ' <span class="label label-default lsx-label-post-type">' . $post_type . '</span>' );
1060
			}
1061
		}
1062
	}
0 ignored issues
show
Expected 1 blank line before closing function brace; 0 found
Loading history...
Expected 2 blank lines after function; 1 found
Loading history...
1063
1064
	/**
1065
	 * Changes the sort options.
1066
	 */
1067
	public function facetwp_sort_options( $options, $params ) {
0 ignored issues
show
Method name "Frontend::facetwp_sort_options" is not in camel caps format
Loading history...
1068
		$this->set_vars();
1069
1070
		if ( true === $this->search_enabled ) {
0 ignored issues
show
Expected 0 spaces before closing bracket; 1 found
Loading history...
1071
			if ( 'default' !== $params['template_name'] && 'wp' !== $params['template_name'] ) {
0 ignored issues
show
Expected 0 spaces before closing bracket; 1 found
Loading history...
1072
				return $options;
1073
			}
1074
1075
			if ( ! empty( $this->options['display'][ $this->search_prefix . '_disable_date' ] ) ) {
0 ignored issues
show
Expected 0 spaces before closing bracket; 1 found
Loading history...
1076
				unset( $options['date_desc'] );
1077
				unset( $options['date_asc'] );
1078
			}
1079
1080
			if ( ! empty( $this->options['display'][ $this->search_prefix . '_disable_az_sorting' ] ) ) {
0 ignored issues
show
Expected 0 spaces before closing bracket; 1 found
Loading history...
1081
				unset( $options['title_desc'] );
1082
				unset( $options['title_asc'] );
1083
			}
1084
		}
1085
1086
		return $options;
1087
	}
0 ignored issues
show
Expected 1 blank line before closing function brace; 0 found
Loading history...
Expected 2 blank lines after function; 1 found
Loading history...
1088
1089
	/**
1090
	 * @param $allowedtags
1091
	 * @param $context
1092
	 *
1093
	 * @return mixed
1094
	 */
1095
	public function kses_allowed_html( $allowedtags, $context ) {
0 ignored issues
show
Method name "Frontend::kses_allowed_html" is not in camel caps format
Loading history...
1096
		$allowedtags['a']['data-value'] = true;
0 ignored issues
show
Equals sign not aligned with surrounding assignments; expected 7 spaces but found 1 space

This check looks for multiple assignments in successive lines of code. It will report an issue if the operators are not in a straight line.

To visualize

$a = "a";
$ab = "ab";
$abc = "abc";

will produce issues in the first and second line, while this second example

$a   = "a";
$ab  = "ab";
$abc = "abc";

will produce no issues.

Loading history...
1097
		$allowedtags['a']['data-selection']  = true;
0 ignored issues
show
Equals sign not aligned with surrounding assignments; expected 3 spaces but found 2 spaces

This check looks for multiple assignments in successive lines of code. It will report an issue if the operators are not in a straight line.

To visualize

$a = "a";
$ab = "ab";
$abc = "abc";

will produce issues in the first and second line, while this second example

$a   = "a";
$ab  = "ab";
$abc = "abc";

will produce no issues.

Loading history...
1098
		$allowedtags['button']['data-toggle'] = true;
1099
		return $allowedtags;
1100
	}
0 ignored issues
show
Expected 1 blank line before closing function brace; 0 found
Loading history...
Expected 2 blank lines after function; 1 found
Loading history...
1101
1102
	/**
1103
	 * Change FaceWP result count HTML
1104
	 */
1105
	public function get_search_query( $keyword ) {
0 ignored issues
show
Method name "Frontend::get_search_query" is not in camel caps format
Loading history...
1106
		global $wp_rewrite,$wp_query;
1107
1108
		if ( empty( $keyword ) ) {
0 ignored issues
show
Expected 0 spaces before closing bracket; 1 found
Loading history...
1109
			if ( ! isset( $wp_rewrite ) || ! is_object( $wp_rewrite ) || ! $wp_rewrite->using_permalinks() ) {
0 ignored issues
show
Expected 0 spaces before closing bracket; 1 found
Loading history...
1110
				return;
1111
			}
1112
			$search_base = $wp_rewrite->search_base;
1113
			if ( strpos( $_SERVER['REQUEST_URI'], "/{$search_base}/" ) !== false ) {
0 ignored issues
show
Detected usage of a non-sanitized input variable: $_SERVER['REQUEST_URI']
Loading history...
$_SERVER data not unslashed before sanitization. Use wp_unslash() or similar
Loading history...
Detected usage of a possibly undefined superglobal array index: $_SERVER['REQUEST_URI']. Use isset() or empty() to check the index exists before using it
Loading history...
Expected 0 spaces before closing bracket; 1 found
Loading history...
1114
				$words = explode( "/{$search_base}/", $_SERVER['REQUEST_URI'] );
0 ignored issues
show
Detected usage of a possibly undefined superglobal array index: $_SERVER['REQUEST_URI']. Use isset() or empty() to check the index exists before using it
Loading history...
$_SERVER data not unslashed before sanitization. Use wp_unslash() or similar
Loading history...
Detected usage of a non-sanitized input variable: $_SERVER['REQUEST_URI']
Loading history...
1115
				$limit = count( $words );
1116
				if ( isset( $words[ $limit - 1 ] ) ) {
0 ignored issues
show
Expected 0 spaces before closing bracket; 1 found
Loading history...
1117
					$keyword = $words[ $limit - 1 ];
1118
				}
1119
			}
1120
		}
1121
1122
		$needle = trim( '/ ' );
1123
		$words = explode( $needle, $keyword );
0 ignored issues
show
Equals sign not aligned with surrounding assignments; expected 2 spaces but found 1 space

This check looks for multiple assignments in successive lines of code. It will report an issue if the operators are not in a straight line.

To visualize

$a = "a";
$ab = "ab";
$abc = "abc";

will produce issues in the first and second line, while this second example

$a   = "a";
$ab  = "ab";
$abc = "abc";

will produce no issues.

Loading history...
1124
		if ( is_array( $words ) && ! empty( $words ) ) {
0 ignored issues
show
Expected 0 spaces before closing bracket; 1 found
Loading history...
1125
			$keyword = $words[ count( $words ) - 1 ];
1126
		}
1127
		$keyword = str_replace( '+', ' ', $keyword );
1128
		$keyword = str_replace( '%20', ' ', $keyword );
1129
		return $keyword;
1130
	}
0 ignored issues
show
Expected 2 blank lines after function; 0 found
Loading history...
Expected 1 blank line before closing function brace; 0 found
Loading history...
1131
}
1132