| Server IP : www.new.bangkokfinder.com / Your IP : 172.70.188.38 Web Server : nginx/1.20.1 System : Linux new 4.15.0-159-generic #167-Ubuntu SMP Tue Sep 21 08:55:05 UTC 2021 x86_64 User : bangkokfinder ( 1000) PHP Version : 7.4.33 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /home/bangkokfinder/www/wp-content/plugins/generateblocks/includes/ |
Upload File : |
<?php
/**
* This file handles the dynamic parts of our blocks.
*
* @package GenerateBlocks
*/
if ( ! defined( 'ABSPATH' ) ) {
exit; // Exit if accessed directly.
}
/**
* Render the dynamic aspects of our blocks.
*
* @since 1.2.0
*/
class GenerateBlocks_Render_Block {
/**
* Instance.
*
* @access private
* @var object Instance
* @since 1.2.0
*/
private static $instance;
/**
* Initiator.
*
* @since 1.2.0
* @return object initialized object of class.
*/
public static function get_instance() {
if ( ! isset( self::$instance ) ) {
self::$instance = new self();
}
return self::$instance;
}
/**
* Constructor.
*/
public function __construct() {
add_action( 'init', array( $this, 'register_blocks' ) );
if ( version_compare( $GLOBALS['wp_version'], '5.9', '>' ) ) {
add_filter( 'render_block', array( $this, 'filter_rendered_blocks' ), 10, 3 );
add_filter( 'render_block', array( $this, 'late_filter_rendered_blocks' ), 20, 3 );
}
}
/**
* Register our dynamic blocks.
*
* @since 1.2.0
*/
public function register_blocks() {
$container_args = [
'title' => esc_html__( 'Container', 'generateblocks' ),
'render_callback' => [ 'GenerateBlocks_Block_Container', 'render_block' ],
];
if ( version_compare( $GLOBALS['wp_version'], '6.1.0', '<' ) ) {
$container_args['editor_script'] = 'generateblocks';
$container_args['editor_style'] = 'generateblocks';
} else {
$container_args['editor_script_handles'] = [ 'generateblocks' ];
$container_args['editor_style_handles'] = [ 'generateblocks' ];
}
register_block_type(
'generateblocks/container',
$container_args
);
register_block_type(
'generateblocks/grid',
array(
'title' => esc_html__( 'Grid', 'generateblocks' ),
'render_callback' => [ 'GenerateBlocks_Block_Grid', 'render_block' ],
'uses_context' => array(
'generateblocks/query',
'generateblocks/queryId',
'generateblocks/inheritQuery',
),
)
);
register_block_type(
'generateblocks/query-loop',
array(
'title' => esc_html__( 'Query loop', 'generateblocks' ),
'render_callback' => [ 'GenerateBlocks_Block_Grid', 'render_block' ],
'provides_context' => array(
'generateblocks/query' => 'query',
'generateblocks/queryId' => 'uniqueId',
'generateblocks/inheritQuery' => 'inheritQuery',
),
)
);
register_block_type(
'generateblocks/button-container',
array(
'title' => esc_html__( 'Buttons', 'generateblocks' ),
'render_callback' => [ 'GenerateBlocks_Block_Button_Container', 'render_block' ],
)
);
register_block_type(
'generateblocks/headline',
array(
'title' => esc_html__( 'Headline', 'generateblocks' ),
'render_callback' => [ 'GenerateBlocks_Block_Headline', 'render_block' ],
)
);
register_block_type(
'generateblocks/button',
array(
'title' => esc_html__( 'Button', 'generateblocks' ),
'render_callback' => [ 'GenerateBlocks_Block_Button', 'render_block' ],
'uses_context' => array(
'generateblocks/query',
'generateblocks/queryId',
'generateblocks/inheritQuery',
),
)
);
register_block_type(
'generateblocks/image',
array(
'title' => esc_html__( 'Image', 'generateblocks' ),
'render_callback' => [ 'GenerateBlocks_Block_Image', 'render_block' ],
'uses_context' => array(
'generateblocks/query',
'generateblocks/queryId',
'postType',
'postId',
),
)
);
register_block_type_from_metadata(
GENERATEBLOCKS_DIR . '/dist/blocks/text',
[
'render_callback' => [ 'GenerateBlocks_Block_Text', 'render_block' ],
]
);
register_block_type_from_metadata(
GENERATEBLOCKS_DIR . '/dist/blocks/element',
[
'render_callback' => [ 'GenerateBlocks_Block_Element', 'render_block' ],
]
);
register_block_type_from_metadata(
GENERATEBLOCKS_DIR . '/dist/blocks/media',
[
'render_callback' => [ 'GenerateBlocks_Block_Media', 'render_block' ],
]
);
register_block_type_from_metadata(
GENERATEBLOCKS_DIR . '/dist/blocks/shape',
[
'render_callback' => [ 'GenerateBlocks_Block_Shape', 'render_block' ],
]
);
register_block_type_from_metadata(
GENERATEBLOCKS_DIR . '/dist/blocks/query',
[
'render_callback' => [ 'GenerateBlocks_Block_Query', 'render_block' ],
]
);
register_block_type_from_metadata(
GENERATEBLOCKS_DIR . '/dist/blocks/looper',
[
'render_callback' => [ 'GenerateBlocks_Block_Looper', 'render_block' ],
]
);
register_block_type_from_metadata(
GENERATEBLOCKS_DIR . '/dist/blocks/query-no-results',
[
'render_callback' => [ 'GenerateBlocks_Block_Query_No_Results', 'render_block' ],
]
);
register_block_type_from_metadata(
GENERATEBLOCKS_DIR . '/dist/blocks/query-page-numbers',
[
'render_callback' => [ 'GenerateBlocks_Block_Query_Page_Numbers', 'render_block' ],
]
);
register_block_type_from_metadata(
GENERATEBLOCKS_DIR . '/dist/blocks/loop-item',
[
'render_callback' => [ 'GenerateBlocks_Block_Loop_Item', 'render_block' ],
]
);
}
/**
* Filter existing rendered blocks.
*
* @since 1.5.0
* @param string $block_content The block content.
* @param array $block The block data.
* @param WP_Block $instance Block instance.
*/
public function filter_rendered_blocks( $block_content, $block, $instance ) {
$attributes = isset( $block['attrs'] ) ? $block['attrs'] : null;
// Don't output if no dynamic link exists.
if ( isset( $attributes ) && ! empty( $attributes['dynamicLinkType'] ) && ! empty( $attributes['dynamicLinkRemoveIfEmpty'] ) ) {
$dynamic_link = GenerateBlocks_Dynamic_Content::get_dynamic_url( $attributes, $instance );
if ( ! $dynamic_link ) {
return '';
}
}
return $block_content;
}
/**
* Filter existing rendered blocks. Fires later than `filter_rendered_blocks`.
*
* @since 2.0.0
* @param string $block_content The block content.
* @param array $block The block data.
* @param WP_Block $instance Block instance.
*/
public function late_filter_rendered_blocks( $block_content, $block, $instance ) {
$block_name = $block['blockName'] ?? '';
$attributes = $block['attrs'] ?? [];
if ( 'generateblocks/media' === $block_name ) {
$attachment_id = $attributes['mediaId'] ?? 0;
if ( ! $attachment_id ) {
$p = new WP_HTML_Tag_Processor( $block_content );
if ( $p->next_tag(
[
'tag_name' => 'img',
]
) ) {
$attachment_id = (int) $p->get_attribute( 'data-media-id' ) ?? 0;
}
}
if ( $attachment_id > 0 && 'img' === $attributes['tagName'] ) {
$context = current_filter();
if ( ! generateblocks_str_contains( $block_content, ' width=' ) && ! generateblocks_str_contains( $block_content, ' height=' ) ) {
$block_content = wp_img_tag_add_width_and_height_attr( $block_content, $context, $attachment_id );
}
// Add 'srcset' and 'sizes' attributes if applicable.
if ( ! generateblocks_str_contains( $block_content, ' srcset=' ) ) {
$block_content = wp_img_tag_add_srcset_and_sizes_attr( $block_content, $context, $attachment_id );
}
// Add loading optimization attributes if applicable.
$block_content = wp_img_tag_add_loading_optimization_attrs( $block_content, $context );
}
}
return $block_content;
}
}
GenerateBlocks_Render_Block::get_instance();