HEX
Server: Apache
System: Linux www 5.10.0-10-amd64 #1 SMP Debian 5.10.84-1 (2021-12-08) x86_64
User: root (0)
PHP: 8.2.1
Disabled: 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
Upload Files
File: /mnt/drbd/www/edenhouse/wp-content/plugins/essential-blocks/includes/Core/Blocks.php
<?php

namespace EssentialBlocks\Core;

use EssentialBlocks\Utils\Settings;
use EssentialBlocks\Traits\HasSingletone;

class Blocks
{
    use HasSingletone;

    private $enabled_blocks = [  ];
    private $settings       = null;
    private $dir            = '';

    public function __construct( $settings )
    {
        $this->settings       = $settings;
        $this->enabled_blocks = $this->enabled();

        $this->dir = ESSENTIAL_BLOCKS_BLOCK_DIR;
    }

    public function is_enabled( $key = null )
    {
        if ( empty( $key ) ) {
            return true;
        }

        return isset( $this->enabled_blocks[ $key ] );
    }

    public static function all()
    {
        $all_blocks = Settings::get( 'essential_all_blocks', [  ] );
        $_defaults  = self::defaults();

        if ( empty( $all_blocks ) ) {
            return $_defaults;
        }

        if ( count( $_defaults ) > count( $all_blocks ) ) {
            return array_merge( $_defaults, $all_blocks );
        }

        return $all_blocks;
    }

    public function enabled()
    {
        $blocks         = $this->all();
        $enabled_blocks = array_filter(
            $blocks,
            function ( $a ) {
                return isset( $a[ 'visibility' ] ) && $a[ 'visibility' ] === 'true' ? $a : false;
            }
        );
        return $enabled_blocks;
    }

    public static function defaults( $no_object = true, $no_static_data = true )
    {
        $_blocks = require ESSENTIAL_BLOCKS_DIR_PATH . 'includes/blocks.php';
        $_blocks = apply_filters( 'essential_blocks_block_lists', $_blocks );

        $_blocks = array_map(
            function ( $block ) use ( $no_object, $no_static_data ) {
                if ( $no_object ) {
                    unset( $block[ 'object' ] );
                }
                if ( $no_static_data ) {
                    unset( $block[ 'demo' ] );
                    unset( $block[ 'doc' ] );
                    unset( $block[ 'icon' ] );
                    unset( $block[ 'status' ] );
                }

                return $block;
            },
            $_blocks
        );

        return $_blocks;
    }

    public function register_blocks( $assets_manager )
    {
        $blocks = $this->enabled();

        if ( empty( $blocks ) ) {
            return;
        }

        $_defaults = $this->defaults( false );

        foreach ( $blocks as $block_name => $block ) {
            if ( isset( $_defaults[ $block_name ][ 'object' ] ) ) {
                $block_object = $_defaults[ $block_name ][ 'object' ];

                if ( ! $block_object->can_enable() ) {
                    continue;
                }

                if ( method_exists( $block_object, 'load_dependencies' ) ) {
                    $block_object->load_dependencies();
                }

                if ( method_exists( $block_object, 'inner_blocks' ) ) {
                    $_inner_blocks = $block_object->inner_blocks();
                    foreach ( $_inner_blocks as $block_name => $block ) {
                        if ( method_exists( $block, 'load_dependencies' ) ) {
                            $block->load_dependencies();
                        }

                        $block->register( $assets_manager );
                    }
                }

                $block_object->register( $assets_manager );
            }
        }
    }
}