set_db_key($source); } public static function source($source = 'settings') { if (!isset(self::$instances[$source])) { self::$instances[$source] = new self($source); } return self::$instances[$source]; } private function set_db_key( $source ) { $this->db_key = 'rtsb_' . $source; } public function get_option( $key, $default = null ) { if( isset( $GLOBALS[$this->db_key] )){ $db = $GLOBALS[$this->db_key]; } else { $GLOBALS[$this->db_key] = get_option( $this->db_key, [] ); $db = $GLOBALS[$this->db_key]; } return $db[ $key ] ?? $default; } public function set_option( $key, $value ) { //if( isset( $GLOBALS[$this->db_key] ) ){ // $db = $GLOBALS[$this->db_key]; //} else { // $db = get_option( $this->db_key, [] ); // $GLOBALS[$this->db_key] = $db; //} $db = get_option( $this->db_key, [] ); if ( is_object( $db ) ) { $db = (array) $db; } if ( ! is_array( $db ) ) { $db = []; } $db[ $key ] = $value; return update_option( $this->db_key, $db ); } public function delete_option( $key ) { //if( isset( $GLOBALS[$this->db_key] ) ){ // $db = $GLOBALS[$this->db_key]; //} else { // $db = get_option( $this->db_key, [] ); // $GLOBALS[$this->db_key] = $db; //} $db = get_option( $this->db_key, [] ); if ( isset( $db[ $key ] ) ) { unset( $db[ $key ] ); } return update_option( $this->db_key, $db ); } }