Passed
Push — master ( d6486f...4dd7a1 )
by Warwick
05:14
created

Frontend::get_search_query()   B

Complexity

Conditions 9
Paths 9

Size

Total Lines 24
Code Lines 16

Duplication

Lines 0
Ratio 0 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
eloc 16
c 2
b 0
f 0
dl 0
loc 24
rs 8.0555
cc 9
nc 9
nop 1
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
Coding Style introduced by
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
Coding Style introduced by
Expected 2 blank lines after function; 1 found
Loading history...
Coding Style introduced by
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
Coding Style introduced by
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
Coding Style introduced by
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
Coding Style introduced by
Expected 2 blank lines after function; 1 found
Loading history...
Coding Style introduced by
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
Coding Style introduced by
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
Coding Style introduced by
Expected 2 blank lines after function; 1 found
Loading history...
Coding Style introduced by
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
Coding Style introduced by
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
Coding Style introduced by
Expected 2 blank lines after function; 1 found
Loading history...
Coding Style introduced by
Expected 1 blank line before closing function brace; 0 found
Loading history...
145
146
	private function get_cmb2_options() {
0 ignored issues
show
Coding Style introduced by
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
Coding Style introduced by
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
Coding Style introduced by
Expected 0 spaces before closing bracket; 1 found
Loading history...
152
				if ( is_array( $option_value ) && ! empty( $option_value ) ) {
0 ignored issues
show
Coding Style introduced by
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
Coding Style introduced by
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
Coding Style introduced by
Expected 2 blank lines after function; 1 found
Loading history...
Coding Style introduced by
Expected 1 blank line before closing function brace; 0 found
Loading history...
164
165
	private function disable_to_search_actions() {
0 ignored issues
show
Coding Style introduced by
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
Coding Style introduced by
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
Unused Code introduced by
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
Coding Style introduced by
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
Coding Style introduced by
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
Coding Style introduced by
Expected 2 blank lines after function; 1 found
Loading history...
Coding Style introduced by
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
Coding Style introduced by
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
Coding Style introduced by
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
introduced by
Found: ==. Use strict comparisons (=== or !==).
Loading history...
Coding Style introduced by
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
Coding Style introduced by
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
Coding Style introduced by
Expected 0 spaces before closing bracket; 1 found
Loading history...
232
			$search_enabled = false;
233
		}
234
		return $search_enabled;
235
	}
0 ignored issues
show
Coding Style introduced by
Expected 1 blank line before closing function brace; 0 found
Loading history...
Coding Style introduced by
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
Coding Style introduced by
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
Coding Style introduced by
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
Coding Style introduced by
Expected 0 spaces before closing bracket; 1 found
Loading history...
250
			if ( false === $new_prefixes ) {
0 ignored issues
show
Coding Style introduced by
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
Coding Style introduced by
Expected 0 spaces before closing bracket; 1 found
Loading history...
258
			if ( false === $new_prefixes ) {
0 ignored issues
show
Coding Style introduced by
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
Coding Style introduced by
Expected 0 spaces before closing bracket; 1 found
Loading history...
265
				$tax = get_query_var( 'taxonomy' );
0 ignored issues
show
Coding Style introduced by
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
Coding Style introduced by
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
Coding Style introduced by
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
Coding Style introduced by
Expected 0 spaces before closing bracket; 1 found
Loading history...
275
				if ( isset( $this->tabs[ $post_type ] ) ) {
0 ignored issues
show
Coding Style introduced by
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
Coding Style introduced by
Expected 1 blank line before closing function brace; 0 found
Loading history...
Coding Style introduced by
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
Coding Style introduced by
Expected 0 blank lines after opening function brace; 1 found
Loading history...
Coding Style introduced by
Method name "Frontend::set_facetwp_vars" is not in camel caps format
Loading history...
288
289
		if ( class_exists( 'FacetWP' ) ) {
0 ignored issues
show
Coding Style introduced by
Expected 0 spaces before closing bracket; 1 found
Loading history...
290
			$facet_data = FWP()->helper->get_facets();
0 ignored issues
show
Bug introduced by
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
introduced by
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
Coding Style introduced by
Expected 0 spaces before closing bracket; 1 found
Loading history...
301
			foreach ( $facet_data as $facet ) {
0 ignored issues
show
Coding Style introduced by
Expected 0 spaces before closing bracket; 1 found
Loading history...
302
				$this->facet_data[ $facet['name'] ] = $facet;
303
			}
304
		}
305
	}
0 ignored issues
show
Coding Style introduced by
Expected 1 blank line before closing function brace; 0 found
Loading history...
Coding Style introduced by
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
Coding Style introduced by
Expected 0 blank lines after opening function brace; 1 found
Loading history...
311
312
		if ( true === $this->search_enabled ) {
0 ignored issues
show
Coding Style introduced by
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
Coding Style introduced by
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
Coding Style introduced by
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
Bug introduced by
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...
Bug introduced by
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...
Bug introduced by
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...
Coding Style introduced by
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
Coding Style introduced by
The opening parenthesis of a multi-line function call should be the last content on the line.
Loading history...
Coding Style introduced by
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...
Coding Style introduced by
Expected 1 space after FUNCTION keyword; 0 found
Loading history...
347
					return 3;
348
				} );
0 ignored issues
show
Coding Style introduced by
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
				add_action( 'lsx_content_wrap_before', array( $this, 'wc_archive_header' ), 140 );
353
354
				// Actions added be LSX theme / woocommerce.php file
355
				remove_action( 'woocommerce_after_shop_loop', 'lsx_wc_sorting_wrapper', 9 );
356
				remove_action( 'woocommerce_after_shop_loop', 'woocommerce_catalog_ordering', 10 );
357
				remove_action( 'woocommerce_after_shop_loop', 'woocommerce_result_count', 20 );
358
				remove_action( 'woocommerce_after_shop_loop', 'woocommerce_pagination', 30 );
359
				remove_action( 'woocommerce_after_shop_loop', 'lsx_wc_sorting_wrapper_close', 31 );
360
361
				// Actions added be LSX theme / woocommerce.php file
362
				remove_action( 'woocommerce_before_shop_loop', 'lsx_wc_sorting_wrapper', 9 );
363
				remove_action( 'woocommerce_before_shop_loop', 'woocommerce_catalog_ordering', 10 );
364
				remove_action( 'woocommerce_before_shop_loop', 'woocommerce_result_count', 20 );
365
				remove_action( 'woocommerce_before_shop_loop', 'lsx_wc_woocommerce_pagination', 30 );
366
				remove_action( 'woocommerce_before_shop_loop', 'lsx_wc_sorting_wrapper_close', 31 );
367
			}
368
		}
369
	}
0 ignored issues
show
Coding Style introduced by
Expected 1 blank line before closing function brace; 0 found
Loading history...
Coding Style introduced by
Expected 2 blank lines after function; 1 found
Loading history...
370
371
	/**
372
	 * Adds a search class to the body to allow the styling of the sidebars etc.
373
	 *
374
	 * @param  array $classes The classes.
375
	 * @return array $classes The classes.
376
	 */
377
	public function body_class( $classes ) {
0 ignored issues
show
Coding Style introduced by
Method name "Frontend::body_class" is not in camel caps format
Loading history...
378
		$classes[] = 'lsx-search-enabled';
379
		return $classes;
380
	}
0 ignored issues
show
Coding Style introduced by
Expected 1 blank line before closing function brace; 0 found
Loading history...
Coding Style introduced by
Expected 2 blank lines after function; 1 found
Loading history...
381
382
	/**
383
	 * Moves the blog description to above the content columns.
384
	 *
385
	 * @param  string $action
386
	 * @return string $action
387
	 */
388
	public function top_of_blog_action( $action = '' ) {
0 ignored issues
show
Coding Style introduced by
Method name "Frontend::top_of_blog_action" is not in camel caps format
Loading history...
389
		$action = 'lsx_content_wrap_before';
390
		return $action;
391
	}
