Passed
Push — master ( 81fb7c...e448bf )
by Paul
05:17 queued 02:36
created

SiteMetaManager   A

Complexity

Total Complexity 8

Size/Duplication

Total Lines 42
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 0

Importance

Changes 0
Metric Value
dl 0
loc 42
rs 10
c 0
b 0
f 0
wmc 8
lcom 0
cbo 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A get() 0 14 4
A normalize() 0 13 4
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 = 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