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-control.php
<?php /** * Base class for handling controls. Controls are the form fields for the manager. Each * control should be tied to a section. * * @package ButterBean * @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 control class. * * @since 1.0.0 * @access public */ class ButterBean_Control { /** * Stores the manager object. * * @since 1.0.0 * @access public * @var object */ public $manager; /** * Name/ID of the control. * * @since 1.0.0 * @access public * @var string */ public $name = ''; /** * Label for the control. * * @since 1.0.0 * @access public * @var string */ public $label = ''; /** * Description for the control. * * @since 1.0.0 * @access public * @var string */ public $description = ''; /** * ID of the section the control is for. * * @since 1.0.0 * @access public * @var string */ public $section = ''; /** * The setting key for the specific setting the control is tied to. * Controls can have multiple settings attached to them. The default * setting is `default`. * * @since 1.0.0 * @access public * @var string */ public $setting = 'default'; /** * Array of settings if the control has multiple settings. * * @since 1.0.0 * @access public * @var array */ public $settings = array(); /** * The type of control. * * @since 1.0.0 * @access public * @var string */ public $type = 'text'; /** * Form field attributes. * * @since 1.0.0 * @access public * @var array */ public $attr = ''; /** * Choices for fields with multiple choices. * * @since 1.0.0 * @access public * @var array */ public $choices = array(); /** * Priority (order) the control should be output. * * @since 1.0.0 * @access public * @var int */ public $priority = 10; /** * The number of instances created. * * @since 1.0.0 * @access protected * @var int */ protected static $instance_count = 0; /** * The instance of the current control. * * @since 1.0.0 * @access public * @var int */ public $instance_number; /** * A callback function for deciding if a control is active. * * @since 1.0.0 * @access public * @var callable */ public $active_callback = ''; /** * A user role capability required to show the control. * * @since 1.0.0 * @access public * @var string|array */ public $capability = ''; /** * A feature that the current post type must support to show the control. * * @since 1.0.0 * @access public * @var string */ public $post_type_supports = ''; /** * A feature that the current theme must support to show the control. * * @since 1.0.0 * @access public * @var string|array */ public $theme_supports = ''; /** * Stores the JSON data for the control. * * @since 1.0.0 * @access public * @var array() */ public $json = array(); /** * Creates a new control object. * * @since 1.0.0 * @access public * @param object $manager * @param string $name * @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 ( empty( $args['settings'] ) || ! is_array( $args['settings'] ) ) $this->settings['default'] = $name; // Increment the instance count and set the instance number. self::$instance_count += 1; $this->instance_number = self::$instance_count; // Set the active callback function if not set. if ( ! $this->active_callback ) $this->active_callback = array( $this, 'active_callback' ); } /** * Enqueue scripts/styles for the control. * * @since 1.0.0 * @access public * @return void */ public function enqueue() {} /** * Get the value for the setting. * * @since 1.0.0 * @access public * @param string $setting * @return mixed */ public function get_value( $setting = 'default' ) { $setting = $this->get_setting( $setting ); return $setting ? $setting->get_value() : ''; } /** * Returns the setting object associated with this control. If no setting is * found, `false` is returned. * * @since 1.0.0 * @access public * @param string $setting * @return object|bool */ public function get_setting( $setting = 'default' ) { return $this->manager->get_setting( $this->settings[ $setting ] ); } /** * Gets the attributes for the control. * * @since 1.0.0 * @access public * @return array */ public function get_attr() { $defaults = array(); if ( isset( $this->settings[ $this->setting ] ) ) $defaults['name'] = $this->get_field_name( $this->setting ); return wp_parse_args( $this->attr, $defaults ); } /** * Returns the HTML field name for the control. * * @since 1.0.0 * @access public * @param string $setting * @return array */ public function get_field_name( $setting = 'default' ) { return "butterbean_{$this->manager->name}_setting_{$this->settings[ $setting ]}"; } /** * Returns the json array. * * @since 1.0.0 * @access public * @return array */ public function get_json() { $this->to_json(); return $this->json; } /** * Adds custom data to the json array. This data is passed to the Underscore template. * * @since 1.0.0 * @access public * @return void */ public function to_json() { $this->json['manager'] = $this->manager->name; $this->json['section'] = $this->section; $this->json['setting'] = $this->setting; $this->json['settings'] = $this->settings; $this->json['name'] = $this->name; $this->json['label'] = $this->label; $this->json['type'] = $this->type; $this->json['description'] = $this->description; $this->json['choices'] = $this->choices; $this->json['active'] = $this->is_active(); $this->json['value'] = isset( $this->settings[ $this->setting ] ) ? $this->get_value( $this->setting ) : ''; $this->json['field_name'] = isset( $this->settings[ $this->setting ] ) ? $this->get_field_name( $this->setting ) : ''; $this->json['attr'] = ''; foreach ( $this->get_attr() as $attr => $value ) { $this->json['attr'] .= sprintf( '%s="%s" ', esc_html( $attr ), esc_attr( $value ) ); } } /** * Returns whether the control is active. * * @since 1.0.0 * @access public * @return bool */ public function is_active() { $is_active = call_user_func( $this->active_callback, $this ); return apply_filters( 'butterbean_is_control_active', $is_active, $this ); } /** * Default active callback. * * @since 1.0.0 * @access public * @return bool */ public function active_callback() { return true; } /** * Checks if the control should be allowed 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; } /** * Prints Underscore.js template. * * @since 1.0.0 * @access public * @return void */ public function print_template() { ?> <script type="text/html" id="tmpl-butterbean-control-<?php echo esc_attr( $this->type ); ?>"> <?php $this->get_template(); ?> </script> <?php } /** * Gets the Underscore.js template. * * @since 1.0.0 * @access public * @return void */ public function get_template() { butterbean_get_control_template( $this->type ); } }