0 ignored issues
show
Coding Style introduced by
Expected 1 blank line before closing function brace; 0 found
Loading history...
Coding Style introduced by
Expected 2 blank lines after function; 1 found
Loading history...
392
393
	/**
394
	 * Adds a class to the blog description.
395
	 *
396
	 * @param  string $action
397
	 * @return string $action
398
	 */
399
	public function blog_description_class( $class = '' ) {
0 ignored issues
show
Coding Style introduced by
Method name "Frontend::blog_description_class" is not in camel caps format
Loading history...
400
		$class .= ' col-md-12 search-description';
401
		return $class;
402
	}
0 ignored issues
show
Coding Style introduced by
Expected 1 blank line before closing function brace; 0 found
Loading history...
Coding Style introduced by
Expected 2 blank lines after function; 1 found
Loading history...
403
404
	/**
405
	 * Check the $wp_query global to see if there are posts in the current query.
406
	 *
407
	 * @return void
408
	 */
409
	public function check_for_results() {
0 ignored issues
show
Coding Style introduced by
Method name "Frontend::check_for_results" is not in camel caps format
Loading history...
410
		if ( true === $this->search_enabled ) {
0 ignored issues
show
Coding Style introduced by
Expected 0 spaces before closing bracket; 1 found
Loading history...
411
			global $wp_query;
412
			if ( empty( $wp_query->posts ) ) {
0 ignored issues
show
Coding Style introduced by
Expected 0 spaces before closing bracket; 1 found
Loading history...
413
				$this->has_posts = false;
414
				remove_action( 'lsx_content_top', array( $this, 'facet_top_bar' ) );
415
				remove_action( 'lsx_content_bottom', array( $this, 'facet_bottom_bar' ) );
416
				remove_action( 'lsx_content_wrap_before', array( $this, 'search_sidebar' ), 150 );
417
			} else {
418
				$this->has_posts = true;
419
			}
420
		}
421
	}
0 ignored issues
show
Coding Style introduced by
Expected 1 blank line before closing function brace; 0 found
Loading history...
Coding Style introduced by
Expected 2 blank lines after function; 1 found
Loading history...
422
423
	/**
424
	 * Filter the post types.
425
	 */
426
	public function filter_post_types( $query ) {
0 ignored issues
show
Coding Style introduced by
Method name "Frontend::filter_post_types" is not in camel caps format
Loading history...
427
		if ( ! is_admin() && $query->is_main_query() && $query->is_search() ) {
0 ignored issues
show
Coding Style introduced by
Expected 0 spaces before closing bracket; 1 found
Loading history...
428
			if ( ! empty( $this->options ) && ! empty( $this->options['display']['search_enable_core'] ) ) {
0 ignored issues
show
Coding Style introduced by
Expected 0 spaces before closing bracket; 1 found
Loading history...
429
				if ( ! empty( $this->options['general']['search_post_types'] ) && is_array( $this->options['general']['search_post_types'] ) ) {
0 ignored issues
show
Coding Style introduced by
Expected 0 spaces before closing bracket; 1 found
Loading history...
430
					$post_types = array_keys( $this->options['general']['search_post_types'] );
431
					$query->set( 'post_type', $post_types );
432
				}
433
			}
434
		}
435
	}
0 ignored issues
show
Coding Style introduced by
Expected 1 blank line before closing function brace; 0 found
Loading history...
Coding Style introduced by
Expected 2 blank lines after function; 1 found
Loading history...
436
437
	/**
438
	 * Sets post types with active search options.
439
	 */
440
	public function register_post_types( $post_types ) {
0 ignored issues
show
Coding Style introduced by
Method name "Frontend::register_post_types" is not in camel caps format
Loading history...
441
		$post_types = array( 'post', 'project', 'service', 'team', 'testimonial', 'video', 'product' );
442
		return $post_types;
443
	}
0 ignored issues
show
Coding Style introduced by
Expected 1 blank line before closing function brace; 0 found
Loading history...
Coding Style introduced by
Expected 2 blank lines after function; 1 found
Loading history...
444
445
	/**
446
	 * Sets taxonomies with active search options.
447
	 */
448
	public function register_taxonomies( $taxonomies ) {
0 ignored issues
show
Coding Style introduced by
Method name "Frontend::register_taxonomies" is not in camel caps format
Loading history...
449
		$taxonomies = array( 'category', 'post_tag', 'project-group', 'service-group', 'team_role', 'video-category', 'product_cat', 'product_tag' );
450
		return $taxonomies;
451
	}
0 ignored issues
show
Coding Style introduced by
Expected 1 blank line before closing function brace; 0 found
Loading history...
Coding Style introduced by
Expected 2 blank lines after function; 1 found
Loading history...
452
453
	/**
454
	 * Sets post types with active search options.
455
	 */
456
	public function register_post_type_tabs( $post_types_plural ) {
0 ignored issues
show
Coding Style introduced by
Method name "Frontend::register_post_type_tabs" is not in camel caps format
Loading history...
457
		$post_types_plural = array(
458
			'post' => 'posts',
0 ignored issues
show
introduced by
Array double arrow not aligned correctly; expected 8 space(s) between "'post'" and double arrow, but found 1.
Loading history...
459
			'project' => 'projects',
0 ignored issues
show
introduced by
Array double arrow not aligned correctly; expected 5 space(s) between "'project'" and double arrow, but found 1.
Loading history...
460
			'service' => 'services',
0 ignored issues
show
introduced by
Array double arrow not aligned correctly; expected 5 space(s) between "'service'" and double arrow, but found 1.
Loading history...
461
			'team' => 'team',
0 ignored issues
show
introduced by
Array double arrow not aligned correctly; expected 8 space(s) between "'team'" and double arrow, but found 1.
Loading history...
462
			'testimonial' => 'testimonials',
463
			'video' => 'videos',
0 ignored issues
show
introduced by
Array double arrow not aligned correctly; expected 7 space(s) between "'video'" and double arrow, but found 1.
Loading history...
464
			'product' => 'products', // WooCommerce
0 ignored issues
show
introduced by
Array double arrow not aligned correctly; expected 5 space(s) between "'product'" and double arrow, but found 1.
Loading history...
465
		);
466
		return $post_types_plural;
467
	}
0 ignored issues
show
Coding Style introduced by
Expected 1 blank line before closing function brace; 0 found
Loading history...
Coding Style introduced by
Expected 2 blank lines after function; 1 found
Loading history...
468
469
	/**
470
	 * Enqueue styles and scripts.
471
	 */
472
	public function assets() {
473
		add_filter( 'lsx_defer_parsing_of_js', array( $this, 'skip_js_defer' ), 10, 4 );
474
		wp_enqueue_script( 'touchSwipe', LSX_SEARCH_URL . 'assets/js/vendor/jquery.touchSwipe.min.js', array( 'jquery' ), LSX_SEARCH_VER, true );
475
		wp_enqueue_script( 'slideandswipe', LSX_SEARCH_URL . 'assets/js/vendor/jquery.slideandswipe.min.js', array( 'jquery', 'touchSwipe' ), LSX_SEARCH_VER, true );
476
		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 );
477
478
		$params = apply_filters( 'lsx_search_js_params', array(
0 ignored issues
show
Coding Style introduced by
The opening parenthesis of a multi-line function call should be the last content on the line.
Loading history...
Coding Style introduced by
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...
479
			'ajax_url' => admin_url( 'admin-ajax.php' ),
480
		));
0 ignored issues
show
Coding Style introduced by
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...
481
482
		wp_localize_script( 'lsx-search', 'lsx_customizer_params', $params );
483
484
		wp_enqueue_style( 'lsx-search', LSX_SEARCH_URL . 'assets/css/lsx-search.css', array(), LSX_SEARCH_VER );
485
		wp_style_add_data( 'lsx-search', 'rtl', 'replace' );
