Issues (823)

classes/class-lsx-search-facetwp.php (2 issues)

1
<?php
2
/**
3
 * LSX Search FacetWP filters and actions
4
 *
5
 * @package lsx-search
6
 */
7
class LSX_Search_FacetWP {
0 ignored issues
show
Coding Style Compatibility introduced by
PSR1 recommends that each class must be in a namespace of at least one level to avoid collisions.

You can fix this by adding a namespace to your class:

namespace YourVendor;

class YourClass { }

When choosing a vendor namespace, try to pick something that is not too generic to avoid conflicts with other libraries.

Loading history...
8
9
	/**
10
	 * @var object \lsx\search\classes\facetwp\Hierarchy()
11
	 */
12
	public $hierarchy;
13
14
	/**
15
	 * @var object \lsx\search\classes\facetwp\Post_Connections()
16
	 */
17
	public $post_connections;
18
19
	/**
20
	 * Class Constructor.
21
	 */
22
	public function __construct() {
23
24
		require_once LSX_SEARCH_PATH . '/classes/facetwp/class-hierarchy.php';
25
		$this->hierarchy = lsx\search\classes\facetwp\Hierarchy::get_instance();
26
27
		require_once LSX_SEARCH_PATH . '/classes/facetwp/class-post-connections.php';
28
		$this->post_connections = lsx\search\classes\facetwp\Post_Connections::get_instance();
29
30
		add_filter( 'facetwp_pager_html', array( $this, 'facetwp_pager_html' ), 10, 2 );
31
		add_filter( 'facetwp_result_count', array( $this, 'facetwp_result_count' ), 10, 2 );
32
		add_filter( 'facetwp_facet_html', array( $this, 'facetwp_slide_html' ), 10, 2 );
33
		add_filter( 'facetwp_load_css', array( $this, 'facetwp_load_css' ), 10, 1 );
34
		add_filter( 'facetwp_index_row', array( $this, 'index_row' ), 10, 2 );
35
	}
36
37
	/**
38
	 * Change FaceWP pagination HTML to be equal LSX pagination.
39
	 */
40
	public function facetwp_pager_html( $output, $params ) {
41
		$output = '';
42
		$page = (int) $params['page'];
43
		$per_page = (int) $params['per_page'];
44
		$total_pages = (int) $params['total_pages'];
45
46
		if ( 1 < $total_pages ) {
47
			$output .= '<div class="lsx-pagination-wrapper facetwp-custom">';
48
			$output .= '<div class="lsx-pagination">';
49
			// $output .= '<span class="pages">Page '. $page .' of '. $total_pages .'</span>';
0 ignored issues
show
Unused Code Comprehensibility introduced by
45% 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...
50
51
			if ( 1 < $page ) {
52
				$output .= '<a class="prev page-numbers facetwp-page" rel="prev" data-page="' . ( $page - 1 ) . '">«</a>';
53
			}
54
55
			$temp = false;
56
57
			for ( $i = 1; $i <= $total_pages; $i++ ) {
58
				if ( $i == $page ) {
59
					$output .= '<span class="page-numbers current">' . $i . '</span>';
60
				} elseif ( ( $page - 2 ) < $i && ( $page + 2 ) > $i ) {
61
					$output .= '<a class="page-numbers facetwp-page" data-page="' . $i . '">' . $i . '</a>';
62
				} elseif ( ( $page - 2 ) >= $i && $page > 2 ) {
63
					if ( ! $temp ) {
64
						$output .= '<span class="page-numbers dots">...</span>';
65
						$temp = true;
66
					}
67
				} elseif ( ( $page + 2 ) <= $i && ( $page + 2 ) <= $total_pages ) {
68
					$output .= '<span class="page-numbers dots">...</span>';
69
					break;
70
				}
71
			}
72
73
			if ( $page < $total_pages ) {
74
				$output .= '<a class="next page-numbers facetwp-page" rel="next" data-page="' . ( $page + 1 ) . '">»</a>';
75
			}
76
77
			$output .= '</div>';
78
			$output .= '</div>';
79
		}
80
81
		return $output;
82
	}
83
84
	/**
85
	 * Change FaceWP result count HTML.
86
	 */
87
	public function facetwp_result_count( $output, $params ) {
88
		$output = $params['total'];
89
		return $output;
90
	}
91
92
	/**
93
	 * Change FaceWP slider HTML.
94
	 */
95
	public function facetwp_slide_html( $html, $args ) {
96
		if ( 'slider' === $args['facet']['type'] ) {
97
			$html = str_replace( 'class="facetwp-slider-reset"', 'class="btn btn-md facetwp-slider-reset"', $html );
98
		}
99
100
		return $html;
101
	}
102
103
	/**
104
	 * Change FaceWP slider HTML.
105
	 */
106
	public function facetwp_counts_html( $html, $args ) {
107
		if ( 'slider' === $args['facet']['type'] ) {
108
			$html = str_replace( 'class="facetwp-slider-reset"', 'class="btn btn-md facetwp-slider-reset"', $html );
109
		}
110
		return $html;
111
	}
112
113
	/**
114
	 * Disable FacetWP styles.
115
	 */
116
	public function facetwp_load_css( $boolean ) {
117
		$boolean = false;
118
		return $boolean;
119
	}
120
121
	/**
122
	 * Get the price including the tax
123
	 * @param $params
124
	 * @param $class
125
	 *
126
	 * @return mixed
127
	 */
128
	public function index_row( $params, $class ) {
129
		// Custom woo fields
130
		if ( 0 === strpos( $params['facet_source'], 'woo' ) ) {
131
			$product = wc_get_product( $params['post_id'] );
132
133
			// Price
134
			if ( in_array( $params['facet_source'], array( 'woo/price', 'woo/sale_price', 'woo/regular_price' ) ) ) {
135
				$price = $params['facet_value'];
136
				if ( $product->is_taxable() ) {
137
					$price = wc_get_price_including_tax( $product );
138
				}
139
				$params['facet_value']    = $price;
140
				$params['facet_display_value'] = $price;
141
142
			}
143
		}
144
		return $params;
145
	}
146
147
}
148