• File: class-gutenberg-saved.php
  • Full Path: /home/matthif/www/wp-content/plugins/visual-portfolio/classes/class-gutenberg-saved.php
  • Date Modified: 12/12/2023 4:36 AM
  • File size: 2.62 KB
  • MIME-type: text/x-php
  • Charset: utf-8
<?php
/**
 * Gutenberg block.
 *
 * @package visual-portfolio
 */

if ( ! defined'ABSPATH' ) ) {
    exit;
}

/**
 * Class Visual_Portfolio_Gutenberg_Saved_Block
 */
class Visual_Portfolio_Gutenberg_Saved_Block {
    
/**
     * Registered controls, that will be used in Gutenberg block.
     *
     * @var array
     */
    
public $registered_controls = array();

    
/**
     * Visual_Portfolio_Gutenberg_Saved_Block constructor.
     */
    
public function __construct() {
        
add_action'init', array( $this'register_block' ), 11 );
        
add_action'admin_init', array( $this'register_block_layouts_editor' ), 11 );
    }

    
/**
     * Register Block.
     */
    
public function register_block() {
        if ( ! 
function_exists'register_block_type_from_metadata' ) ) {
            return;
        }

        
register_block_type_from_metadata(
            
visual_portfolio()->plugin_path 'gutenberg/block-saved',
            array(
                
'render_callback' => array( $this'block_render' ),
            )
        );

        
// Fallback.
        
register_block_type_from_metadata(
            
'nk/visual-portfolio',
            array(
                
'render_callback' => array( $this'block_render' ),
                
'attributes'      => array(
                    
'id' => array(
                        
'type' => 'string',
                    ),
                    
'align' => array(
                        
'type' => 'string',
                    ),
                    
'className' => array(
                        
'type' => 'string',
                    ),
                    
'anchor' => array(
                        
'type' => 'string',
                    ),
                ),
            )
        );
    }

    
/**
     * Register Block for Layouts Editor.
     */
    
public function register_block_layouts_editor() {
        global 
$pagenow;

        if (
            
'post.php' === $pagenow && isset( $_GET['post'] ) && 'vp_lists' === get_post_type$_GET['post'] ) ||
            
'post-new.php' === $pagenow && isset( $_GET['post_type'] ) && 'vp_lists' === $_GET['post_type']
        ) {
            
register_block_type_from_metadata(
                
visual_portfolio()->plugin_path 'gutenberg/layouts-editor/block'
            
);
        }
    }

    
/**
     * Block output
     *
     * @param array $attributes - block attributes.
     *
     * @return string
     */
    
public function block_render$attributes ) {
        
$attributes array_merge(
            array(
                
'id'        => '',
                
'align'     => '',
                
'className' => '',
            ),
            
$attributes
        
);

        if ( ! 
$attributes['id'] ) {
            return 
'';
        }

        
// WPML support.
        // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedHooknameFound
        
$attributes['id'] = apply_filters'wpml_object_id'$attributes['id'], 'vp_lists'true );

        
$class_name 'wp-block-visual-portfolio';

        
$wrapper_attributes get_block_wrapper_attributes(
            array(
                
'class' => $class_name,
            )
        );

        return 
sprintf'<div %1$s>%2$s</div>'$wrapper_attributesVisual_Portfolio_Get::get( array( 'id' => $attributes['id'] ) ) );
    }
}
new 
Visual_Portfolio_Gutenberg_Saved_Block();