Completed
Push — develop ( 86b8b3...86b8b3 )
by Aristeides
06:38 queued 04:32
created

Kirki_Values::get_value()   C

Complexity

Conditions 15
Paths 160

Size

Total Lines 60
Code Lines 27

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 15
eloc 27
nc 160
nop 2
dl 0
loc 60
rs 5.7249
c 0
b 0
f 0

How to fix   Long Method    Complexity   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

1
<?php
2
/**
3
 * Hekoers to get the values of a field.
4
 * WARNING: PLEASE DO NOT USE THESE.
5
 * we only have these for backwards-compatibility purposes.
6
 * please use get_option() & get_theme_mod() instead.
7
 *
8
 * @package     Kirki
9
 * @category    Core
10
 * @author      Aristeides Stathopoulos
11
 * @copyright   Copyright (c) 2017, Aristeides Stathopoulos
12
 * @license     http://opensource.org/licenses/https://opensource.org/licenses/MIT
13
 * @since       1.0
14
 */
15
16
/**
17
 * Wrapper class for static methods.
18
 */
19
class Kirki_Values {
20
21
	/**
22
	 * Get the value of a field.
23
	 *
24
	 * @static
25
	 * @access public
26
	 * @param string $config_id The configuration ID. @see Kirki_Config.
27
	 * @param string $field_id  The field ID.
28
	 * @return string|array
29
	 */
30
	public static function get_value( $config_id = '', $field_id = '' ) {
31
32
		// Make sure value is defined.
33
		$value = '';
34
35
		// This allows us to skip the $config_id argument.
36
		// If we skip adding a $config_id, use the 'global' configuration.
37
		if ( ( '' === $field_id ) && '' !== $config_id ) {
38
			$field_id  = $config_id;
39
			$config_id = 'global';
40
		}
41
42
		// If $config_id is empty, set it to 'global'.
43
		$config_id = ( '' === $config_id ) ? 'global' : $config_id;
44
45
		// Fallback to 'global' if $config_id is not found.
46
		if ( ! isset( Kirki::$config[ $config_id ] ) ) {
47
			$config_id = 'global';
48
		}
49
50
		if ( 'theme_mod' === Kirki::$config[ $config_id ]['option_type'] ) {
51
52
			// We're using theme_mods so just get the value using get_theme_mod.
53
			$default_value = null;
54
			if ( isset( Kirki::$fields[ $field_id ] ) && isset( Kirki::$fields[ $field_id ]['default'] ) ) {
55
				$default_value = Kirki::$fields[ $field_id ]['default'];
56
			}
57
			$value = get_theme_mod( $field_id, $default_value );
58
			return apply_filters( 'kirki/values/get_value', $value, $field_id );
59
		}
60
61
		if ( 'option' === Kirki::$config[ $config_id ]['option_type'] ) {
62
63
			// We're using options.
64
			if ( '' !== Kirki::$config[ $config_id ]['option_name'] ) {
65
66
				// Options are serialized as a single option in the db.
67
				// We'll have to get the option and then get the item from the array.
68
				$options = get_option( Kirki::$config[ $config_id ]['option_name'] );
69
70
				if ( ! isset( Kirki::$fields[ $field_id ] ) && isset( Kirki::$fields[ Kirki::$config[ $config_id ]['option_name'] . '[' . $field_id . ']' ] ) ) {
71
					$field_id = Kirki::$config[ $config_id ]['option_name'] . '[' . $field_id . ']';
72
				}
73
				$setting_modified = str_replace( ']', '', str_replace( Kirki::$config[ $config_id ]['option_name'] . '[', '', $field_id ) );
74
75
				$default_value = ( isset( Kirki::$fields[ $field_id ] ) && isset( Kirki::$fields[ $field_id ]['default'] ) ) ? Kirki::$fields[ $field_id ]['default'] : '';
76
				$value = ( isset( $options[ $setting_modified ] ) ) ? $options[ $setting_modified ] : $default_value;
77
				$value = maybe_unserialize( $value );
78
				return apply_filters( 'kirki/values/get_value', $value, $field_id );
79
			}
80
81
			// Each option separately saved in the db.
82
			$value = get_option( $field_id, Kirki::$fields[ $field_id ]['default'] );
83
			return apply_filters( 'kirki/values/get_value', $value, $field_id );
84
85
		} // End if().
86
87
		return apply_filters( 'kirki/values/get_value', $value, $field_id );
88
89
	}
90
91
	/**
92
	 * Gets the value or fallsback to default.
93
	 *
94
	 * @static
95
	 * @access public
96
	 * @param array $field The field aruments.
97
	 * @return string|array
98
	 */
99
	public static function get_sanitized_field_value( $field ) {
100
		$value = $field['default'];
101
		if ( isset( $field['option_type'] ) && 'theme_mod' === $field['option_type'] ) {
102
			$value = get_theme_mod( $field['settings'], $field['default'] );
103
		} elseif ( isset( $field['option_type'] ) && 'option' === $field['option_type'] ) {
104
			if ( isset( $field['option_name'] ) && '' !== $field['option_name'] ) {
105
				$all_values = get_option( $field['option_name'], array() );
106
				$sub_setting_id = str_replace( array( ']', $field['option_name'] . '[' ), '', $field['settings'] );
107
				if ( isset( $all_values[ $sub_setting_id ] ) ) {
108
					$value = $all_values[ $sub_setting_id ];
109
				}
110
			} else {
111
				$value = get_option( $field['settings'], $field['default'] );
112
			}
113
		}
114
115
		return $value;
116
117
	}
118
}
119