486
487
		if ( true === $this->new_options ) {
0 ignored issues
show
Coding Style introduced by
Expected 0 spaces before closing bracket; 1 found
Loading history...
488
			wp_deregister_style( 'lsx_to_search' );
489
			wp_deregister_script( 'lsx_to_search' );
490
		}
491
	}
0 ignored issues
show
Coding Style introduced by
Expected 1 blank line before closing function brace; 0 found
Loading history...
Coding Style introduced by
Expected 2 blank lines after function; 1 found
Loading history...
492
493
	/**
494
	 * Adds the to-search.min.js and the to-search.js
495
	 *
496
	 * @param boolean $should_skip
497
	 * @param string  $tag
498
	 * @param string  $handle
499
	 * @param string  $href
500
	 * @return boolean
501
	 */
502
	public function skip_js_defer( $should_skip, $tag, $handle, $href ) {
0 ignored issues
show
Coding Style introduced by
Method name "Frontend::skip_js_defer" is not in camel caps format
Loading history...
503
		if ( ! is_admin() && ( false !== stripos( $href, 'lsx-search.min.js' ) || false !== stripos( $href, 'lsx-search.js' ) ) ) {
0 ignored issues
show
Coding Style introduced by
Expected 0 spaces before closing bracket; 1 found
Loading history...
504
			$should_skip = true;
505
		}
506
		return $should_skip;
507
	}
0 ignored issues
show
Coding Style introduced by
Expected 1 blank line before closing function brace; 0 found
Loading history...
Coding Style introduced by
Expected 2 blank lines after function; 1 found
Loading history...
508
509
	/**
510
	 * Redirect wordpress to the search template located in the plugin
0 ignored issues
show
introduced by
Please spell "WordPress" correctly. Found 1 misspelling(s): wordpress
Loading history...
511
	 *
512
	 * @param	$template
0 ignored issues
show
introduced by
Spaces must be used for mid-line alignment; tabs are not allowed
Loading history...
513
	 * @return	$template
0 ignored issues
show
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...
introduced by
Spaces must be used for mid-line alignment; tabs are not allowed
Loading history...
514
	 */
515
	public function search_template_include( $template ) {
0 ignored issues
show
Coding Style introduced by
Method name "Frontend::search_template_include" is not in camel caps format
Loading history...
516
		if ( is_main_query() && is_search() ) {
0 ignored issues
show
Coding Style introduced by
Expected 0 spaces before closing bracket; 1 found
Loading history...
517
			if ( file_exists( LSX_SEARCH_PATH . 'templates/search.php' ) ) {
0 ignored issues
show
Coding Style introduced by
Expected 0 spaces before closing bracket; 1 found
Loading history...
518
				$template = LSX_SEARCH_PATH . 'templates/search.php';
519
			}
520
		}
521
522
		return $template;
523
	}
0 ignored issues
show
Coding Style introduced by
Expected 1 blank line before closing function brace; 0 found
Loading history...
Coding Style introduced by
Expected 2 blank lines after function; 1 found
Loading history...
524
525
	/**
526
	 * Ignore sticky posts on Blog search.
527
	 *
528
	 * @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...
529
	 * @return void
530
	 */
531
	public function ignore_sticky_search( $query ) {
0 ignored issues
show
Coding Style introduced by
Method name "Frontend::ignore_sticky_search" is not in camel caps format
Loading history...
532
		if ( $query->is_main_query() && is_home() ) {
0 ignored issues
show
Coding Style introduced by
Expected 0 spaces before closing bracket; 1 found
Loading history...
533
			$query->set( 'ignore_sticky_posts', true );
534
		}
535
	}
0 ignored issues
show
Coding Style introduced by
Expected 1 blank line before closing function brace; 0 found
Loading history...
Coding Style introduced by
Expected 2 blank lines after function; 1 found
Loading history...
536
537
	/**
538
	 * Rewrite the search URL
539
	 */
540
	public function pretty_search_redirect() {
0 ignored issues
show
Coding Style introduced by
Method name "Frontend::pretty_search_redirect" is not in camel caps format
Loading history...
541
		global $wp_rewrite,$wp_query;
542
543
		if ( ! isset( $wp_rewrite ) || ! is_object( $wp_rewrite ) || ! $wp_rewrite->using_permalinks() ) {
0 ignored issues
show
Coding Style introduced by
Expected 0 spaces before closing bracket; 1 found
Loading history...
544
			return;
545
		}
546
547
		$search_base = $wp_rewrite->search_base;
548
549
		if ( is_search() && ! is_admin() && strpos( $_SERVER['REQUEST_URI'], "/{$search_base}/" ) === false ) {
0 ignored issues
show
introduced by
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...
introduced by
$_SERVER data not unslashed before sanitization. Use wp_unslash() or similar
Loading history...
introduced by
Detected usage of a non-sanitized input variable: $_SERVER['REQUEST_URI']
Loading history...
Coding Style introduced by
Expected 0 spaces before closing bracket; 1 found
Loading history...
550
			$search_query = get_query_var( 's' );
551
			if ( empty( $search_query ) && isset( $_GET['s'] ) ) {
0 ignored issues
show
introduced by
Processing form data without nonce verification.
Loading history...
Coding Style introduced by
Expected 0 spaces before closing bracket; 1 found
Loading history...
552
				$search_query = $_GET['s'];
0 ignored issues
show
introduced by
Processing form data without nonce verification.
Loading history...
introduced by
$_GET data not unslashed before sanitization. Use wp_unslash() or similar
Loading history...
introduced by
Detected usage of a non-sanitized input variable: $_GET['s']
Loading history...
553
			}
554
			$engine = '';
555
556
			// If the search was triggered by a supplemental engine.
557
			if ( isset( $_GET['engine'] ) && 'default' !== $_GET['engine'] ) {
0 ignored issues
show
introduced by
Processing form data without nonce verification.
Loading history...
Coding Style introduced by
Expected 0 spaces before closing bracket; 1 found
Loading history...
558
				$engine = sanitize_text_field( wp_unslash( $_GET['engine'] ) );
0 ignored issues
show
Bug introduced by
It seems like wp_unslash($_GET['engine']) can also be of type string[]; 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

558
				$engine = sanitize_text_field( /** @scrutinizer ignore-type */ wp_unslash( $_GET['engine'] ) );
Loading history...
introduced by
Processing form data without nonce verification.
Loading history...
559
				$index  = array_search( $engine, $this->post_type_slugs, true );
560
				if ( false !== $index ) {
0 ignored issues
show
Coding Style introduced by
Expected 0 spaces before closing bracket; 1 found
Loading history...
561
					$engine = $index;
562
				}
563
				$engine = $engine . '/';
564
			}
565
566
			$get_array = $_GET;
0 ignored issues
show
introduced by
Processing form data without nonce verification.
Loading history...
567
568
			if ( is_array( $get_array ) && ! empty( $get_array ) ) {
0 ignored issues
show
Coding Style introduced by
Expected 0 spaces before closing bracket; 1 found
Loading history...
569
				$vars_to_maintain = array();
570
571
				foreach ( $get_array as $ga_key => $ga_value ) {
0 ignored issues
show
Coding Style introduced by
Expected 0 spaces before closing bracket; 1 found
Loading history...
572
					if ( false !== strpos( $ga_key, 'fwp_' ) ) {
0 ignored issues
show
Coding Style introduced by
Expected 0 spaces before closing bracket; 1 found
Loading history...
573
						$vars_to_maintain[] = $ga_key . '=' . $ga_value;
574
					}
575
				}
576
			}
577
578
			$redirect_url = home_url( "/{$search_base}/" . $engine . urlencode( $search_query ) );
0 ignored issues
show
introduced by
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...
579
580
			if ( ! empty( $vars_to_maintain ) ) {
0 ignored issues
show
Coding Style introduced by
Expected 0 spaces before closing bracket; 1 found
Loading history...
581
				$redirect_url .= '?' . implode( '&', $vars_to_maintain );
582
			}
583
			wp_redirect( $redirect_url );
0 ignored issues
show
introduced by
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...
584
			exit();
0 ignored issues
show
Best Practice introduced by
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...
585
		}
586
	}
