<?php

/**
 * Use Any Font interoperability handler.
 *
 * @link https://wordpress.org/plugins/use-any-font/
 *
 * @since 2.2.9
 */
class Types_Interop_Handler_Use_Any_Font implements Types_Interop_Handler_Interface {

	private static $instance;

	public static function initialize() {

		if ( null === self::$instance ) {
			self::$instance = new self();
		}

		// Not giving away the instance on purpose.

	}


	private function __clone() {
	}


	private function __construct() {
		$this->maybe_unregister_uaf_assets();
	}


	/**
	 * Fix a compatibility issue with conflicting JS assets.
	 *
	 * Implemented for Use Any Font 4.6.
	 *
	 * On Edit Post Type page, UAF enqueues its own instance of jQuery UI Validation plugin which overwrites the one
	 * from Types, with added additional validation rules.
	 *
	 * Turns out, UAF enqueues everything everywhere without care although it has only a single admin page.
	 * In general, it has very bad coding practices (unprefixed function names, etc.)
	 *
	 * Here, we do what UAF should do on its own: Check if we're on its settings page and if
	 * we're not, avoid loading its assets.
	 *
	 * @since 2.2.9
	 */
	function maybe_unregister_uaf_assets() {
		$main_controller = Types_Main::get_instance();
		$is_uaf_settings_page = (
			$main_controller->get_plugin_mode() === Types_Main::MODE_ADMIN && toolset_getget( 'page' ) === 'uaf_settings_page'
		);

		if ( ! $is_uaf_settings_page ) {
			remove_action( 'admin_print_scripts', 'adminjslibs' );
			remove_action( 'admin_print_styles', 'adminCsslibs' );
		}
	}

}
