HEX
Server: nginx/1.24.0
System: Linux webserver 6.8.0-87-generic #88-Ubuntu SMP PREEMPT_DYNAMIC Sat Oct 11 09:28:41 UTC 2025 x86_64
User: wpuser (1002)
PHP: 8.3.6
Disabled: NONE
Upload Files
File: /opt/wpsites/datainsightnow.com/wp-content/plugins/essential-blocks/includes/Core/Blocks.php
<?php

namespace EssentialBlocks\Core;

use EssentialBlocks\Traits\HasSingletone;

class Blocks {
	use HasSingletone;

	private $enabled_blocks = array();
	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 function all() {
		$all_blocks = $this->settings->get( 'essential_all_blocks', array() );
		$_defaults  = $this->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 ) {
						$block->register( $assets_manager );
					}
				}

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