Current File : /home/jeconsul/public_html/wp-content/plugins/presto-player/inc/Services/Compatibility.php
<?php

namespace PrestoPlayer\Services;

class Compatibility {

	public function register() {
		// wp rocket compat
		add_action( 'rocket_exclude_js', array( $this, 'excludeComponentsFile' ) );

		// siteground optimize
		add_action( 'sgo_js_minify_exclude', array( $this, 'excludeHandle' ) );

		// godaddy's shitty feedback modal
		add_action( 'admin_enqueue_scripts', array( $this, 'goDaddyModal' ), 99 );

		// allow our player html
		add_filter( 'wp_kses_allowed_html', array( $this, 'allowHtml' ), 11 );

		// allow our css variables in safe css.
		add_filter( 'safe_style_css', array( $this, 'safeCSS' ) );
	}

	/**
	 * Allows our css variables to be outputted wp_kses_allowed_html
	 *
	 * @param array $styles Array of allowed styles.
	 * @return array
	 */
	public function safeCSS( $styles ) {
		$player_styles = array(
			'--plyr-color-main',
			'--plyr-captions-background',
			'--presto-player-border-radius',
			'--presto-player-logo-width',
			'--presto-player-email-border-radius',
			'--presto-player-button-border-radius',
			'--presto-player-button-color',
			'--presto-player-button-text',
			'--presto-player-cta-background-opacity',
			'--plyr-audio-controls-background',
			'--plyr-audio-control-color',
			'--plyr-range-thumb-background',
			'--plyr-range-fill-background',
		);
		return array_merge( $player_styles, $styles );
	}

	/**
	 * Lets us use our player tag in content.
	 *
	 * @param  array $tags Allowed tags.
	 * @return array
	 */
	public function allowHtml( $tags ) {
		$tags['presto-player'] = array(
			'direction'   => true,
			'css'         => true,
			'skin'        => true,
			'icon-url'    => true,
			'id'          => true,
			'src'         => true,
			'css'         => true,
			'class'       => true,
			'preload'     => true,
			'poster'      => true,
			'playsinline' => true,
			'autoplay'    => true,
		);
		return $tags;
	}

	public function goDaddyModal() {
		global $post_type;
		if ( 'pp_video_block' == $post_type ) {
			wp_dequeue_script( 'nextgen-feedback-modal' );
		}
	}

	/**
	 * Exclude module by file
	 *
	 * @param array $excluded_js
	 * @return array
	 */
	public function excludeComponentsFile( $excluded_js ) {
		$excluded_js[] = str_replace( home_url(), '', PRESTO_PLAYER_PLUGIN_URL . 'dist/components/web-components/web-components.esm.js' );

		return $excluded_js;
	}

	/**
	 * Exclude module by handle
	 *
	 * @param array $handles
	 * @return array
	 */
	public function excludeHandle( $handles ) {
		$handles[] = 'presto-components';
		return $handles;
	}
}