HEX
Server: Apache
System: Linux web5.visualcom.es 4.18.0-477.21.1.lve.1.el8.x86_64 #1 SMP Tue Sep 5 23:08:35 UTC 2023 x86_64
User: ensaco.es (10019)
PHP: 8.3.32
Disabled: opcache_get_status
Upload Files
File: /var/www/vhosts/ensaco.es/httpdocs/wp-content/plugins/wp-smush-pro/core/integrations/class-divi.php
<?php
/**
 * Divi integration module.
 */

namespace Smush\Core\Integrations;

use Smush\Core\Controller;
use Smush\Core\Settings;

if ( ! defined( 'WPINC' ) ) {
	die;
}

/**
 * Class Divi
 */
class Divi extends Controller {
	/**
	 * Constructor to initialize the Divi integration.
	 */
	public function __construct() {
		// Delay hook registration until Divi is fully available.
		$this->register_action( 'after_setup_theme', array( $this, 'register_hooks' ) );
	}

	/**
	 * Register Divi-specific hooks.
	 *
	 * - Always register Divi 4 hook
	 * - Register Divi 5 hook only when active
	 *
	 * @return void
	 */
	public function register_hooks() {
		// Divi 5 support.
		if ( function_exists( 'et_builder_d5_enabled' ) && et_builder_d5_enabled() ) {
			$this->register_action(
				'divi_module_library_modules_dependency_tree',
				array( $this, 'handle_divi_image_sizes_hook' )
			);
		}

		// Divi 4 (and fallback).
		$this->register_action(
			'et_builder_modules_loaded',
			array( $this, 'handle_divi_image_sizes_hook' )
		);
	}

	/**
	 * Handles the removal of Divi's image size calculation hook.
	 *
	 * Removes the `wp_calculate_image_sizes` filter added by Divi when responsive images are disabled
	 * and Smush's CDN with auto-resize is enabled.
	 *
	 * @return void
	 */
	public function handle_divi_image_sizes_hook() {

		if ( ! function_exists( 'et_get_option' ) ) {
			return;
		}

		$smush_settings = Settings::get_instance();
		if (
			'on' !== et_get_option( 'divi_enable_responsive_images' ) &&
			$smush_settings->is_lazyload_active() &&
			$smush_settings->is_auto_resizing_active()
		) {
			remove_filter( 'wp_calculate_image_sizes', 'et_filter_wp_calculate_image_sizes' );
		}
	}
}