Passed
Push — develop ( e448bf...f6f336 )
by Paul
03:05
created

SiteMetaManager::get()   A

Complexity

Conditions 4
Paths 4

Size

Total Lines 14
Code Lines 10

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 4
eloc 10
nc 4
nop 3
dl 0
loc 14
rs 9.2
c 0
b 0
f 0
1
<?php
2
3
namespace GeminiLabs\Pollux\MetaBox;
4
5
use GeminiLabs\Pollux\Settings\Settings;
6
7
class SiteMetaManager
8
{
9
	/**
10
	 * @param null|string $group
11
	 * @param null|string $key
12
	 * @param mixed $fallback
13
	 * @return mixed
14
	 */
15
	public function get( $group = null, $key = null, $fallback = null )
16
	{
17
		$options = $this->getOption();
18
		if( empty( $options )) {
19
			return $fallback;
20
		}
21
		if( !is_string( $group )) {
22
			return $options;
23
		}
24
		$group = $this->normalize( $options, $group, $fallback );
25
		return is_string( $key )
26
			? $this->normalize( (array) $group, $key, $fallback )
27
			: $group;
28
	}
29
30
	/**
31
	 * @return array
32
	 */
33
	protected function getOption()
34
	{
35
		return get_option( apply_filters( 'pollux/settings/option', Settings::ID ), [] );
36
	}
37
38
	/**
39
	 * @param string $key
40
	 * @param mixed $fallback
41
	 * @return mixed
42
	 */
43
	protected function normalize( array $options, $key, $fallback )
44
	{
45
		if( !array_key_exists( $key, $options )) {
46
			return $fallback;
47
		}
48
		$option = $options[$key];
49
		$option = is_array( $option )
50
			? array_filter( $option )
51
			: trim( $option );
52
		return empty( $option )
53
			? $fallback
54
			: $option;
55
	}
56
}
57