0 ignored issues
show
Coding Style introduced by
Expected 1 blank line before closing function brace; 0 found
Loading history...
Coding Style introduced by
Expected 2 blank lines after function; 1 found
Loading history...
587
588
	/**
589
	 * Parse the Query and trigger a search
590
	 */
591
	public function pretty_search_parse_query( $query ) {
0 ignored issues
show
Coding Style introduced by
Method name "Frontend::pretty_search_parse_query" is not in camel caps format
Loading history...
592
		$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...
593
			'post' => 'posts',
0 ignored issues
show
introduced by
Array double arrow not aligned correctly; expected 8 space(s) between "'post'" and double arrow, but found 1.
Loading history...
594
			'project' => 'projects',
0 ignored issues
show
introduced by
Array double arrow not aligned correctly; expected 5 space(s) between "'project'" and double arrow, but found 1.
Loading history...
595
			'service' => 'services',
0 ignored issues
show
introduced by
Array double arrow not aligned correctly; expected 5 space(s) between "'service'" and double arrow, but found 1.
Loading history...
596
			'team' => 'team',
0 ignored issues
show
introduced by
Array double arrow not aligned correctly; expected 8 space(s) between "'team'" and double arrow, but found 1.
Loading history...
597
			'testimonial' => 'testimonials',
598
			'video' => 'videos',
0 ignored issues
show
introduced by
Array double arrow not aligned correctly; expected 7 space(s) between "'video'" and double arrow, but found 1.
Loading history...
599
			'product' => 'products', // WooCommerce
0 ignored issues
show
introduced by
Array double arrow not aligned correctly; expected 5 space(s) between "'product'" and double arrow, but found 1.
Loading history...
600
		);
601
		if ( $query->is_search() && ! is_admin() && $query->is_main_query() ) {
0 ignored issues
show
Coding Style introduced by
Expected 0 spaces before closing bracket; 1 found
Loading history...
602
			$search_query = $query->get( 's' );
603
			$keyword_test = explode( '/', $search_query );
604
605
			$index = array_search( $keyword_test[0], $this->post_type_slugs, true );
606
			if ( false !== $index ) {
0 ignored issues
show
Coding Style introduced by
Expected 0 spaces before closing bracket; 1 found
Loading history...
607
				$engine = $this->post_type_slugs[ $index ];
608
609
				$query->set( 'post_type', $engine );
610
				$query->set( 'engine', $engine );
611
612
				if ( count( $keyword_test ) > 1 ) {
0 ignored issues
show
Coding Style introduced by
Expected 0 spaces before closing bracket; 1 found
Loading history...
613
					$query->set( 's', $keyword_test[1] );
614
				} elseif ( post_type_exists( $engine ) ) {
0 ignored issues
show
Coding Style introduced by
Expected 0 spaces before closing bracket; 1 found
Loading history...
615
					$query->set( 's', '' );
616
				}
617
			} else {
618
				if ( isset( $this->options['general']['search_post_types'] ) && is_array( $this->options['general']['search_post_types'] ) ) {
0 ignored issues
show
Coding Style introduced by
Expected 0 spaces before closing bracket; 1 found
Loading history...
619
					$post_types = array_keys( $this->options['general']['search_post_types'] );
620
					$query->set( 'post_type', $post_types );
621
				}
622
			}
623
		}
624
		return $query;
625
	}
0 ignored issues
show
Coding Style introduced by
Expected 1 blank line before closing function brace; 0 found
Loading history...
Coding Style introduced by
Expected 2 blank lines after function; 1 found
Loading history...
626
627
	/**
628
	 * Change the search slug to /search/ for the JSON+LD output in Yoast SEO
629
	 *
630
	 * @return url
0 ignored issues
show
Bug introduced by
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...
631
	 */
632
	public function change_json_ld_search_url() {
0 ignored issues
show
Coding Style introduced by
Method name "Frontend::change_json_ld_search_url" is not in camel caps format
Loading history...
633
		return trailingslashit( home_url() ) . 'search/{search_term_string}';
634
	}
0 ignored issues
show
Coding Style introduced by
Expected 1 blank line before closing function brace; 0 found
Loading history...
Coding Style introduced by
Expected 2 blank lines after function; 1 found
Loading history...
635
636
	/**
637
	 * A filter to set the layout to 2 column.
638
	 */
639
	public function lsx_layout( $layout ) {
0 ignored issues
show
Coding Style introduced by
Method name "Frontend::lsx_layout" is not in camel caps format
Loading history...
640
		if ( ! empty( $this->options['display'][ $this->search_prefix . '_layout' ] ) ) {
0 ignored issues
show
Coding Style introduced by
Expected 0 spaces before closing bracket; 1 found
Loading history...
641
			if ( false === $this->has_posts ) {
0 ignored issues
show
Coding Style introduced by
Expected 0 spaces before closing bracket; 1 found
Loading history...
642
				$layout = '1c';
643
			} else {
644
				$layout = $this->options['display'][ $this->search_prefix . '_layout' ];
645
			}
646
		}
647
		return $layout;
648
	}
0 ignored issues
show
Coding Style introduced by
Expected 1 blank line before closing function brace; 0 found
Loading history...
Coding Style introduced by
Expected 2 blank lines after function; 1 found
Loading history...
649
650
	/**
651
	 * Outputs the Search Title Facet
652
	 */
653
	public function search_sidebar_top() {
0 ignored issues
show
Coding Style introduced by
Method name "Frontend::search_sidebar_top" is not in camel caps format
Loading history...
654
		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
Coding Style introduced by
Expected 0 spaces before closing bracket; 1 found
Loading history...
Coding Style introduced by
Blank line found at start of control structure
Loading history...
655
656
			if ( ! is_search() ) {
0 ignored issues
show
Coding Style introduced by
Expected 0 spaces before closing bracket; 1 found
Loading history...
Coding Style introduced by
Blank line found at start of control structure
Loading history...
657
658
				foreach ( $this->options['display'][ $this->search_prefix . '_facets' ] as $facet => $facet_useless ) {
0 ignored issues
show
Coding Style introduced by
Expected 0 spaces before closing bracket; 1 found
Loading history...
Coding Style introduced by
Blank line found at start of control structure
Loading history...
659
660
					if ( isset( $this->facet_data[ $facet ] ) && 'search' === $this->facet_data[ $facet ]['type'] ) {
0 ignored issues
show
Coding Style introduced by
Expected 0 spaces before closing bracket; 1 found
Loading history...
661
						echo wp_kses_post( '<div class="row">' );
662
							$this->display_facet_default( $facet );
663
						echo wp_kses_post( '</div>' );
664
						unset( $this->options['display'][ $this->search_prefix . '_facets' ][ $facet ] );
665
					}
666
				}
667
			} else {
668
				echo wp_kses_post( '<div class="row">' );
669
					$this->display_facet_search();
670
				echo wp_kses_post( '</div>' );
671
			}
672
		}
673
	}
0 ignored issues
show
Coding Style introduced by
Expected 1 blank line before closing function brace; 0 found
Loading history...
Coding Style introduced by
Expected 2 blank lines after function; 1 found
Loading history...
674
675
	/**
676
	 * Overrides the search facet HTML
677
	 * @param $output
678
	 * @param $params
679
	 *
680
	 * @return string
681
	 */
