Duffer Derek

Current Path : /home/b/f/x/bfxleof/www/wp-content/plugins/social-warfare/lib/options/
Upload File :
Current File : /home/b/f/x/bfxleof/www/wp-content/plugins/social-warfare/lib/options/SWP_Option.php

<?php

/**
 * The parent class for all Option_X types.
 *
 * This class is used to create each individual option throughout the options page.
 * It provides the framework for each of type of option that is available: input,
 * select, checkbox, and textarea. Each of these options is instantiated through
 * their respective class and then added to the option page section.
 *
 * @package   SocialWarfare\Functions\Social-Networks
 * @copyright Copyright (c) 2018, Warfare Plugins, LLC
 * @license   GPL-3.0+
 * @since     3.0.0   | Created | 02 MAR 2017
 * @access    public
 *
 */
class SWP_Option extends SWP_Option_Abstract {


    /**
    * The type of HTML input element.
    *
    * Valid types are:
    * text, select, checkbox, textarea
    *
    * @var string $type
    *
    */
    public $type;


    /**
    * The CSS class representing the size (width) of the input.
    *
    * @see set_size()
    * @var string $size
    *
    */
    public $size;


    /**
    * The key for this option in the database.
    *
    * @var string $key
    *
    */
    public $key;


    /**
    * The default value for the given input.
    *
    * @var mixed $default. See the corresponding class's set_default() method.
    *
    */
    public $default = false;


    /**
    * The string of HTML which creates the element.
    *
    * @var string $html
    *
    */
    public $html;


    /**
    * Boolean indicating whether the plugin is registered or not.
    *
    * @var bool $swp_registration
    *
    */
    public $swp_registration;


    /**
    * The required constructor for PHP classes.
    *
    * @since  3.0.0 | 02 MAR 2018 | Created
    * @param  string $name The display name for the toggle.
    * @param  string $key The database key for the user setting.
    * @return void
    *
    */
    public function __construct( $name, $key ) {
        parent::__construct( $name );

        $this->swp_registration = true;
        $this->set_key( $key );
        $this->parent_size = ' sw-col-940 ';
    }

    /**
     * Child classes will add a call to apply_filters( 'swp_options_page_values')
     * to add their own values as valid options.
     *
     */
     public function register_available_values( $values ) {
         $values[$this->key] = array(
             'type' => 'none',
             'values'   => array()
         );

         return $values;
     }


    /**
    * Fetches the css class to match a given size given as a string.
    *
    * @since  3.0.0 | 02 MAR 2018 | Created
    * @param  string $size Optional: The size of the element using SWP sizing.
    * @return object $this Allows for method chaining.
    *
    */
    protected function get_css_size( $size = '' ) {
        $size = '' === $size ? $this->size : $size;

        $map = [
            'two-fourths'   => ' sw-col-460 ',
            'two-thirds'    => ' sw-col-300 ',
            'four-fourths'  => ' sw-col-620 ',
        ];

        if ( empty($size) ) :
            return $map['two-thirds'];
        endif;

        return $map[$size];
    }


    /**
    * Get the pre-defined value of the option.
    *
    * @since  3.0.0 | April 15 2018 | Created
    * @param  void
    * @return mixed The current value of this option.
    *
    */
    protected function get_value() {
        if ( isset($this->value) ) {
            return $this->value;
        }

        if ( false != SWP_Utility::get_option( $this->key ) ) {
            return SWP_Utility::get_option( $this->key );
        }

        return $this->default;
    }


    /**
    * Creates HTML based on the option's properties and user settings.
    *
    * @since  3.0.0 | 02 MAR 2018 | Created
    * @param  void
    * @return void
    *
    */
    public function render_HTML() {
        //* Intentionally left blank.
        //* Each child class should override this method.
        $this->_throw( "Should not be called from the parent class." );
    }


