WP_Option.php 1.42 KB
<?php
/*
 * I made a boo boo
 * This only works with Array variables
 */
class WP_Option implements ArrayAccess, Countable {
    private $_ns;
    private $_data = Array();

    public function __construct($ns, $defaults = null) {
        $this->_ns   = $ns;
        $this->_data = get_option($ns);

        $changed = false;
        if (is_array($defaults)) {
            foreach ($defaults as $key => $val) {
                if (!isset($this->_data[$key])) {
                    $this->_data[$key] = $val;
                    $changed = true;
                }
            }
        }

        if ($changed) {
            $this->save();
        }
    }

    public function offsetExists($var) {
        return (isset($this->_data[$var]) ? true : false);
    }

    public function offsetGet($var) {
        return ($this->offsetExists($var) ? $this->_data[$var] : '');
    }

    public function offsetSet($var, $val) {
        $this->_data[$var] = $val;
        $this->save();
    }

    public function offsetUnset($var) {
        unset($this->_data[$var]);
        $this->save();
    }

    public function count() {
        return count($this->_data);
    }

    public function save() {
        update_option($this->_ns, $this->_data);
    }

    public function multiSet(Array $data) {
        array_merge($this->_data, $data);
        $this->save();
    }

    public function dump() {
echo "Here\n";
        print_r($this->_data);
    }
}
?>