682
	public function search_facet_html( $output, $params ) {
0 ignored issues
show
Coding Style introduced by
Method name "Frontend::search_facet_html" is not in camel caps format
Loading history...
683
		if ( 'search' == $params['facet']['type'] ) {
0 ignored issues
show
introduced by
Found: ==. Use strict comparisons (=== or !==).
Loading history...
Coding Style introduced by
Expected 0 spaces before closing bracket; 1 found
Loading history...
Coding Style introduced by
Blank line found at start of control structure
Loading history...
684
685
			$value = (array) $params['selected_values'];
0 ignored issues
show
Coding Style introduced by
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
			$value = empty( $value ) ? '' : stripslashes( $value[0] );
0 ignored issues
show
Coding Style introduced by
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...
687
			$placeholder = isset( $params['facet']['placeholder'] ) ? $params['facet']['placeholder'] : __( 'Search...', 'lsx-search' );
688
			$placeholder = facetwp_i18n( $placeholder );
0 ignored issues
show
Bug introduced by
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

688
			$placeholder = /** @scrutinizer ignore-call */ facetwp_i18n( $placeholder );
Loading history...
689
690
			ob_start();
691
			?>
692
			<div class="col-xs-12 facetwp-item facetwp-form">
693
				<div class="search-form lsx-search-form 2">
694
					<div class="input-group facetwp-search-wrap">
695
						<div class="field">
696
							<input class="facetwp-search search-field form-control" type="text" placeholder="<?php echo esc_attr( $placeholder ); ?>" autocomplete="off" value="<?php echo esc_attr( $value ); ?>">
697
						</div>
698
699
						<div class="field submit-button">
700
							<button class="search-submit btn facetwp-btn" type="submit"><?php esc_html_e( 'Search', 'lsx-search' ); ?></button>
701
						</div>
702
					</div>
703
				</div>
704
			</div>
705
			<?php
706
			$output = ob_get_clean();
707
		}
708
		return $output;
709
	}
0 ignored issues
show
Coding Style introduced by
Expected 1 blank line before closing function brace; 0 found
Loading history...
Coding Style introduced by
Expected 2 blank lines after function; 1 found
Loading history...
710
711
	/**
712
	 * Change the primary and secondary column classes.
713
	 */
714
	public function lsx_layout_selector( $return_class, $class, $layout, $size ) {
0 ignored issues
show
Coding Style introduced by
Method name "Frontend::lsx_layout_selector" is not in camel caps format
Loading history...
715
		if ( ! empty( $this->options['display'][ $this->search_prefix . '_layout' ] ) ) {
0 ignored issues
show
Coding Style introduced by
Expected 0 spaces before closing bracket; 1 found
Loading history...
Coding Style introduced by
Blank line found at start of control structure
Loading history...
716
717
			if ( '2cl' === $layout || '2cr' === $layout ) {
0 ignored issues
show
Coding Style introduced by
Expected 0 spaces before closing bracket; 1 found
Loading history...
718
				$main_class    = 'col-sm-8 col-md-9';
719
				$sidebar_class = 'col-sm-4 col-md-3';
720
721
				if ( '2cl' === $layout ) {
0 ignored issues
show
Coding Style introduced by
Expected 0 spaces before closing bracket; 1 found
Loading history...
722
					$main_class    .= ' col-sm-pull-4 col-md-pull-3 search-sidebar-left';
723
					$sidebar_class .= ' col-sm-push-8 col-md-push-9';
724
				}
725
726
				if ( 'main' === $class ) {
0 ignored issues
show
Coding Style introduced by
Expected 0 spaces before closing bracket; 1 found
Loading history...
727
					return $main_class;
728
				}
729
730
				if ( 'sidebar' === $class ) {
0 ignored issues
show
Coding Style introduced by
Expected 0 spaces before closing bracket; 1 found
Loading history...
731
					return $sidebar_class;
732
				}
733
			}
734
		}
735
736
		return $return_class;
737
	}
0 ignored issues
show
Coding Style introduced by
Expected 1 blank line before closing function brace; 0 found
Loading history...
Coding Style introduced by
Expected 2 blank lines after function; 1 found
Loading history...
738
739
	/**
740
	 * Displays the Alphabet sorter above the facets.
741
	 *
742
	 * @return void
743
	 */
744
	public function display_alphabet_facet() {
0 ignored issues
show
Coding Style introduced by
Method name "Frontend::display_alphabet_facet" is not in camel caps format
Loading history...
745
		if ( isset( $this->options['display'][ $this->search_prefix . '_az_pagination' ] ) ) {
0 ignored issues
show
Coding Style introduced by
Expected 0 spaces before closing bracket; 1 found
Loading history...
746
			$az_pagination = $this->options['display'][ $this->search_prefix . '_az_pagination' ];
747
		} else {
748
			$az_pagination = false;
749
		}
750
		$az_pagination = apply_filters( 'lsx_search_top_az_pagination', $az_pagination );
751
		if ( false !== $az_pagination && '' !== $az_pagination ) {
0 ignored issues
show
Coding Style introduced by
Expected 0 spaces before closing bracket; 1 found
Loading history...
752
			echo do_shortcode( '[facetwp facet="' . $az_pagination . '"]' );
753
		}
754
	}
0 ignored issues
show
Coding Style introduced by
Expected 1 blank line before closing function brace; 0 found
Loading history...
Coding Style introduced by
Expected 2 blank lines after function; 1 found
Loading history...
755
756
	/**
757
	 * Outputs top.
758
	 */
759
	public function facet_top_bar() {
0 ignored issues
show
Coding Style introduced by
Method name "Frontend::facet_top_bar" is not in camel caps format
Loading history...
760
		if ( true === apply_filters( 'lsx_search_hide_top_bar', false ) ) {
0 ignored issues
show
Coding Style introduced by
Expected 0 spaces before closing bracket; 1 found
Loading history...
761
			return;
762
		}
763
764
		$show_pagination     = true;
765
		$pagination_visible  = false;
766
		$show_per_page_combo = empty( $this->options['display'][ $this->search_prefix . '_disable_per_page' ] );
767
		$show_sort_combo     = empty( $this->options['display'][ $this->search_prefix . '_disable_sorting' ] );
768
769
		$show_pagination     = apply_filters( 'lsx_search_top_show_pagination', $show_pagination );
770
		$pagination_visible  = apply_filters( 'lsx_search_top_pagination_visible', $pagination_visible );
771
		$show_per_page_combo = apply_filters( 'lsx_search_top_show_per_page_combo', $show_per_page_combo );
772
		$show_sort_combo     = apply_filters( 'lsx_search_top_show_sort_combo', $show_sort_combo );
773
		$facet_row_classes   = apply_filters( 'lsx_search_top_facetwp_row_classes', '' );
774
		?>
775
		<div id="facetwp-top">
776
			<?php if ( $show_sort_combo || ( $show_pagination && $show_per_page_combo ) ) { ?>
0 ignored issues
show
Coding Style introduced by
Expected 0 spaces before closing bracket; 1 found
Loading history...
777
				<div class="row facetwp-top-row-1 hidden-xs <?php echo esc_attr( $facet_row_classes ); ?>">
778
					<div class="col-xs-12">
779
780
						<?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
Coding Style introduced by
Expected 0 spaces before closing bracket; 1 found
Loading history...
781
							<div class="row">
782
								<div class="col-md-12 facetwp-item facetwp-results">
783
									<h3 class="lsx-search-title lsx-search-title-results"><?php esc_html_e( 'Results', 'lsx-search' ); ?> <?php echo '(' . do_shortcode( '[facetwp counts="true"]' ) . ')&nbsp;'; ?>
784
									<?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
Coding Style introduced by
Expected 0 spaces before closing bracket; 1 found
Loading history...
785
										<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>
786
									<?php } ?>
787
									</h3>
788
								</div>
789
							</div>
790
						<?php } ?>
791
792
						<?php do_action( 'lsx_search_facetwp_top_row' ); ?>
793
794
						<?php $this->display_alphabet_facet(); ?>
795
796
						<?php if ( $show_sort_combo ) { ?>
0 ignored issues
show
Coding Style introduced by
Expected 0 spaces before closing bracket; 1 found
Loading history...
797
							<?php echo do_shortcode( '[facetwp sort="true"]' ); ?>
798
						<?php } ?>
799
800
					</div>
801
				</div>
