91 lines
1.6 KiB
PHP
91 lines
1.6 KiB
PHP
<?php
|
|
|
|
namespace Sphere\Debloat;
|
|
use Sphere\Debloat\Admin\OptionsData;
|
|
|
|
/**
|
|
* A very basic options class.
|
|
*
|
|
* @author asadkn
|
|
* @since 1.0.0
|
|
*/
|
|
class Options
|
|
{
|
|
/**
|
|
* @var string|array Option key to use for get_options().
|
|
*/
|
|
public $option_key;
|
|
public $_options;
|
|
public $defaults = [];
|
|
|
|
/**
|
|
* @param string|array $option_key
|
|
*/
|
|
public function __construct($option_key)
|
|
{
|
|
$this->option_key = $option_key;
|
|
}
|
|
|
|
/**
|
|
* Initialize
|
|
*/
|
|
public function init()
|
|
{
|
|
$this->load_defaults();
|
|
|
|
if (is_array($this->option_key)) {
|
|
$this->_options = [];
|
|
|
|
foreach ($this->option_key as $key) {
|
|
$this->_options = array_merge($this->_options, (array) get_option($key));
|
|
}
|
|
|
|
} else {
|
|
$this->_options = (array) get_option($this->option_key);
|
|
}
|
|
|
|
$this->_options = apply_filters('debloat/init_options', $this->_options);
|
|
}
|
|
|
|
public function load_defaults()
|
|
{
|
|
if (!class_exists('Sphere\Debloat\Admin\OptionsData')) {
|
|
return;
|
|
}
|
|
|
|
$this->defaults = array_reduce(
|
|
OptionsData::get_all(),
|
|
function($acc, $option) {
|
|
$acc[$option['id']] = isset($option['default']) ? $option['default'] : '';
|
|
return $acc;
|
|
},
|
|
[]
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Get an option
|
|
*/
|
|
public function get($key, $fallback = '')
|
|
{
|
|
if (array_key_exists($key, $this->_options)) {
|
|
return $this->_options[$key];
|
|
}
|
|
|
|
if (array_key_exists($key, $this->defaults)) {
|
|
return $this->defaults[$key];
|
|
}
|
|
|
|
return $fallback;
|
|
}
|
|
|
|
public function __get($key)
|
|
{
|
|
return $this->get($key);
|
|
}
|
|
|
|
public function __set($key, $value)
|
|
{
|
|
$this->_options[$key] = $value;
|
|
}
|
|
} |