option_name = $option_name; if ( is_array( $default_settings ) ) { $this->defaults = $default_settings; } else { $this->defaults = array(); } $this->loaded_values = array(); $this->options = $this->defaults; if ( ! empty( $this->option_name ) ) { $this->load_options(); } } function set_defaults( $default_settings = null ) { if ( is_array( $default_settings ) ) { $this->defaults = array(); } else { $this->defaults = $default_settings; } $this->options = array_merge( $this->defaults, $this->loaded_values ); } /** * blcOptionManager::load_options() * Load plugin options from the database. The current $options values are not affected * if this function fails. * * @param string $option_name * @return bool True if options were loaded, false otherwise. */ function load_options( $option_name = '' ) { $this->db_option_loaded = false; if ( ! empty( $option_name ) ) { $this->option_name = $option_name; } if ( empty( $this->option_name ) ) { return false; } $new_options = get_option( $this->option_name ); //Decode JSON (if applicable). if ( is_string( $new_options ) && ! empty( $new_options ) ) { $new_options = json_decode( $new_options, true ); } if ( ! is_array( $new_options ) ) { return false; } else { $this->loaded_values = $new_options; $this->options = array_merge( $this->defaults, $this->loaded_values ); $this->db_option_loaded = true; return true; } } /** * blcOptionManager::save_options() * Save plugin options to the database. * * @param string $option_name (Optional) Save the options under this name * @return bool True if settings were saved, false if settings haven't been changed or if there was an error. */ function save_options( $option_name = '' ) { if ( ! empty( $option_name ) ) { $this->option_name = $option_name; } if ( empty( $this->option_name ) ) { return false; } return update_option( $this->option_name, json_encode( $this->options ) ); } /** * Retrieve a specific setting. * * @param string $key * @param mixed $default * @return mixed */ function get( $key, $default = null ) { if ( array_key_exists( $key, $this->options ) ) { return $this->options[ $key ]; } else { return $default; } } /** * Update or add a setting. * * @param string $key * @param mixed $value * @return void */ function set( $key, $value ) { $this->options[ $key ] = $value; } } }