802
			<?php } ?>
803
		</div>
804
		<?php
805
	}
0 ignored issues
show
Coding Style introduced by
Expected 1 blank line before closing function brace; 0 found
Loading history...
Coding Style introduced by
Expected 2 blank lines after function; 1 found
Loading history...
806
807
	/**
808
	 * Outputs bottom.
809
	 */
810
	public function facet_bottom_bar() {
0 ignored issues
show
Coding Style introduced by
Method name "Frontend::facet_bottom_bar" is not in camel caps format
Loading history...
811
		if ( true === apply_filters( 'lsx_search_hide_bottom_bar', false ) ) {
0 ignored issues
show
Coding Style introduced by
Expected 0 spaces before closing bracket; 1 found
Loading history...
812
			return;
813
		}
814
		$show_pagination    = true;
815
		$pagination_visible = false;
816
		if ( isset( $this->options['display'][ $this->search_prefix . '_az_pagination' ] ) ) {
0 ignored issues
show
Coding Style introduced by
Expected 0 spaces before closing bracket; 1 found
Loading history...
817
			$az_pagination = $this->options['display'][ $this->search_prefix . '_az_pagination' ];
818
		} else {
819
			$az_pagination = false;
820
		}
821
822
		$show_per_page_combo = empty( $this->options['display'][ $this->search_prefix . '_disable_per_page' ] );
823
		$show_sort_combo     = empty( $this->options['display'][ $this->search_prefix . '_search_disable_sorting' ] );
824
825
		$show_pagination     = apply_filters( 'lsx_search_bottom_show_pagination', $show_pagination );
826
		$pagination_visible  = apply_filters( 'lsx_search_bottom_pagination_visible', $pagination_visible );
827
		$show_per_page_combo = apply_filters( 'lsx_search_bottom_show_per_page_combo', $show_per_page_combo );
828
		$show_sort_combo     = apply_filters( 'lsx_search_bottom_show_sort_combo', $show_sort_combo );
829
830
		if ( $show_pagination || ! empty( $az_pagination ) ) { ?>
0 ignored issues
show
Coding Style introduced by
Expected 0 spaces before closing bracket; 1 found
Loading history...
Coding Style introduced by
Closing PHP tag must be on a line by itself
Loading history...
831
			<div id="facetwp-bottom">
832
				<div class="row facetwp-bottom-row-1">
833
					<div class="col-xs-12">
834
						<?php do_action( 'lsx_search_facetwp_bottom_row' ); ?>
835
836
						<?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...
837
							<?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...
838
						<?php //} ?>
839
840
						<?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...
841
							<?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...
842
						<?php //} ?>
843
844
						<?php
845
						if ( $show_pagination ) {
0 ignored issues
show
Coding Style introduced by
Expected 0 spaces before closing bracket; 1 found
Loading history...
846
							$output_pagination = do_shortcode( '[facetwp pager="true"]' );
847
							if ( ! empty( $this->options['display'][ $this->search_prefix . '_facets' ] ) && is_array( $this->options['display'][ $this->search_prefix . '_facets' ] ) ) {
0 ignored issues
show
Coding Style introduced by
Expected 0 spaces before closing bracket; 1 found
Loading history...
848
								foreach ( $this->options['display'][ $this->search_prefix . '_facets' ] as $facet => $facet_useless ) {
0 ignored issues
show
Coding Style introduced by
Expected 0 spaces before closing bracket; 1 found
Loading history...
849
									if ( isset( $this->facet_data[ $facet ] ) && in_array( $this->facet_data[ $facet ]['type'], array( 'pager' ) ) ) {
0 ignored issues
show
introduced by
Not using strict comparison for in_array; supply true for third argument.
Loading history...
Coding Style introduced by
Expected 0 spaces before closing bracket; 1 found
Loading history...
850
										$output_pagination = do_shortcode( '[facetwp facet="pager_"]' );
851
									}
852
								}
853
							}
854
							echo wp_kses_post( $output_pagination );
855
						?>
856
						<?php } ?>
857
					</div>
858
				</div>
859
			</div>
860
		<?php }
0 ignored issues
show
Coding Style introduced by
Opening PHP tag must be on a line by itself
Loading history...
861
	}
0 ignored issues
show
Coding Style introduced by
Expected 1 blank line before closing function brace; 0 found
Loading history...
Coding Style introduced by
Expected 2 blank lines after function; 1 found
Loading history...
862
863
	/**
864
	 * Adds in the closing facetwp div
865
	 *
866
	 * @return void
867
	 */
868
	public function facetwp_tempate_open() {
0 ignored issues
show
Coding Style introduced by
Method name "Frontend::facetwp_tempate_open" is not in camel caps format
Loading history...
869
		?>
870
		<div class="facetwp-template">
871
		<?php
872
	}
0 ignored issues
show
Coding Style introduced by
Expected 1 blank line before closing function brace; 0 found
Loading history...
Coding Style introduced by
Expected 2 blank lines after function; 1 found
Loading history...
873
874
	/**
875
	 * Adds in the closing facetwp div
876
	 *
877
	 * @return void
878
	 */
879
	public function facetwp_tempate_close() {
0 ignored issues
show
Coding Style introduced by
Method name "Frontend::facetwp_tempate_close" is not in camel caps format
Loading history...
880
		?>
881
		</div>
882
		<?php
883
	}
0 ignored issues
show
Coding Style introduced by
Expected 1 blank line before closing function brace; 0 found
Loading history...
Coding Style introduced by
Expected 2 blank lines after function; 1 found
Loading history...
884
885
	/**
886
	 * Disables default sidebar.
887
	 */
888
	public function lsx_sidebar_enable( $sidebar_enabled ) {
0 ignored issues
show
Coding Style introduced by
Method name "Frontend::lsx_sidebar_enable" is not in camel caps format
Loading history...
889
		$sidebar_enabled = false;
890
		return $sidebar_enabled;
891
	}
0 ignored issues
show
Coding Style introduced by
Expected 1 blank line before closing function brace; 0 found
Loading history...
Coding Style introduced by
Expected 2 blank lines after function; 1 found
Loading history...
892
893
	/**
894
	 * Outputs custom sidebar.
895
	 */
896
	public function search_sidebar() {
0 ignored issues
show
Coding Style introduced by
Method name "Frontend::search_sidebar" is not in camel caps format
Loading history...
Coding Style introduced by
Expected 0 blank lines after opening function brace; 1 found
Loading history...
897
898
		$this->options = apply_filters( 'lsx_search_sidebar_options', $this->options );
899
		?>
900
			<?php do_action( 'lsx_search_sidebar_before' ); ?>
901
902
			<div id="secondary" class="facetwp-sidebar widget-area <?php echo esc_attr( lsx_sidebar_class() ); ?>" role="complementary">
903
904
				<?php do_action( 'lsx_search_sidebar_top' ); ?>
905
906
				<?php if ( ! empty( $this->options['display'][ $this->search_prefix . '_facets' ] ) && is_array( $this->options['display'][ $this->search_prefix . '_facets' ] ) ) { ?>
0 ignored issues
show
Coding Style introduced by
Expected 0 spaces before closing bracket; 1 found
Loading history...
907
					<div class="row facetwp-row lsx-search-filer-area">
908
						<h3 class="facetwp-filter-title"><?php echo esc_html_e( 'Refine by', 'lsx-search' ); ?></h3>
909
						<div class="col-xs-12 facetwp-item facetwp-filters-button hidden-sm hidden-md hidden-lg">
910
							<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>
911
						</div>
912
913
						<div class="ssm-overlay ssm-toggle-nav" rel="lsx-search-filters"></div>
914
915
						<div class="col-xs-12 facetwp-item-wrap facetwp-filters-wrap" id="lsx-search-filters">
916
							<div class="row hidden-sm hidden-md hidden-lg ssm-row-margin-bottom">
917
								<div class="col-xs-12 facetwp-item facetwp-filters-button">
918
									<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>
919
								</div>
920
							</div>
921
922
							<div class="row">
923
								<?php
924
								// Slider.
925
								foreach ( $this->options['display'][ $this->search_prefix . '_facets' ] as $facet => $facet_useless ) {
0 ignored issues
show
Coding Style introduced by
Expected 0 spaces before closing bracket; 1 found
Loading history...
926
									if ( isset( $this->facet_data[ $facet ] ) && ! in_array( $this->facet_data[ $facet ]['type'], array( 'alpha', 'search', 'pager' ) ) ) {
0 ignored issues
show
introduced by
Not using strict comparison for in_array; supply true for third argument.
Loading history...
Coding Style introduced by
Expected 0 spaces before closing bracket; 1 found
Loading history...
927
										$this->display_facet_default( $facet );
928
									}
929
								}
930
								?>
931
							</div>
932
933
							<div class="row hidden-sm hidden-md hidden-lg ssm-row-margin-top">
934
								<div class="col-xs-12 facetwp-item facetwp-filters-button">
935
									<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>
936
								</div>
937
							</div>
938
						</div>
939
					</div>
940
				<?php } ?>
941
942
				<?php do_action( 'lsx_search_sidebar_bottom' ); ?>
943
			</div>
944
945
			<?php do_action( 'lsx_search_sidebar_after' ); ?>
946
		<?php
947
	}
