- return false;
-}
-
-/**
- * Add a new option.
- *
- * You do not need to serialize values. If the value needs to be serialized, then
- * it will be serialized before it is inserted into the database. Remember,
- * resources can not be serialized or added as an option.
- *
- * You can create options without values and then add values later. Does not
- * check whether the option has already been added, but does check that you
- * aren't adding a protected WordPress option. Care should be taken to not name
- * options the same as the ones which are protected and to not add options
- * that were already added.
- *
- * @package WordPress
- * @subpackage Option
- * @since 1.0.0
- *
- * @uses do_action() Calls 'add_option' hook before adding the option.
- * @uses do_action() Calls 'add_option_$option' and 'added_option' hooks on success.
- *
- * @param string $option Name of option to add. Expected to not be SQL-escaped.
- * @param mixed $value Optional. Option value, can be anything. Expected to not be SQL-escaped.
- * @param mixed $deprecated Optional. Description. Not used anymore.
- * @param bool $autoload Optional. Default is enabled. Whether to load the option when WordPress starts up.
- * @return null returns when finished.
- */
-function add_option( $option, $value = '', $deprecated = '', $autoload = 'yes' ) {
- global $wpdb;
-
- if ( !empty( $deprecated ) )
- _deprecated_argument( __FUNCTION__, '2.3' );
-
- $option = trim($option);
- if ( empty($option) )
- return false;
-
- wp_protect_special_option( $option );
-
- if ( is_object($value) )
- $value = clone $value;
-
- $value = sanitize_option( $option, $value );
-
- // Make sure the option doesn't already exist. We can check the 'notoptions' cache before we ask for a db query
- $notoptions = wp_cache_get( 'notoptions', 'options' );
- if ( !is_array( $notoptions ) || !isset( $notoptions[$option] ) )
- if ( false !== get_option( $option ) )
- return;
-
- $_value = $value;
- $value = maybe_serialize( $value );
- $autoload = ( 'no' === $autoload ) ? 'no' : 'yes';
- do_action( 'add_option', $option, $_value );
- if ( ! defined( 'WP_INSTALLING' ) ) {
- if ( 'yes' == $autoload ) {
- $alloptions = wp_load_alloptions();
- $alloptions[$option] = $value;
- wp_cache_set( 'alloptions', $alloptions, 'options' );
- } else {
- wp_cache_set( $option, $value, 'options' );
- }
- }
-
- // This option exists now
- $notoptions = wp_cache_get( 'notoptions', 'options' ); // yes, again... we need it to be fresh
- if ( is_array( $notoptions ) && isset( $notoptions[$option] ) ) {
- unset( $notoptions[$option] );
- wp_cache_set( 'notoptions', $notoptions, 'options' );
- }
-
- $result = $wpdb->query( $wpdb->prepare( "INSERT INTO `$wpdb->options` (`option_name`, `option_value`, `autoload`) VALUES (%s, %s, %s) ON DUPLICATE KEY UPDATE `option_name` = VALUES(`option_name`), `option_value` = VALUES(`option_value`), `autoload` = VALUES(`autoload`)", $option, $value, $autoload ) );
-
- if ( $result ) {
- do_action( "add_option_{$option}", $option, $_value );
- do_action( 'added_option', $option, $_value );
- return true;
- }
- return false;
-}
-
-/**
- * Removes option by name. Prevents removal of protected WordPress options.
- *
- * @package WordPress
- * @subpackage Option
- * @since 1.2.0
- *
- * @uses do_action() Calls 'delete_option' hook before option is deleted.
- * @uses do_action() Calls 'deleted_option' and 'delete_option_$option' hooks on success.
- *
- * @param string $option Name of option to remove. Expected to not be SQL-escaped.
- * @return bool True, if option is successfully deleted. False on failure.
- */
-function delete_option( $option ) {
- global $wpdb;
-
- wp_protect_special_option( $option );
-
- // Get the ID, if no ID then return
- $row = $wpdb->get_row( $wpdb->prepare( "SELECT autoload FROM $wpdb->options WHERE option_name = %s", $option ) );
- if ( is_null( $row ) )
- return false;
- do_action( 'delete_option', $option );
- $result = $wpdb->query( $wpdb->prepare( "DELETE FROM $wpdb->options WHERE option_name = %s", $option) );
- if ( ! defined( 'WP_INSTALLING' ) ) {
- if ( 'yes' == $row->autoload ) {
- $alloptions = wp_load_alloptions();
- if ( is_array( $alloptions ) && isset( $alloptions[$option] ) ) {
- unset( $alloptions[$option] );
- wp_cache_set( 'alloptions', $alloptions, 'options' );
- }
- } else {
- wp_cache_delete( $option, 'options' );
- }
- }
- if ( $result ) {
- do_action( "delete_option_$option", $option );
- do_action( 'deleted_option', $option );
- return true;
- }
- return false;
-}
-
-/**
- * Delete a transient
- *
- * @since 2.8.0
- * @package WordPress
- * @subpackage Transient
- *
- * @uses do_action() Calls 'delete_transient_$transient' hook before transient is deleted.
- * @uses do_action() Calls 'deleted_transient' hook on success.
- *
- * @param string $transient Transient name. Expected to not be SQL-escaped.
- * @return bool true if successful, false otherwise
- */
-function delete_transient( $transient ) {
- global $_wp_using_ext_object_cache;
-
- do_action( 'delete_transient_' . $transient, $transient );
-
- if ( $_wp_using_ext_object_cache ) {
- $result = wp_cache_delete( $transient, 'transient' );
- } else {
- $option_timeout = '_transient_timeout_' . $transient;
- $option = '_transient_' . $transient;
- $result = delete_option( $option );
- if ( $result )
- delete_option( $option_timeout );
- }
-
- if ( $result )
- do_action( 'deleted_transient', $transient );
- return $result;
-}
-
-/**
- * Get the value of a transient
- *
- * If the transient does not exist or does not have a value, then the return value
- * will be false.
- *
- * @uses apply_filters() Calls 'pre_transient_$transient' hook before checking the transient.
- * Any value other than false will "short-circuit" the retrieval of the transient
- * and return the returned value.
- * @uses apply_filters() Calls 'transient_$option' hook, after checking the transient, with
- * the transient value.
- *
- * @since 2.8.0
- * @package WordPress
- * @subpackage Transient
- *
- * @param string $transient Transient name. Expected to not be SQL-escaped
- * @return mixed Value of transient
- */
-function get_transient( $transient ) {
- global $_wp_using_ext_object_cache;
-
- $pre = apply_filters( 'pre_transient_' . $transient, false );
- if ( false !== $pre )
- return $pre;
-
- if ( $_wp_using_ext_object_cache ) {
- $value = wp_cache_get( $transient, 'transient' );
- } else {
- $transient_option = '_transient_' . $transient;
- if ( ! defined( 'WP_INSTALLING' ) ) {
- // If option is not in alloptions, it is not autoloaded and thus has a timeout
- $alloptions = wp_load_alloptions();
- if ( !isset( $alloptions[$transient_option] ) ) {
- $transient_timeout = '_transient_timeout_' . $transient;
- if ( get_option( $transient_timeout ) < time() ) {
- delete_option( $transient_option );
- delete_option( $transient_timeout );
- return false;
- }
- }
- }
-
- $value = get_option( $transient_option );
- }
-
- return apply_filters( 'transient_' . $transient, $value );
-}
-
-/**
- * Set/update the value of a transient
- *
- * You do not need to serialize values. If the value needs to be serialized, then
- * it will be serialized before it is set.
- *
- * @since 2.8.0
- * @package WordPress
- * @subpackage Transient
- *
- * @uses apply_filters() Calls 'pre_set_transient_$transient' hook to allow overwriting the
- * transient value to be stored.
- * @uses do_action() Calls 'set_transient_$transient' and 'setted_transient' hooks on success.
- *
- * @param string $transient Transient name. Expected to not be SQL-escaped.
- * @param mixed $value Transient value. Expected to not be SQL-escaped.
- * @param int $expiration Time until expiration in seconds, default 0
- * @return bool False if value was not set and true if value was set.
- */
-function set_transient( $transient, $value, $expiration = 0 ) {
- global $_wp_using_ext_object_cache;
-
- $value = apply_filters( 'pre_set_transient_' . $transient, $value );
-
- if ( $_wp_using_ext_object_cache ) {
- $result = wp_cache_set( $transient, $value, 'transient', $expiration );
- } else {
- $transient_timeout = '_transient_timeout_' . $transient;
- $transient = '_transient_' . $transient;
- if ( false === get_option( $transient ) ) {
- $autoload = 'yes';
- if ( $expiration ) {
- $autoload = 'no';
- add_option( $transient_timeout, time() + $expiration, '', 'no' );
- }
- $result = add_option( $transient, $value, '', $autoload );
- } else {
- if ( $expiration )
- update_option( $transient_timeout, time() + $expiration );
- $result = update_option( $transient, $value );
- }
- }
- if ( $result ) {
- do_action( 'set_transient_' . $transient );
- do_action( 'setted_transient', $transient );
- }
- return $result;
-}
-
-/**
- * Saves and restores user interface settings stored in a cookie.
- *
- * Checks if the current user-settings cookie is updated and stores it. When no
- * cookie exists (different browser used), adds the last saved cookie restoring
- * the settings.
- *
- * @package WordPress
- * @subpackage Option
- * @since 2.7.0
- */
-function wp_user_settings() {
-
- if ( ! is_admin() )
- return;
-
- if ( defined('DOING_AJAX') )
- return;
-
- if ( ! $user = wp_get_current_user() )
- return;
-
- $settings = get_user_option( 'user-settings', $user->ID );
-
- if ( isset( $_COOKIE['wp-settings-' . $user->ID] ) ) {
- $cookie = preg_replace( '/[^A-Za-z0-9=&_]/', '', $_COOKIE['wp-settings-' . $user->ID] );
-
- if ( ! empty( $cookie ) && strpos( $cookie, '=' ) ) {
- if ( $cookie == $settings )
- return;
-
- $last_time = (int) get_user_option( 'user-settings-time', $user->ID );
- $saved = isset( $_COOKIE['wp-settings-time-' . $user->ID]) ? preg_replace( '/[^0-9]/', '', $_COOKIE['wp-settings-time-' . $user->ID] ) : 0;
-
- if ( $saved > $last_time ) {
- update_user_option( $user->ID, 'user-settings', $cookie, false );
- update_user_option( $user->ID, 'user-settings-time', time() - 5, false );
- return;
- }
- }
- }
-
- setcookie( 'wp-settings-' . $user->ID, $settings, time() + 31536000, SITECOOKIEPATH );
- setcookie( 'wp-settings-time-' . $user->ID, time(), time() + 31536000, SITECOOKIEPATH );
- $_COOKIE['wp-settings-' . $user->ID] = $settings;
-}
-
-/**
- * Retrieve user interface setting value based on setting name.
- *
- * @package WordPress
- * @subpackage Option
- * @since 2.7.0
- *
- * @param string $name The name of the setting.
- * @param string $default Optional default value to return when $name is not set.
- * @return mixed the last saved user setting or the default value/false if it doesn't exist.
- */
-function get_user_setting( $name, $default = false ) {
-
- $all = get_all_user_settings();
-
- return isset($all[$name]) ? $all[$name] : $default;
-}
-
-/**
- * Add or update user interface setting.
- *
- * Both $name and $value can contain only ASCII letters, numbers and underscores.
- * This function has to be used before any output has started as it calls setcookie().
- *
- * @package WordPress
- * @subpackage Option
- * @since 2.8.0
- *
- * @param string $name The name of the setting.
- * @param string $value The value for the setting.
- * @return bool true if set successfully/false if not.
- */
-function set_user_setting( $name, $value ) {
-
- if ( headers_sent() )
- return false;
-
- $all = get_all_user_settings();
- $name = preg_replace( '/[^A-Za-z0-9_]+/', '', $name );
-
- if ( empty($name) )
- return false;
-
- $all[$name] = $value;
-
- return wp_set_all_user_settings($all);
-}
-
-/**
- * Delete user interface settings.
- *
- * Deleting settings would reset them to the defaults.
- * This function has to be used before any output has started as it calls setcookie().
- *
- * @package WordPress
- * @subpackage Option
- * @since 2.7.0
- *
- * @param mixed $names The name or array of names of the setting to be deleted.
- * @return bool true if deleted successfully/false if not.
- */
-function delete_user_setting( $names ) {
-
- if ( headers_sent() )
- return false;
-
- $all = get_all_user_settings();
- $names = (array) $names;
-
- foreach ( $names as $name ) {
- if ( isset($all[$name]) ) {
- unset($all[$name]);
- $deleted = true;
- }
- }
-
- if ( isset($deleted) )
- return wp_set_all_user_settings($all);
-
- return false;
-}
-
-/**
- * Retrieve all user interface settings.
- *
- * @package WordPress
- * @subpackage Option
- * @since 2.7.0
- *
- * @return array the last saved user settings or empty array.
- */
-function get_all_user_settings() {
- global $_updated_user_settings;
-
- if ( ! $user = wp_get_current_user() )
- return array();
-
- if ( isset($_updated_user_settings) && is_array($_updated_user_settings) )
- return $_updated_user_settings;
-
- $all = array();
- if ( isset($_COOKIE['wp-settings-' . $user->ID]) ) {
- $cookie = preg_replace( '/[^A-Za-z0-9=&_]/', '', $_COOKIE['wp-settings-' . $user->ID] );
-
- if ( $cookie && strpos($cookie, '=') ) // the '=' cannot be 1st char
- parse_str($cookie, $all);
-
- } else {
- $option = get_user_option('user-settings', $user->ID);
- if ( $option && is_string($option) )
- parse_str( $option, $all );
- }
-
- return $all;
-}
-
-/**
- * Private. Set all user interface settings.
- *
- * @package WordPress
- * @subpackage Option
- * @since 2.8.0
- *
- * @param unknown $all
- * @return bool
- */
-function wp_set_all_user_settings($all) {
- global $_updated_user_settings;
-
- if ( ! $user = wp_get_current_user() )
- return false;
-
- $_updated_user_settings = $all;
- $settings = '';
- foreach ( $all as $k => $v ) {
- $v = preg_replace( '/[^A-Za-z0-9_]+/', '', $v );
- $settings .= $k . '=' . $v . '&';
- }
-
- $settings = rtrim($settings, '&');
-
- update_user_option( $user->ID, 'user-settings', $settings, false );
- update_user_option( $user->ID, 'user-settings-time', time(), false );
-
- return true;
-}
-
-/**
- * Delete the user settings of the current user.
- *
- * @package WordPress
- * @subpackage Option
- * @since 2.7.0
- */
-function delete_all_user_settings() {
- if ( ! $user = wp_get_current_user() )
- return;
-
- update_user_option( $user->ID, 'user-settings', '', false );
- setcookie('wp-settings-' . $user->ID, ' ', time() - 31536000, SITECOOKIEPATH);