Server IP : 162.213.251.212 / Your IP : 52.14.56.234 [ Web Server : LiteSpeed System : Linux business55.web-hosting.com 4.18.0-553.lve.el8.x86_64 #1 SMP Mon May 27 15:27:34 UTC 2024 x86_64 User : allssztx ( 535) PHP Version : 8.1.31 Disable Function : NONE Domains : 1 Domains MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /home/allssztx/bestvalleywater.com/wp-content/themes/woodmart/inc/widgets/ |
Upload File : |
<?php // phpcs:disable /** * WordPress Widgets Helper Class * * https://github.com/sksmatt/WordPress-Widgets-Helper-Class * * By @sksmatt | www.mattvarone.com * * @package WordPress * @subpackage WPH Widget Class * @author Matt Varone * @license GPLv2 * @version 1.6 */ if ( ! class_exists( 'WPH_Widget' ) ) { class WPH_Widget extends WP_Widget { public function get_layered_get_categories() { global $wpdb; $categories = $wpdb->get_results( " SELECT t.term_id AS id, t.name AS post_title, t.slug AS post_url, parent AS parent FROM {$wpdb->prefix}terms t LEFT JOIN {$wpdb->prefix}term_taxonomy tt ON t.term_id = tt.term_id WHERE tt.taxonomy = 'product_cat' ORDER BY name" ); return $categories; } public function get_layered_get_attributes_options() { $attribute_array = array(); $attribute_taxonomies = wc_get_attribute_taxonomies(); if ( $attribute_taxonomies ) { foreach ( $attribute_taxonomies as $tax ) { $attribute_array[ $tax->attribute_name ] = $tax->attribute_name; } } return $attribute_array; } public function get_layered_get_categories_options() { $categories_array = array( esc_html__( 'All categories', 'woodmart' ) => 'all', ); $categories = $this->get_layered_get_categories(); if ( ! empty( $categories ) ) { foreach ( $categories as $cat ) { $title = $cat->post_title; $id = ' (ID:' . $cat->id . ')'; if ( property_exists( $cat, 'parent' ) && $cat->parent ) { $title = $title . $id . ' (Parent ID:' . $cat->parent . ')'; } $categories_array[ $title . $id ] = $cat->id; } } return $categories_array; } public function is_widget_preview() { if ( apply_filters( 'woodmart_hide_content_on_widget_preview', true ) && defined( 'REST_REQUEST' ) && REST_REQUEST ) { return true; } return false; } /** * Create Widget * * Creates a new widget and sets it's labels, description, fields and options * * @access public * @param array * @return void * @since 1.0 */ function create_widget( $args ) { // settings some defaults $defaults = array( 'label' => '', 'description' => '', 'fields' => array(), 'options' => array(), 'slug' => '', ); // parse and merge args with defaults $args = wp_parse_args( $args, $defaults ); // extract each arg to its own variable extract( $args, EXTR_SKIP ); // set the widget vars $this->slug = ( $slug ) ? $slug : sanitize_title( $label ); $this->fields = $fields; // check options $this->options = array( 'classname' => $this->slug, 'description' => $description ); if ( ! empty( $options ) ) $this->options = array_merge( $this->options, $options ); // call WP_Widget to create the widget parent::__construct( $this->slug, $label, $this->options ); } /** * Form * * Creates the settings form. * * @access private * @param array * @return void * @since 1.0 */ function form( $instance ) { $this->instance = $instance; echo $this->create_fields(); //Dynamic data escaped while generating the variable. } /** * Update Fields * * @access private * @param array * @param array * @return array * @since 1.0 */ function update( $new_instance, $old_instance ) { $instance = $old_instance; $this->before_update_fields(); foreach ( $this->fields as $key ) { if ( isset( $key['id'] ) ) { $slug = $key['id']; } elseif ( isset( $key['param_name'] ) ) { $slug = $key['param_name']; } else { continue; } if ( isset( $key['validate'] ) ) { if ( false === $this->validate( $key['validate'], $new_instance[$slug] ) ) return $instance; } if ( isset( $key['filter'] ) ) { $instance[ $slug ] = $this->filter( $key['filter'], $new_instance[ $slug ] ); } elseif ( isset( $new_instance[ $slug ] ) ) { if ( is_array( $new_instance[ $slug ] ) ) { $instance[ $slug ] = $new_instance[ $slug ]; } else { $instance[ $slug ] = strip_tags( $new_instance[ $slug ] ); } } else { $instance[ $slug ] = false; } } return $this->after_validate_fields( $instance ); } /** * Before Validate Fields * * Allows to hook code on the update. * * @access public * @param string * @return string * @since 1.6 */ function before_update_fields() { return; } /** * After Validate Fields * * Allows to modify the output after validating the fields. * * @access public * @param string * @return string * @since 1.6 */ function after_validate_fields( $instance = "" ) { return $instance; } /** * Validate * * @access private * @param string * @param string * @return boolean * @since 1.0 */ function validate( $rules, $value ) { $rules = explode( '|', $rules ); if ( empty( $rules ) || count( $rules ) < 1 ) return true; foreach ( $rules as $rule ) { if ( false === $this->do_validation( $rule, $value ) ) return false; } return true; } /** * Filter * * @access private * @param string * @param string * @return void * @since 1.0 */ function filter( $filters, $value ) { $filters = explode( '|', $filters ); if ( empty( $filters ) || count( $filters ) < 1 ) return $value; foreach ( $filters as $filter ) $value = $this->do_filter( $filter, $value ); return $value; } /** * Do Validation Rule * * @access private * @param string * @param string * @return boolean * @since 1.0 */ function do_validation( $rule, $value = "" ) { switch ( $rule ) { case 'alpha': return ctype_alpha( $value ); break; case 'alpha_numeric': return ctype_alnum( $value ); break; case 'alpha_dash': return preg_match( '/^[a-z0-9-_]+$/', $value ); break; case 'numeric': return ctype_digit( $value ); break; case 'integer': return ( bool ) preg_match( '/^[\-+]?[0-9]+$/', $value ); break; case 'boolean': return is_bool( $value ); break; case 'email': return is_email( $value ); break; case 'decimal': return ( bool ) preg_match( '/^[\-+]?[0-9]+\.[0-9]+$/', $value ); break; case 'natural': return ( bool ) preg_match( '/^[0-9]+$/', $value ); return; case 'natural_not_zero': if ( ! preg_match( '/^[0-9]+$/', $value ) ) return false; if ( $value == 0 ) return false; return true; return; default: if ( method_exists( $this, $rule ) ) return $this->$rule( $value ); else return false; break; } } /** * Do Filter * * @access private * @param string * @param string * @return boolean * @since 1.0 */ function do_filter( $filter, $value = "" ) { switch ( $filter ) { case 'strip_tags': return $value; break; case 'wp_strip_all_tags': return wp_strip_all_tags( $value ); break; case 'esc_attr': return esc_attr( $value ); break; case 'esc_url': return esc_url( $value ); break; case 'esc_textarea': return esc_textarea( $value ); break; default: if ( method_exists( $this, $filter ) ) return $this->$filter( $value ); else return $value; break; } } /** * Create Fields * * Creates each field defined. * * @access private * @param string * @return string * @since 1.0 */ function create_fields( $out = "" ) { $out = $this->before_create_fields( $out ); if ( ! empty( $this->fields ) ) { foreach ( $this->fields as $key ) { if ( empty( $key ) ) continue; $out .= $this->create_field( $key ); } } $out = $this->after_create_fields( $out ); return $out; } /** * Before Create Fields * * Allows to modify code before creating the fields. * * @access public * @param string * @return string * @since 1.0 */ function before_create_fields( $out = "" ) { return $out; } /** * After Create Fields * * Allows to modify code after creating the fields. * * @access public * @param string * @return string * @since 1.0 */ function after_create_fields( $out = "" ) { return $out; } /** * Create Fields * * @access private * @param string * @param string * @return string * @since 1.0 */ function create_field( $key, $out = "" ) { /* Set Defaults */ $key['std'] = isset( $key['std'] ) ? $key['std'] : ""; $key['std'] = isset( $key['default'] ) ? $key['default'] : $key['std']; $slug = (isset($key['id'])) ? $key['id'] : $key['param_name']; $heading = isset( $key['heading'] ) ? $key['heading'] : ''; $key['name'] = (isset($key['name'])) ? $key['name'] : $heading; if(isset($key['skip_in']) && $key['skip_in'] == 'widget') { return; } if(isset($key['value'])) { $key['fields'] = $key['value']; } if ( isset( $key['true_state'] ) && isset( $key['false_state'] ) ) { $key['fields'] = array( $key['true_state'] => $key['true_state'], $key['false_state'] => $key['false_state'], ); } if(!isset($key['class'])) { $key['class'] = 'widefat'; } if(isset($key['description'])) { $key['desc'] = $key['description']; } if ( isset( $this->instance[$slug] ) ) $key['value'] = empty( $this->instance[$slug] ) ? '' : $this->instance[$slug]; else unset( $key['value'] ); /* Set field id and name */ $key['_id'] = $this->get_field_id( $slug ); $key['_name'] = $this->get_field_name( $slug ); /* Set field type */ if ( ! isset( $key['type'] ) ) $key['type'] = 'text'; $key['type'] = $this->woodmart_change_type($key['type']); /* Prefix method */ $field_method = 'create_field_' . str_replace( '-', '_', $key['type'] ); $attr = '<div class="wd-widget-field wd-type-' . $key['type'] . '"'; if ( isset( $key['param_name'] ) && isset( $key['value'] ) ) { $attr .= ' data-param_name="' . $key['param_name'] . '"'; $attr .= ' data-value="' . $key['value'] . '"'; } if ( isset( $key['dependency'] ) ) { $attr .= ' data-dependency=\'' . wp_json_encode( $key['dependency'] ) . '\''; } $attr .= '>'; /* Run method */ if ( method_exists( $this, $field_method ) ) { return $attr . $this->$field_method( $key ) . '</div>'; } } private function woodmart_change_type($key) { switch ($key) { case 'textfield': $key = 'text'; break; case 'vc_link': $key = 'text'; break; case 'href': $key = 'text'; break; case 'textarea_html': $key = 'textarea'; break; case 'woodmart_switch': $key = 'dropdown'; break; case 'woodmart_button_set': $key = 'dropdown'; break; case 'woodmart_slider': $key = 'dropdown'; break; case 'woodmart_image_select': $key = 'dropdown'; break; case 'woodmart_dropdown': $key = 'dropdown'; break; } return $key; } /** * select2 field * * @access private * @param array * @param string * @return string * @since 1.5 */ function create_field_select2( $key, $out = "" ) { $value = ''; if ( isset( $key['std'] ) ) { $value = $key['std']; } if ( isset( $key['value'] ) ) { $value = $key['value']; } if ( ! is_array( $value ) ) { $value = explode( ',', $value ); } if ( isset( $key['callback'] ) && method_exists( $this, $key['callback'] ) ) { $key['fields'] = $this->{$key['callback']}(); } if ( isset( $key['callback_global'] ) && function_exists( $key['callback_global'] ) ) { $key['fields'] = $key['callback_global'](); } wp_enqueue_script( 'select2', WOODMART_ASSETS . '/js/libs/select2.full.min.js', array(), woodmart_get_theme_info( 'Version' ), true ); wp_enqueue_script( 'woodmart-admin-options', WOODMART_ASSETS . '/js/options.js', array(), WOODMART_VERSION, true ); ob_start(); ?> <?php echo $this->create_field_label( $key['name'], $key['_id'] ); ?> <select name="<?php echo esc_attr( $key['_name'] ); ?>[]" id="<?php echo esc_attr( $key['_id'] ); ?>" class="xts-select xts-select2" multiple> <?php foreach ( $key['fields'] as $field => $option ) : ?> <?php $selected = false; if ( is_array( $value ) && in_array( $option, $value, false ) ) { $selected = true; } ?> <option value="<?php echo esc_attr( $option ); ?>" <?php selected( true, $selected ); ?>> <?php echo esc_html( $field ); ?> </option> <?php endforeach; ?> </select> <?php return ob_get_clean(); } /** * dropdown field * * @access private * @param array * @param string * @return string * @since 1.5 */ function create_field_dropdown( $key, $out = "" ) { $out .= $this->create_field_label( $key['name'], $key['_id'] ) . '<br/>'; if ( isset( $key['callback'] ) && method_exists( $this, $key['callback'] ) ) { $key['fields'] = $this->{$key['callback']}(); } if ( isset( $key['callback_global'] ) && function_exists( $key['callback_global'] ) ) { $key['fields'] = $key['callback_global'](); } $selected = isset( $key['value'] ) ? $key['value'] : $key['std']; $out .= '<select id="' . esc_attr( $key['_id'] ) . '" name="' . esc_attr( $key['_name'] ) . '" data-value="' . esc_attr( $selected ) . '" '; if ( isset( $key['class'] ) ) $out .= 'class="' . esc_attr( $key['class'] ) . '" '; $out .= '> '; if ( isset( $key['fields'] ) ) { foreach ( $key['fields'] as $field => $option ) { $out .= '<option value="' . esc_attr( $option ) . '" '; if ( esc_attr( $selected ) == $option ) $out .= ' selected="selected" '; $out .= '> '.esc_html( $field ).'</option>'; } } $out .= ' </select> '; if ( isset( $key['desc'] ) ) $out .= '<br/><small class="description">'.wp_kses( $key['desc'], true ).'</small>'; return $out; } /** * attach image field * * @access private * @param array * @param string * @return string * @since 1.5 */ function create_field_attach_image( $key, $out = "" ) { wp_enqueue_script( 'woodmart-admin-options', WOODMART_ASSETS . '/js/options.js', array(), WOODMART_VERSION, true ); wp_enqueue_script( 'woodmart-admin-scripts', WOODMART_ASSETS . '/js/admin.js', array(), WOODMART_VERSION, true ); $value = isset( $key['value'] ) ? $key['value'] : $key['std']; $url = $style = ''; if(isset($value)) { $url = wp_get_attachment_url($value); } if($url == '') { $style = 'display:none;'; } $out .= $this->create_field_label( $key['name'], $key['_id'] ) . '<br/>'; $out .= '<img src="'.$url.'" class="woodmart-image-src" style="'.$style.'" />'; $out .= '<input type="hidden" '; if ( isset( $key['class'] ) ) $out .= 'class="woodmart-image-upload ' . esc_attr( $key['class'] ) . '" '; $out .= 'id="' . esc_attr( $key['_id'] ) . '" name="' . esc_attr( $key['_name'] ) . '" value="' . esc_attr( $value ) . '" '; if ( isset( $key['size'] ) ) $out .= 'size="' . esc_attr( $key['size'] ) . '" '; $out .= ' />'; $out .= '<button class="button woodmart-image-upload-btn">' .__('Upload image', 'woodmart') . '</button>'; if ( isset( $key['desc'] ) ) $out .= '<br/><small class="description">'.esc_html( $key['desc'] ).'</small>'; return $out; } /** * Attach images field * * @access private * @since 1.5 * * @param string * @param array * * @return string */ function create_field_attach_images( $key, $out = '' ) { wp_enqueue_script( 'woodmart-admin-options', WOODMART_ASSETS . '/js/options.js', array(), WOODMART_VERSION, true ); wp_enqueue_script( 'woodmart-admin-scripts', WOODMART_ASSETS . '/js/admin.js', array(), WOODMART_VERSION, true ); $value = isset( $key['value'] ) ? $key['value'] : $key['std']; $ids = explode( ',', $value ); ob_start(); ?> <div class="xts-upload_list-control"> <?php echo $this->create_field_label( $key['name'], $key['_id'] ); ?> <div class="xts-upload-preview"> <?php foreach ( $ids as $id ) : ?> <?php if ( $id ) : ?> <div data-attachment_id="<?php echo esc_attr( $id ); ?>"> <?php echo wp_get_attachment_image( $id, 'thumbnail' ); // phpcs:ignore ?> <a href="#" class="xts-remove"> <span class="xts-i-close"></span> </a> </div> <?php endif; ?> <?php endforeach; ?> </div> <div class="xts-upload-btns"> <button class="xts-btn xts-upload-btn xts-i-import"> <?php esc_html_e( 'Upload', 'woodmart' ); ?> </button> <button class="xts-btn xts-btn-remove xts-color-warning"> <?php esc_html_e( 'Clear all', 'woodmart' ); ?> </button> <input type="hidden" class="xts-upload-input-id" name="<?php echo esc_attr( $key['_name'] ); ?>" value="<?php echo esc_attr( $value ); ?>" /> </div> <?php if ( isset( $key['desc'] ) ) : ?> <small class="description"> <?php echo esc_html( $key['desc'] ); ?> </small> <?php endif; ?> </div> <?php return $out . ob_get_clean(); } /** * Field Text * * @access private * @param array * @param string * @return string * @since 1.5 */ function create_field_text( $key, $out = "" ) { $out .= $this->create_field_label( $key['name'], $key['_id'] ) . '<br/>'; $out .= '<input type="text" '; if ( isset( $key['class'] ) ) $out .= 'class="' . esc_attr( $key['class'] ) . '" '; $value = isset( $key['value'] ) ? $key['value'] : $key['std']; $out .= 'id="' . esc_attr( $key['_id'] ) . '" name="' . esc_attr( $key['_name'] ) . '" value="' . esc_attr( $value ) . '" '; if ( isset( $key['size'] ) ) $out .= 'size="' . esc_attr( $key['size'] ) . '" '; $out .= ' />'; if ( isset( $key['desc'] ) ) $out .= '<br/><small class="description">'.esc_html( $key['desc'] ).'</small>'; return $out; } /** * Field Textarea * * @access private * @param array * @param string * @return string * @since 1.5 */ function create_field_textarea( $key, $out = "" ) { $out .= $this->create_field_label( $key['name'], $key['_id'] ) . '<br/>'; $out .= '<textarea '; if ( isset( $key['class'] ) ) $out .= 'class="' . esc_attr( $key['class'] ) . '" '; if ( isset( $key['rows'] ) ) $out .= 'rows="' . esc_attr( $key['rows'] ) . '" '; if ( isset( $key['cols'] ) ) $out .= 'cols="' . esc_attr( $key['cols'] ) . '" '; $value = isset( $key['value'] ) ? $key['value'] : $key['std']; $out .= 'id="'. esc_attr( $key['_id'] ) .'" name="' . esc_attr( $key['_name'] ) . '">'.esc_html( $value ); $out .= '</textarea>'; if ( isset( $key['desc'] ) ) $out .= '<br/><small class="description">'.esc_html( $key['desc'] ).'</small>'; return $out; } /** * Field Checkbox * * @access private * @param array * @param string * @return string * @since 1.5 */ function create_field_checkbox( $key, $out = "" ) { $out .= $this->create_field_label( $key['name'], $key['_id'] ); $out .= ' <input type="checkbox" '; if ( isset( $key['class'] ) ) $out .= 'class="checkbox ' . esc_attr( $key['class'] ) . '"'; $out .= 'id="' . esc_attr( $key['_id'] ) . '" name="' . esc_attr( $key['_name'] ) . '" value="1" '; if ( ( isset( $key['value'] ) && $key['value'] == 1 ) OR ( ! isset( $key['value'] ) && $key['std'] == 1 ) ) $out .= ' checked="checked" '; $out .= ' /> '; if ( isset( $key['desc'] ) ) $out .= '<br/><small class="description">'.esc_html( $key['desc'] ).'</small>'; return $out; } /** * Field Select * * @access private * @param array * @param string * @return string * @since 1.5 */ function create_field_select( $key, $out = "" ) { $out .= $this->create_field_label( $key['name'], $key['_id'] ) . '<br/>'; $out .= '<select id="' . esc_attr( $key['_id'] ) . '" name="' . esc_attr( $key['_name'] ) . '" '; if ( isset( $key['class'] ) ) $out .= 'class="' . esc_attr( $key['class'] ) . '" '; $out .= '> '; $selected = isset( $key['value'] ) ? $key['value'] : $key['std']; foreach ( $key['fields'] as $field => $option ) { $out .= '<option value="' . esc_attr( $option['value'] ) . '" '; if ( esc_attr( $selected ) == $option['value'] ) $out .= ' selected="selected" '; $out .= '> '.esc_html( $option['name'] ).'</option>'; } $out .= ' </select> '; if ( isset( $key['desc'] ) ) $out .= '<br/><small class="description">'.esc_html( $key['desc'] ).'</small>'; return $out; } /** * Field Select with Options Group * * @access private * @param array * @param string * @return string * @since 1.5 */ function create_field_select_group( $key, $out = "" ) { $out .= $this->create_field_label( $key['name'], $key['_id'] ) . '<br/>'; $out .= '<select id="' . esc_attr( $key['_id'] ) . '" name="' . esc_attr( $key['_name'] ) . '" '; if ( isset( $key['class'] ) ) $out .= 'class="' . esc_attr( $key['class'] ) . '" '; $out .= '> '; $selected = isset( $key['value'] ) ? $key['value'] : $key['std']; foreach ( $key['fields'] as $group => $fields ) { $out .= '<optgroup label="' . $group . '">'; foreach ( $fields as $field => $option ) { $out .= '<option value="' . esc_attr( $option['value'] ) . '" '; if ( esc_attr( $selected ) == $option['value'] ) $out .= ' selected="selected" '; $out .= '> ' . esc_html( $option['name'] ) . '</option>'; } $out .= '</optgroup>'; } $out .= '</select>'; if ( isset( $key['desc'] ) ) $out .= '<br/><small class="description">'.esc_html( $key['desc'] ).'</small>'; return $out; } /** * Field Number * * @access private * @param array * @param string * @return string * @since 1.5 */ function create_field_number( $key, $out = "" ) { $out .= $this->create_field_label( $key['name'], $key['_id'] ) . '<br/>'; $out .= '<input type="number" '; if ( isset( $key['class'] ) ) $out .= 'class="' . esc_attr( $key['class'] ) . '" '; $value = isset( $key['value'] ) ? $key['value'] : $key['std']; $out .= 'id="' . esc_attr( $key['_id'] ) . '" name="' . esc_attr( $key['_name'] ) . '" value="' . esc_attr( $value ) . '" '; if ( isset( $key['size'] ) ) $out .= 'size="' . esc_attr( $key['size'] ) . '" '; $out .= ' />'; if ( isset( $key['desc'] ) ) $out .= '<br/><small class="description">'.esc_html( $key['desc'] ).'</small>'; return $out; } /** * Field Label * * @access private * @param string * @param string * @return string * @since 1.5 */ function create_field_label( $name = "", $id = "" ) { return '<label for="' . esc_attr( $id ). '">' . esc_html( $name ) . ':</label>'; } } // class }