0 ignored issues
show
Coding Style introduced by
Expected 1 blank line before closing function brace; 0 found
Loading history...
Coding Style introduced by
Expected 2 blank lines after function; 1 found
Loading history...
948
949
	/**
950
	 * Check if the pager facet is on
951
	 *
952
	 * @return void
953
	 */
954
	public function pager_facet_enabled() {
0 ignored issues
show
Coding Style introduced by
Method name "Frontend::pager_facet_enabled" is not in camel caps format
Loading history...
Coding Style introduced by
Expected 0 blank lines after opening function brace; 1 found
Loading history...
955
956
		$pager_facet_off = false;
957
958
		if ( ! empty( $this->options['display'][ $this->search_prefix . '_facets' ] ) && is_array( $this->options['display'][ $this->search_prefix . '_facets' ] ) ) {
0 ignored issues
show
Coding Style introduced by
Expected 0 spaces before closing bracket; 1 found
Loading history...
959
			foreach ( $this->options['display'][ $this->search_prefix . '_facets' ] as $facet => $facet_useless ) {
0 ignored issues
show
Coding Style introduced by
Expected 0 spaces before closing bracket; 1 found
Loading history...
960
				if ( isset( $this->facet_data[ $facet ] ) && ! in_array( $this->facet_data[ $facet ]['type'], array( 'pager' ) ) ) {
0 ignored issues
show
introduced by
Not using strict comparison for in_array; supply true for third argument.
Loading history...
Coding Style introduced by
Expected 0 spaces before closing bracket; 1 found
Loading history...
961
					$pager_facet_off = true;
962
				}
963
			}
964
		}
965
966
		return $pager_facet_off;
967
	}
0 ignored issues
show
Coding Style introduced by
Expected 1 blank line before closing function brace; 0 found
Loading history...
Coding Style introduced by
Expected 2 blank lines after function; 1 found
Loading history...
968
969
	/**
970
	 * Display WooCommerce archive title.
971
	 */
972
	public function wc_archive_header() {
0 ignored issues
show
Coding Style introduced by
Method name "Frontend::wc_archive_header" is not in camel caps format
Loading history...
973
		$default_size   = 'sm';
0 ignored issues
show
Coding Style introduced by
Equals sign not aligned with surrounding assignments; expected 1 space but found 3 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...
974
		$size           = apply_filters( 'lsx_bootstrap_column_size', $default_size );
0 ignored issues
show
Coding Style introduced by
Equals sign not aligned with surrounding assignments; expected 9 spaces but found 11 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...
975
		?>
976
			<div class="archive-header-wrapper banner-woocommerce col-<?php echo esc_attr( $size ); ?>-12">
977
				<?php lsx_global_header_inner_bottom(); ?>
978
				<header class="archive-header">
979
					<h1 class="archive-title"><?php woocommerce_page_title(); ?></h1>
0 ignored issues
show
Bug introduced by
The function woocommerce_page_title 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

979
					<h1 class="archive-title"><?php /** @scrutinizer ignore-call */ woocommerce_page_title(); ?></h1>
Loading history...
980
				</header>
981
			</div>
982
		<?php
983
	}
0 ignored issues
show
Coding Style introduced by
Expected 1 blank line before closing function brace; 0 found
Loading history...
Coding Style introduced by
Expected 2 blank lines after function; 1 found
Loading history...
984
985
	/**
986
	 * Display facet search.
987
	 */
988
	public function display_facet_search() {
0 ignored issues
show
Coding Style introduced by
Method name "Frontend::display_facet_search" is not in camel caps format
Loading history...
989
		?>
990
		<div class="col-xs-12 facetwp-item facetwp-form">
991
			<form class="search-form lsx-search-form" action="<?php echo esc_attr( home_url() ); ?>" method="get">
992
				<div class="input-group">
993
					<div class="field">
994
						<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
Coding Style introduced by
Inline PHP statement must end with a semicolon
Loading history...
995
					</div>
996
997
					<div class="field submit-button">
998
						<button class="search-submit btn" type="submit"><?php esc_html_e( 'Search', 'lsx-search' ); ?></button>
999
					</div>
1000
				</div>
1001
			</form>
1002
		</div>
1003
		<?php
1004
	}
0 ignored issues
show
Coding Style introduced by
Expected 1 blank line before closing function brace; 0 found
Loading history...
Coding Style introduced by
Expected 2 blank lines after function; 1 found
Loading history...
1005
1006
	/**
1007
	 * Display facet default.
1008
	 */
1009
	public function display_facet_default( $facet ) {
0 ignored issues
show
Coding Style introduced by
Method name "Frontend::display_facet_default" is not in camel caps format
Loading history...
Coding Style introduced by
Expected 0 blank lines after opening function brace; 1 found
Loading history...
1010
1011
		$show_collapse = ! isset( $this->options['display'][$this->search_prefix . '_collapse'] ) || 'on' !== $this->options['display'][$this->search_prefix . '_collapse'];
0 ignored issues
show
introduced by
Array keys must be surrounded by spaces unless they contain a string or an integer.
Loading history...
1012
		$col_class = '';
0 ignored issues
show
Coding Style introduced by
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...
1013
1014
		if ( 'search' === $this->facet_data[ $facet ]['type'] ) : ?>
0 ignored issues
show
Coding Style introduced by
Expected 0 spaces before closing bracket; 1 found
Loading history...
Coding Style introduced by
Closing PHP tag must be on a line by itself
Loading history...
1015
			<?php echo do_shortcode( '[facetwp facet="' . $facet . '"]' ); ?>
1016
		<?php else : ?>
1017
			<div class="col-xs-12 facetwp-item parent-facetwp-facet-<?php echo esc_html( $facet ); ?> <?php echo esc_attr( $col_class ); ?>">
1018
				<?php if ( ! $show_collapse ) { ?>
0 ignored issues
show
Coding Style introduced by
Expected 0 spaces before closing bracket; 1 found
Loading history...
1019
					<div class="facetwp-collapsed">
1020
						<h3 class="lsx-search-title"><?php echo wp_kses_post( $this->facet_data[ $facet ]['label'] ); ?></h3>
1021
						<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>
1022
					</div>
1023
					<div id="collapse-<?php echo esc_html( $facet ); ?>" class="collapse">
1024
						<?php echo do_shortcode( '[facetwp facet="' . $facet . '"]' ); ?>
1025
					</div>
1026
				<?php } else { ?>
1027
					<h3 class="lsx-search-title"><?php echo wp_kses_post( $this->facet_data[ $facet ]['label'] ); ?></h3>
1028
					<?php echo do_shortcode( '[facetwp facet="' . $facet . '"]' ); ?>
1029
				<?php } ?>
1030
			</div>
1031
		<?php
1032
		endif;
1033
	}
