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/FontLoader.php
<?php
namespace EssentialBlocks\Core;

use EssentialBlocks\Traits\HasSingletone;

/**
 * Load google fonts.
 */

// Exit if accessed directly.
if ( ! defined( 'ABSPATH' ) ) {
	exit;
}

class FontLoader {
	use HasSingletone;

	/**
	 * Google fonts to enqueue
	 *
	 * @access public
	 * @var array
	 */
	public static $gfonts      = array();
	private static $block_name = array();

	/**
	 * The Constructor.
	 */
	public function __construct( $block_name ) {
		self::$block_name = $block_name;
		// Get font from each block loaded in page
		add_filter( 'render_block', array( $this, 'get_fonts_on_render_block' ), 10, 2 );
		// add_filter( 'wp_enqueue_scripts', [$this, 'eb_enqueue_fonts'], 15 );
		add_action( 'wp_footer', array( $this, 'eb_enqueue_fonts' ), 15 );
	}

	/**
	 * Run font loader after all block render
	 *
	 * @since 4.0.2
	 * @access public
	 */
	public function eb_enqueue_fonts() {
		$this->fonts_loader();
	}

	/**
	 * Get Attributes on block render
	 *
	 * @since 4.0.2
	 * @access public
	 */
	public function get_fonts_on_render_block( $block_content, $block ) {
		if ( isset( $block['attrs'] ) ) {
			if ( 'essential-blocks' === self::$block_name || $block['blockName'] === self::$block_name ) {
				$fonts        = self::get_fonts_family( $block['attrs'] );
				self::$gfonts = array_unique( array_merge( self::$gfonts, $fonts ) );
			}
		}

		return $block_content;
	}

	/**
	 * Generate Font family from Attributes
	 *
	 * @since 4.0.0
	 * @access public
	 */
	public static function get_fonts_family( $attributes ) {
		$keys             = preg_grep( '/^(\w+)FontFamily/i', array_keys( $attributes ), 0 );
		$googleFontFamily = array();
		foreach ( $keys as $key ) {
			$googleFontFamily[ $attributes[ $key ] ] = $attributes[ $key ];
		}
		return $googleFontFamily;
	}

	/**
	 * Load fonts.
	 *
	 * @since 4.0.0
	 * @access public
	 */
	public function fonts_loader( $handle_name = 'eb-block-fonts' ) {
		$googleFont = true;
		if ( 'essential-blocks' === self::$block_name ) {
			$eb_settings = get_option( 'eb_settings', array() );
			$googleFont  = ! empty( $eb_settings['googleFont'] ) ? $eb_settings['googleFont'] : 'true';
		}

		if ( 'false' !== $googleFont ) {
			$fonts = self::$gfonts;

			if ( ( $key = array_search( 'Default', $fonts ) ) !== false ) {
				unset( $fonts[ $key ] );
			}
			if ( ! empty( $fonts ) ) {
				$gfonts      = '';
				$gfonts_attr = ':100,100italic,200,200italic,300,300italic,400,400italic,500,500italic,600,600italic,700,700italic,800,800italic,900,900italic';
				foreach ( $fonts as $font ) {
					$gfonts .= str_replace( ' ', '+', trim( $font ) ) . $gfonts_attr . '|';
				}
				if ( ! empty( $gfonts ) ) {
					$query_args = array(
						'family' => $gfonts,
					);
					wp_register_style(
						$handle_name,
						add_query_arg( $query_args, '//fonts.googleapis.com/css' ),
						array(),
                        ESSENTIAL_BLOCKS_VERSION
					);
					wp_enqueue_style( $handle_name );
				}
				// Reset.
				$gfonts = '';
			}
		}
	}
}