| Server IP : 47.82.179.145 / Your IP : 216.73.217.120 Web Server : nginx/1.26.3 System : Linux iZt4n9czhka2zvqfajdlr2Z 6.8.0-63-generic #66-Ubuntu SMP PREEMPT_DYNAMIC Fri Jun 13 20:25:30 UTC 2025 x86_64 User : www ( 1001) PHP Version : 8.3.30 Disable Function : passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,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_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv MySQL : OFF | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /www/wwwroot/scuipturepactory.com/wp-content/themes/plover/core/src/Services/Blocks/ |
Upload File : |
<?php
namespace Plover\Core\Services\Blocks;
use Plover\Core\Assets\Scripts;
use Plover\Core\Plover;
use Plover\Core\Services\Blocks\Contract\Block;
use Plover\Core\Services\Blocks\Contract\HasBlockStyles;
use Plover\Core\Services\Blocks\Contract\HasSupports;
use Plover\Core\Services\Blocks\Contract\Renderable;
use Plover\Core\Services\Blocks\Contract\RenderableBlock;
/**
* @since 1.0.0
*/
class Blocks {
/**
* Plover core instance.
*
* @var Plover
*/
protected $core;
/**
* Extended block supports.
*
* @var array
*/
protected $block_supports = [];
/**
* @param Plover $core
* @param Scripts $scripts
*/
public function __construct( Plover $core, Scripts $scripts ) {
$this->core = $core;
$scripts->enqueue_editor_asset( 'plover-block-supports', array(
'ver' => 'core',
'src' => $core->core_url( 'assets/js/block-supports/index.min.js' ),
'path' => $core->core_path( 'assets/js/block-supports/index.min.js' ),
'asset' => $core->core_path( 'assets/js/block-supports/index.min.asset.php' )
) );
add_filter( 'plover_core_editor_data', function ( $data ) {
$data['blockSupports'] = apply_filters(
'plover_core_extended_block_supports',
$this->block_supports
);
return $data;
} );
// Server side register ploverBlockID attribute
add_filter( 'register_block_type_args', function ( $args, $name ) {
if ( isset( $args['attributes'] ) ) {
$args['attributes'] = array_merge( $args['attributes'], array(
'ploverBlockID' => array(
'type' => 'string',
)
) );
}
return $args;
}, 10, 2 );
}
/**
* Extend a block.
*
* @param $block
*
* @return void
*/
public function extend( $block ) {
$blockName = $block instanceof Block ? $block->name() : '';
if ( $block instanceof HasSupports ) {
$this->extend_block_supports(
$blockName,
$block->supports(),
$block->override()
);
}
if ( $block instanceof HasBlockStyles ) {
foreach ( $block->styles() as $style ) {
register_block_style( $blockName, $style );
}
}
if ( $block instanceof Renderable ) {
add_filter( 'render_block', [ $block, 'render' ], 11, 2 );
}
if ( $block instanceof RenderableBlock ) {
add_filter( "render_block_{$blockName}", [ $block, 'render' ], 11, 2 );
}
}
/**
* Extend block support.
*
* @param string $blockName
* @param $supports
* @param bool $override
*
* @return void
*/
public function extend_block_supports( string $blockName, $supports, bool $override = false ) {
if ( $override ) {
$this->block_supports[ $blockName ] = $supports;
return;
}
$this->block_supports[ $blockName ] = array_merge(
$this->block_supports[ $blockName ] ?? array(),
$supports
);
}
}