PostTemplateCondition::getArguments()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 2
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 1
nc 1
nop 1
dl 0
loc 2
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 the current post's template.
16
 *
17
 * @codeCoverageIgnore
18
 */
19
class PostTemplateCondition implements ConditionInterface {
20
	/**
21
	 * Post template to check against
22
	 *
23
	 * @var string
24
	 */
25
	protected $post_template = '';
26
27
	/**
28
	 * Post types to check against
29
	 *
30
	 * @var string[]
31
	 */
32
	protected $post_types = [];
33
34
	/**
35
	 * Constructor
36
	 *
37
	 * @codeCoverageIgnore
38
	 * @param string          $post_template
39
	 * @param string|string[] $post_types
40
	 */
41
	public function __construct( $post_template, $post_types = [] ) {
42
		$this->post_template = $post_template;
43
		$this->post_types = is_array( $post_types ) ? $post_types : [$post_types];
44
	}
45
46
	/**
47
	 * {@inheritDoc}
48
	 */
49
	public function isSatisfied( RequestInterface $request ) {
50
		$template = get_post_meta( (int) get_the_ID(), '_wp_page_template', true );
51
		$template = $template ? $template : 'default';
52
		return ( is_singular( $this->post_types ) && $this->post_template === $template );
53
	}
54
55
	/**
56
	 * {@inheritDoc}
57
	 */
58
	public function getArguments( RequestInterface $request ) {
59
		return ['post_template' => $this->post_template, 'post_types' => $this->post_types];
60
	}
61
}
62