/var/www/hkosl.com/aga/wp-content/plugins/so-widgets-bundle/compat/block-editor/widget-block.php


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
<?php

class SiteOrigin_Widgets_Bundle_Widget_Block {
    
/**
     * Get the singleton instance
     *
     * @return SiteOrigin_Widgets_Bundle_Widget_Block
     */
    
public static function single() {
        static 
$single;
        
        return empty( 
$single ) ? $single = new self() : $single;
    }
    
    public function 
__construct() {
        
add_action'init', array( $this'register_widget_block' ) );
        
add_action'enqueue_block_editor_assets', array( $this'enqueue_widget_block_editor_assets' ) );
    }
    
    public function 
register_widget_block() {
        
register_block_type'sowb/widget-block', array(
            
'render_callback' => array( $this'render_widget_block' ),
        ) );
    }
    
    public function 
enqueue_widget_block_editor_assets() {
        
wp_enqueue_script(
            
'sowb-widget-block',
            
plugins_url'widget-block' SOW_BUNDLE_JS_SUFFIX '.js'__FILE__ ),
            array( 
'wp-editor''wp-blocks''wp-i18n''wp-element''wp-components''wp-compose' ),
            
SOW_BUNDLE_VERSION
        
);
        
        global 
$wp_widget_factory;
        
$so_widgets = array();
        foreach ( 
$wp_widget_factory->widgets as $class => $widget_obj ) {
            if ( ! empty( 
$widget_obj ) && is_object$widget_obj ) && is_subclass_of$widget_obj'SiteOrigin_Widget' ) ) {
                
$so_widgets[] = array(
                    
'name' => preg_replace'/^SiteOrigin /'''$widget_obj->name ),
                    
'class' => $class,
                );
            }
        }
        
        
wp_localize_script(
            
'sowb-widget-block',
            
'sowbBlockEditorAdmin',
            array(
                
'widgets' => $so_widgets,
                
'restUrl' => esc_url_rawrest_url() ),
                
'nonce' => wp_create_nonce'wp_rest' ),
                
'confirmChangeWidget' => __'Selecting a different widget will revert any changes. Continue?''so-widgets-bundle' ),
            )
        );
        if ( 
function_exists'wp_set_script_translations' ) ) {
            
wp_set_script_translations'sowb-widget-block''so-widgets-bundle' );
        }
        
        
$so_widgets_bundle SiteOrigin_Widgets_Bundle::single();
        
// This is to ensure necessary scripts can be enqueued for previews.
        
$so_widgets_bundle->register_general_scripts();
        
$so_widgets_bundle->enqueue_registered_widgets_scripts();
    }
    
    public function 
render_widget_block$attributes ) {
        if ( empty( 
$attributes['widgetClass'] ) ) {
            return 
'<div>'.
                   
__'You need to select a widget type before you\'ll see anything here. :)''so-widgets-bundle' ) .
                   
'</div>';
        }
        
        
$widget_class $attributes['widgetClass'];
        
        global 
$wp_widget_factory;
        
        
$widget = ! empty( $wp_widget_factory->widgets$widget_class ] ) ? $wp_widget_factory->widgets$widget_class ] : false;
        
        
$instance $attributes['widgetData'];
        
        if ( ! empty( 
$widget ) && is_object$widget ) && is_subclass_of$widget'SiteOrigin_Widget' ) ) {
            
$GLOBALS['SITEORIGIN_WIDGET_BLOCK_RENDER'] = true;
            
ob_start();
            
/* @var $widget SiteOrigin_Widget */
            
$instance $widget->update$instance$instance );
            
$widget->widget( array(), $instance );
            
$rendered_widget ob_get_clean();
            unset( 
$GLOBALS['SITEORIGIN_WIDGET_BLOCK_RENDER'] );
        } else {
            return 
'<div>'.
                   
sprintf(
                           
__'Invalid widget class %s. Please make sure the widget has been activated in %sSiteOrigin Widgets%s.''so-widgets-bundle' ),
                       
$widget_class,
                       
'<a href="' admin_url'plugins.php?page=so-widgets-plugins' ) . '">',
                       
'</a>'
                   
) .
                   
'</div>';
        }
        return 
$rendered_widget;
    }
}

SiteOrigin_Widgets_Bundle_Widget_Block::single();