1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
|
<?php // phpcs:ignoreFile
namespace AutomateWoo;
/** * WP option wrapper * * @class AW_Abstract_Options_API * @since 2.4.4 * * @property $version */ abstract class Options_API {
/** @var string */ public $prefix;
/** @var array */ public $defaults = [];
/** * Magic method for option retrieval * * @param string $key * @return mixed */ function __get( $key ) {
$value = get_option( $this->prefix . $key );
// ability to filter option values $filter_func = 'filter_' . $key;
if ( method_exists( $this, $filter_func ) ) { $value = call_user_func( [ $this, $filter_func ], $value ); }
if ( $value !== false && $value !== '' ) { return $this->parse( $value ); }
// fallback to default if ( isset( $this->defaults[$key] ) ) { return $this->parse( $this->defaults[$key] ); }
return false; }
/** * @since 4.0 * @param $option_name * @return mixed */ static function get( $option_name ) { return AW()->options()->__get( $option_name ); }
/** * Convert yes / no strings to boolean * * @param $value * * @return mixed */ function parse( $value ) { if ( $value === 'yes' ) return true; if ( $value === 'no' ) return false;
return $value; } }
|