Passed
Push — develop ( a8cd8c...3d135a )
by Paul
02:51
created

SiteMeta::normalize()   A

Complexity

Conditions 4
Paths 5

Size

Total Lines 13
Code Lines 10

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 4
eloc 10
nc 5
nop 3
dl 0
loc 13
rs 9.2
c 0
b 0
f 0
1
<?php
2
3
namespace GeminiLabs\Pollux;
4
5
use GeminiLabs\Pollux\Settings\Settings;
6
7
class SiteMeta
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 = get_option( apply_filters( 'pollux/settings/option', Settings::ID ));
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
	 * @param string $key
32
	 * @param mixed $fallback
33
	 * @return mixed
34
	 */
35
	protected function normalize( array $options, $key, $fallback )
36
	{
37
		if( !array_key_exists( $key, $options )) {
38
			return $fallback;
39
		}
40
		$option = $options[$key];
41
		$option = is_array( $option )
42
			? array_filter( $option )
43
			: trim( $option );
44
		return empty( $option )
45
			? $fallback
46
			: $option;
47
	}
48
}
49