    /**
    * Set the default value of this option. This value will be used until the plugin user changes the value
    * to something else and saves the options.
    *
    * @since  3.0.0 | 02 MAR 2018 | Created
    * @param  mixed The default value will vary based on the kind of option being generated.
    * @return object $this Allows for method chaining.
    *
    */
    public function set_default( $value ) {
        global $swp_user_options;
        $this->default = $value;

        // Add this to our global list of defaults
        add_filter( 'swp_options_page_defaults', array( $this , 'register_default' ) );
        add_filter( 'swp_options_page_values', array( $this, 'register_available_values' ) );

        return $this;
    }


    /**
     * Register Default
     *
     * Add this to a global list of defaults so that if an option isn't set in the database,
     * then the method that pulls out the user option can just fall back to using this option's
     * default value.
     *
     * @since  3.0.0 | 24 APR 2018 | Created
     * @param  array  $defaults The array of defaults
     * @return array  $defaults The modifed array of defaults.
     *
     */
    public function register_default( $defaults = array() ) {
        $defaults[$this->key] = $this->default;
        return $defaults;
    }


    /**
    * Force a child option to depend on a parent option.
    *
    * If the parent's value is one of the values passed in as $values,
    * the option will be visible ont the Settings page. Otherwise, the option
    * is hidden until the dependency is set to that value.
    *
    * @since  3.0.0 | 02 MAR 2018 | Created
    * @param  string $parent The parent option's key.
    * @param  array $values Values which enable this option to exist.
    * @return object $this Allows for method chaining.
    *
    */
    public function set_dependency( $parent, $values ) {
        if ( !is_string( $parent ) ) {
            $this->_throw( 'Argument $parent needs to be a string matching the key of another option.' );
        }

        if ( !isset( $values) ) {
            $this->_throw( 'Dependency values must passed in as the second argument.' );
        }

        if ( !is_array( $values ) ) {
            $values = array( $values );

        }

        $this->dependency = new stdClass();
        $this->dependency->parent = $parent;
        $this->dependency->values = $values;

        return $this;
    }


    /**
    * Assign the database key for this element.
    *
    * @since  3.0.0 | 02 MAR 2018 | Created
    * @param  string $key The key which correlates to the input.
    * @return object $this The calling instance, for method chaining.
    *
    */
    public function set_key( $key ) {
        if ( !is_string( $key ) ) {
            $this->_throw( 'Please provide a key to the database as a string.' );
        }

        $this->key = $key;

        return $this;
    }


    /**
    * Some option types have multiple sizes that will determine their visual layout on the option
    * page. This setter allows you to declare which one you want to use.
    *
    * @since  3.0.0 | 02 MAR 2018 | Created
    * @param  string The size of the option on the page (e.g. 'two-thirds').
    * @return object $this The calling instance, for method chaining.
    *
    */
    public function set_size( $size, $parent_size = ' sw-col-940 ') {

        if ( 0 !== strpos( $size, 'sw-col' ) ) {
            $sizes = PHP_EOL;


            $this->_throw( "Please enter a valid size. The string must begin with 'sw-col-', followed by either: 300, 460, or 620.'" );
        }

        $this->size = $size;
        $this->parent_size = $parent_size;

        return $this;
    }


    /**
     * Defines the placeholder for text inputs.
     *
     * @since  3.0.0 | 02 MAR 2018 | Created
     * @param  string $placeholder The text to display as a placeholder.
     * @return object $this The calling instance, for method chaining.
     *
     */
    public function set_placeholder( $placeholder ) {
        if (!is_string( $placeholder ) && !is_numeric( $placeholder ) ) :
            $this->_throw( "Please set a string or number for the placeholder." );
        endif;

        $this->placeholder = $placeholder;

        return $this;
    }


    /**
     * Creates the HTML placeholder attribute if a placeholder is defined.
     *
     * @since  3.0.0 | 02 MAR 2018 | Created
     * @param  void
     * @return string $placeholder The qualified HTML placeholder attribute.
     */
    public function render_placeholder() {
        if ( empty( $this->placeholder) ) :
            return "";
        endif;

        return ' placeholder="' . $this->placeholder . '"';

    }

}

Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists