Server IP : 66.29.132.124 / Your IP : 18.118.19.89 Web Server : LiteSpeed System : Linux business141.web-hosting.com 4.18.0-553.lve.el8.x86_64 #1 SMP Mon May 27 15:27:34 UTC 2024 x86_64 User : wavevlvu ( 1524) PHP Version : 7.4.33 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /home/wavevlvu/misswavenigeria.com/wp-content/plugins/siteorigin-panels/inc/ |
Upload File : |
<?php class SiteOrigin_Panels_Widget_Shortcode { public static $text_widgets = array( 'SiteOrigin_Widget_Editor_Widget', 'SiteOrigin_Panels_Widgets_Layout', 'WP_Widget_Black_Studio_TinyMCE', 'WP_Widget_Text', ); public static function init() { add_shortcode( 'siteorigin_widget', 'SiteOrigin_Panels_Widget_Shortcode::shortcode' ); } public static function add_filters() { add_filter( 'siteorigin_panels_the_widget_html', 'SiteOrigin_Panels_Widget_Shortcode::widget_html', 10, 4 ); } public static function remove_filters() { remove_filter( 'siteorigin_panels_the_widget_html', 'SiteOrigin_Panels_Widget_Shortcode::widget_html' ); } /** * This shortcode just displays a widget based on the given arguments * * @return string */ public static function shortcode( $attr, $content ) { $attr = shortcode_atts( array( 'class' => false, 'id' => '', ), $attr, 'siteorigin_widget' ); $attr['class'] = html_entity_decode( $attr['class'] ); $attr['class'] = apply_filters( 'siteorigin_panels_widget_class', $attr['class'] ); $the_widget = ! empty( $attr['class'] ) ? SiteOrigin_Panels::get_widget_instance( $attr['class'] ) : null; if ( ! empty( $the_widget ) ) { $data = self::decode_data( $content ); $widget_args = ! empty( $data['args'] ) ? $data['args'] : array(); $widget_instance = ! empty( $data['instance'] ) ? $data['instance'] : array(); $widget_args = self::escape_widget_data( $widget_args ); $widget_instance = self::escape_widget_data( $widget_instance ); $widget_args = wp_parse_args( array( 'before_widget' => '', 'after_widget' => '', 'before_title' => '<h3 class="widget-title">', 'after_title' => '</h3>', ), $widget_args ); ob_start(); $the_widget->widget( $widget_args, $widget_instance ); return ob_get_clean(); } } public static function escape_widget_data( $data ) { try { $escaped_data = array(); foreach ( $data as $key => $value ) { if ( is_array( $value ) ) { $escaped_data[ $key ] = self::escape_widget_data( $value ); } else { $escaped_data[ $key ] = esc_html( $value ); } } return $escaped_data; } catch (Exception $e) { // There was an error, return empty array. return array(); } } /** * Get the shortcode for a specific widget * * @return string */ public static function get_shortcode( $widget, $args, $instance ) { unset( $instance['panels_info'] ); $data = array( 'instance' => $instance, 'args' => $args, ); // This allows other plugins to implement their own shortcode. For example, to work when Page Builder isn't active $shortcode_name = apply_filters( 'siteorigin_panels_cache_shortcode', 'siteorigin_widget', $widget, $instance, $args ); $shortcode = '[' . $shortcode_name . ' '; $shortcode .= 'class="' . htmlentities( preg_replace( '/\\\\+/', '\\\\\\\\', get_class( $widget ) ) ) . '"]'; $shortcode .= self::encode_data( $data ); $shortcode .= '[/' . $shortcode_name . ']'; return $shortcode; } /** * A filter to replace widgets with */ public static function widget_html( $html, $widget, $args, $instance ) { if ( empty( $GLOBALS['SITEORIGIN_PANELS_POST_CONTENT_RENDER'] ) || // Don't try create HTML if there already is some ! empty( $html ) || ! is_object( $widget ) || // Skip for known text based widgets in_array( get_class( $widget ), self::$text_widgets ) ) { return $html; } return self::get_shortcode( $widget, $args, $instance ); } public static function encode_data( $data ) { return '<input type="hidden" value="' . esc_textarea( wp_json_encode( $data, JSON_UNESCAPED_UNICODE ) ) . '" />'; } public static function decode_data( $string ) { preg_match( '/value="([^"]*)"/', trim( $string ), $matches ); if ( ! empty( $matches[1] ) ) { $data = json_decode( html_entity_decode( $matches[1], ENT_QUOTES ), true ); return $data; } else { return array(); } } }