0 ignored issues
show
Coding Style introduced by
Expected 1 blank line before closing function brace; 0 found
Loading history...
Coding Style introduced by
Expected 2 blank lines after function; 1 found
Loading history...
1034
1035
	/**
1036
	 * Changes slot column class.
1037
	 */
1038
	public function change_slot_column_class( $class ) {
0 ignored issues
show
Coding Style introduced by
Method name "Frontend::change_slot_column_class" is not in camel caps format
Loading history...
1039
		if ( is_post_type_archive( 'video' ) || is_tax( 'video-category' ) ) {
0 ignored issues
show
Coding Style introduced by
Expected 0 spaces before closing bracket; 1 found
Loading history...
1040
			$column_class = 'col-xs-12 col-sm-4';
1041
		}
1042
1043
		return $column_class;
1044
	}
0 ignored issues
show
Coding Style introduced by
Expected 1 blank line before closing function brace; 0 found
Loading history...
Coding Style introduced by
Expected 2 blank lines after function; 1 found
Loading history...
1045
1046
	/**
1047
	 * Add post type label to the title.
1048
	 */
1049
	public function add_label_to_title() {
0 ignored issues
show
Coding Style introduced by
Method name "Frontend::add_label_to_title" is not in camel caps format
Loading history...
1050
		if ( is_search() ) {
0 ignored issues
show
Coding Style introduced by
Expected 0 spaces before closing bracket; 1 found
Loading history...
1051
			if ( ! empty( $this->options['display']['engine_search_enable_pt_label'] ) ) {
0 ignored issues
show
Coding Style introduced by
Expected 0 spaces before closing bracket; 1 found
Loading history...
1052
				$post_type = get_post_type();
1053
				$post_type = str_replace( '_', ' ', $post_type );
1054
				$post_type = str_replace( '-', ' ', $post_type );
1055
				if ( 'tribe events' === $post_type ) {
0 ignored issues
show
Coding Style introduced by
Expected 0 spaces before closing bracket; 1 found
Loading history...
1056
					$post_type = 'Events';
1057
				}
1058
				echo wp_kses_post( ' <span class="label label-default lsx-label-post-type">' . $post_type . '</span>' );
1059
			}
1060
		}
1061
	}
0 ignored issues
show
Coding Style introduced by
Expected 1 blank line before closing function brace; 0 found
Loading history...
Coding Style introduced by
Expected 2 blank lines after function; 1 found
Loading history...
1062
1063
	/**
1064
	 * Changes the sort options.
1065
	 */
1066
	public function facetwp_sort_options( $options, $params ) {
0 ignored issues
show
Coding Style introduced by
Method name "Frontend::facetwp_sort_options" is not in camel caps format
Loading history...
1067
		$this->set_vars();
1068
1069
		if ( true === $this->search_enabled ) {
0 ignored issues
show
Coding Style introduced by
Expected 0 spaces before closing bracket; 1 found
Loading history...
1070
			if ( 'default' !== $params['template_name'] && 'wp' !== $params['template_name'] ) {
0 ignored issues
show
Coding Style introduced by
Expected 0 spaces before closing bracket; 1 found
Loading history...
1071
				return $options;
1072
			}
1073
1074
			if ( ! empty( $this->options['display'][ $this->search_prefix . '_disable_date' ] ) ) {
0 ignored issues
show
Coding Style introduced by
Expected 0 spaces before closing bracket; 1 found
Loading history...
1075
				unset( $options['date_desc'] );
1076
				unset( $options['date_asc'] );
1077
			}
1078
1079
			if ( ! empty( $this->options['display'][ $this->search_prefix . '_disable_az_sorting' ] ) ) {
0 ignored issues
show
Coding Style introduced by
Expected 0 spaces before closing bracket; 1 found
Loading history...
1080
				unset( $options['title_desc'] );
1081
				unset( $options['title_asc'] );
1082
			}
1083
		}
1084
1085
		return $options;
1086
	}
0 ignored issues
show
Coding Style introduced by
Expected 1 blank line before closing function brace; 0 found
Loading history...
Coding Style introduced by
Expected 2 blank lines after function; 1 found
Loading history...
1087
1088
	/**
1089
	 * @param $allowedtags
1090
	 * @param $context
1091
	 *
1092
	 * @return mixed
1093
	 */
1094
	public function kses_allowed_html( $allowedtags, $context ) {
0 ignored issues
show
Coding Style introduced by
Method name "Frontend::kses_allowed_html" is not in camel caps format
Loading history...
1095
		$allowedtags['a']['data-value'] = true;
0 ignored issues
show
Coding Style introduced by
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...
1096
		$allowedtags['a']['data-selection']  = true;
0 ignored issues
show
Coding Style introduced by
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...
1097
		$allowedtags['button']['data-toggle'] = true;
1098
		return $allowedtags;
1099
	}
0 ignored issues
show
Coding Style introduced by
Expected 1 blank line before closing function brace; 0 found
Loading history...
Coding Style introduced by
Expected 2 blank lines after function; 1 found
Loading history...
1100
1101
	/**
1102
	 * Change FaceWP result count HTML
1103
	 */
1104
	public function get_search_query( $keyword ) {
0 ignored issues
show
Coding Style introduced by
Method name "Frontend::get_search_query" is not in camel caps format
Loading history...
1105
		global $wp_rewrite,$wp_query;
1106
1107
		if ( empty( $keyword ) ) {
0 ignored issues
show
Coding Style introduced by
Expected 0 spaces before closing bracket; 1 found
Loading history...
1108
			if ( ! isset( $wp_rewrite ) || ! is_object( $wp_rewrite ) || ! $wp_rewrite->using_permalinks() ) {
0 ignored issues
show
Coding Style introduced by
Expected 0 spaces before closing bracket; 1 found
Loading history...
1109
				return;
1110
			}
1111
			$search_base = $wp_rewrite->search_base;
1112
			if ( strpos( $_SERVER['REQUEST_URI'], "/{$search_base}/" ) !== false ) {
0 ignored issues
show
introduced by
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...
introduced by
$_SERVER data not unslashed before sanitization. Use wp_unslash() or similar
Loading history...
introduced by
Detected usage of a non-sanitized input variable: $_SERVER['REQUEST_URI']
Loading history...
Coding Style introduced by
Expected 0 spaces before closing bracket; 1 found
Loading history...
1113
				$words = explode( "/{$search_base}/", $_SERVER['REQUEST_URI'] );
0 ignored issues
show
introduced by
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...
introduced by
$_SERVER data not unslashed before sanitization. Use wp_unslash() or similar
Loading history...
introduced by
Detected usage of a non-sanitized input variable: $_SERVER['REQUEST_URI']
Loading history...
1114
				$limit = count( $words );
1115
				if ( isset( $words[ $limit - 1 ] ) ) {
0 ignored issues
show
Coding Style introduced by
Expected 0 spaces before closing bracket; 1 found
Loading history...
1116
					$keyword = $words[ $limit - 1 ];
1117
				}
1118
			}
1119
		}
1120
1121
		$needle = trim( '/ ' );
1122
		$words = explode( $needle, $keyword );
0 ignored issues
show
Coding Style introduced by
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...
1123
		if ( is_array( $words ) && ! empty( $words ) ) {
0 ignored issues
show
Coding Style introduced by
Expected 0 spaces before closing bracket; 1 found
Loading history...
1124
			$keyword = $words[ count( $words ) - 1 ];
1125
		}
1126
		$keyword = str_replace( '+', ' ', $keyword );
1127
		return $keyword;
1128
	}
0 ignored issues
show
Coding Style introduced by
Expected 1 blank line before closing function brace; 0 found
Loading history...
Coding Style introduced by
Expected 2 blank lines after function; 0 found
Loading history...
1129
}
1130