QueryVarCondition::__construct()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 2
nc 1
nop 2
dl 0
loc 3
c 0
b 0
f 0
cc 1
rs 10
1
<?php
2
/**
3
 * @package   WPEmerge
4
 * @author    Atanas Angelov <[email protected]>
5
 * @copyright 2017-2019 Atanas Angelov
6
 * @license   https://www.gnu.org/licenses/gpl-2.0.html GPL-2.0
7
 * @link      https://wpemerge.com/
8
 */
9
10
namespace WPEmerge\Routing\Conditions;
11
12
use WPEmerge\Requests\RequestInterface;
13
14
/**
15
 * Check against a query var value.
16
 *
17
 * @codeCoverageIgnore
18
 */
19
class QueryVarCondition implements ConditionInterface {
20
	/**
21
	 * Query var name to check against.
22
	 *
23
	 * @var string|null
24
	 */
25
	protected $query_var = null;
26
27
	/**
28
	 * Query var value to check against.
29
	 *
30
	 * @var string|null
31
	 */
32
	protected $value = '';
33
34
	/**
35
	 * Constructor.
36
	 *
37
	 * @codeCoverageIgnore
38
	 * @param string      $query_var
39
	 * @param string|null $value
40
	 */
41
	public function __construct( $query_var, $value = null ) {
42
		$this->query_var = $query_var;
43
		$this->value = $value;
44
	}
45
46
	/**
47
	 * {@inheritDoc}
48
	 */
49
	public function isSatisfied( RequestInterface $request ) {
50
		$query_var_value = get_query_var( $this->query_var, null );
51
52
		if ( $query_var_value === null ) {
53
			return false;
54
		}
55
56
		if ( $this->value === null ) {
57
			return true;
58
		}
59
60
		return (string) $this->value === $query_var_value;
61
	}
62
63
	/**
64
	 * {@inheritDoc}
65
	 */
66
	public function getArguments( RequestInterface $request ) {
67
		return ['query_var' => $this->query_var, 'value' => $this->value];
68
	}
69
}
70