index of
/
home
/
thefkyzp
/
www
/
wp-content
/
plugins
/
ocean-extra
/
includes
/
metabox
/
butterbean
/
inc
/
File: /home/thefkyzp/www/wp-content/plugins/ocean-extra/includes/metabox/butterbean/inc/class-setting.php
<?php /** * Base setting class for the fields manager. * * @package ButterBean * @subpackage Admin * @author Justin Tadlock <justin@justintadlock.com> * @copyright Copyright (c) 2015-2016, Justin Tadlock * @link https://github.com/justintadlock/butterbean * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html */ /** * Base setting class. * * @since 1.0.0 * @access public */ class ButterBean_Setting { /** * The type of setting. * * @since 1.0.0 * @access public * @var string */ public $type = 'default'; /** * Stores the manager object. * * @since 1.0.0 * @access public * @var object */ public $manager; /** * Name/ID of the setting. * * @since 1.0.0 * @access public * @var string */ public $name = ''; /** * Value of the setting. * * @since 1.0.0 * @access public * @var string */ public $value = ''; /** * Default value of the setting. * * @since 1.0.0 * @access public * @var string */ public $default = ''; /** * Sanitization/Validation callback function. * * @since 1.0.0 * @access public * @var string */ public $sanitize_callback = ''; /** * A user role capability required to save the setting. * * @since 1.0.0 * @access public * @var string|array */ public $capability = ''; /** * A feature that the current post type must support to save the setting. * * @since 1.0.0 * @access public * @var string */ public $post_type_supports = ''; /** * A feature that the current theme must support to save the setting. * * @since 1.0.0 * @access public * @var string|array */ public $theme_supports = ''; /** * Creates a new setting object. * * @since 1.0.0 * @access public * @param object $manager * @param string $cap * @param array $args * @return void */ public function __construct( $manager, $name, $args = array() ) { foreach ( array_keys( get_object_vars( $this ) ) as $key ) { if ( isset( $args[ $key ] ) ) $this->$key = $args[ $key ]; } $this->manager = $manager; $this->name = $name; if ( $this->sanitize_callback ) add_filter( "butterbean_{$this->manager->name}_sanitize_{$this->name}", $this->sanitize_callback, 10, 2 ); } /** * Gets the value of the setting. * * @since 1.0.0 * @access public * @return mixed */ public function get_value() { $value = get_post_meta( $this->manager->post_id, $this->name, true ); return ! $value && butterbean()->is_new_post ? $this->default : $value; } /** * Gets the posted value of the setting. * * @since 1.0.0 * @access public * @return mixed */ public function get_posted_value() { $value = ''; if ( isset( $_POST[ $this->get_field_name() ] ) ) $value = $_POST[ $this->get_field_name() ]; return $this->sanitize( $value ); } /** * Retuns the correct field name for the setting. * * @since 1.0.0 * @access public * @return string */ public function get_field_name() { return "butterbean_{$this->manager->name}_setting_{$this->name}"; } /** * Sanitizes the value of the setting. * * @since 1.0.0 * @access public * @return mixed */ public function sanitize( $value ) { return apply_filters( "butterbean_{$this->manager->name}_sanitize_{$this->name}", $value, $this ); } /** * Saves the value of the setting. * * @since 1.0.0 * @access public * @return void */ public function save() { if ( ! $this->check_capabilities() ) return; $old_value = $this->get_value(); $new_value = $this->get_posted_value(); // If we have don't have a new value but do have an old one, delete it. if ( ! $new_value && $old_value ) delete_post_meta( $this->manager->post_id, $this->name ); // If the new value doesn't match the old value, set it. else if ( $new_value !== $old_value ) update_post_meta( $this->manager->post_id, $this->name, $new_value ); } /** * Checks if the setting should be saved at all. * * @since 1.0.0 * @access public * @return bool */ public function check_capabilities() { if ( $this->capability && ! call_user_func_array( 'current_user_can', (array) $this->capability ) ) return false; if ( $this->post_type_supports && ! call_user_func_array( 'post_type_supports', array( get_post_type( $this->manager->post_id ), $this->post_type_supports ) ) ) return false; if ( $this->theme_supports && ! call_user_func_array( 'theme_supports', (array) $this->theme_supports ) ) return false; return true; } }