OwlCyberSecurity - MANAGER
Edit File: class-redux-cdn.php
<?php /** * Redux Framework CDN Container Class * * @author Kevin Provance (kprovance) * @package Redux_Framework/Classes * @noinspection PhpIgnoredClassAliasDeclaration */ // Exit if accessed directly. defined( 'ABSPATH' ) || exit; if ( ! class_exists( 'Redux_CDN', false ) ) { /** * Class Redux_CDN */ class Redux_CDN { /** * Pointer to ReduxFramework object. * * @var object */ public static $parent; /** * Flag to check for set status. * * @var bool */ private static $set; /** * Check for enqueued status of style/script. * * @param string $handle File handle. * @param string $mode Mode to check. * @param bool $is_script Flag for scrip/style. * * @return bool * @noinspection PhpSameParameterValueInspection */ private static function is_enqueued( string $handle, string $mode = 'enqueued', bool $is_script = true ): bool { if ( $is_script ) { return wp_script_is( $handle, $mode ); } else { return wp_style_is( $handle, $mode ); } } /** * Register script/style. * * @param string $handle File handle. * @param string $src_cdn CDN source. * @param array $deps File deps. * @param string $ver File version. * @param mixed $footer_or_media True or 'all'. * @param bool $is_script Script or style. */ private static function register( string $handle, string $src_cdn, array $deps, string $ver, $footer_or_media, bool $is_script = true ) { if ( $is_script ) { wp_register_script( $handle, $src_cdn, $deps, $ver, $footer_or_media ); } else { wp_register_style( $handle, $src_cdn, $deps, $ver, $footer_or_media ); } } /** * Enqueue script or style. * * @param string $handle File handle. * @param string|null $src_cdn CDN source. * @param array $deps File deps. * @param string $ver File version. * @param mixed $footer_or_media True or 'all'. * @param bool $is_script Script or style. */ private static function enqueue( string $handle, ?string $src_cdn, array $deps, string $ver, $footer_or_media, bool $is_script = true ) { if ( $is_script ) { wp_enqueue_script( $handle, $src_cdn, $deps, $ver, $footer_or_media ); } else { wp_enqueue_style( $handle, $src_cdn, $deps, $ver, $footer_or_media ); } } /** * Enqueue/Register CDN * * @param bool $register Register or enqueue. * @param string $handle File handle. * @param string $src_cdn CDN source. * @param array $deps File deps. * @param string $ver File version. * @param mixed $footer_or_media True or 'all'. * @param bool $is_script Script or style. */ private static function cdn( bool $register, string $handle, string $src_cdn, array $deps, string $ver, $footer_or_media, bool $is_script ) { $tran_key = '_style_cdn_is_up'; if ( $is_script ) { $tran_key = '_script_cdn_is_up'; } $cdn_is_up = get_transient( $handle . $tran_key ); if ( $cdn_is_up ) { if ( $register ) { self::register( $handle, $src_cdn, $deps, $ver, $footer_or_media, $is_script ); } else { self::enqueue( $handle, $src_cdn, $deps, $ver, $footer_or_media, $is_script ); } } else { $prefix = '/' === $src_cdn[1] ? 'http:' : ''; // phpcs:ignore WordPress.PHP.NoSilencedErrors $cdn_response = @wp_remote_get( $prefix . $src_cdn ); if ( is_wp_error( $cdn_response ) || 200 !== wp_remote_retrieve_response_code( $cdn_response ) ) { if ( class_exists( 'Redux_Vendor_URL' ) || class_exists( 'Redux_VendorURL' ) ) { if ( class_exists( 'Redux_Vendor_URL' ) ) { $src = Redux_Vendor_URL::get_url( $handle ); } else { $src = Redux_VendorURL::get_url( $handle ); } if ( $register ) { self::register( $handle, $src, $deps, $ver, $footer_or_media, $is_script ); } else { self::enqueue( $handle, $src, $deps, $ver, $footer_or_media, $is_script ); } } elseif ( ! self::is_enqueued( $handle, 'enqueued', $is_script ) ) { $msg = esc_html__( 'Please wait a few minutes, then try refreshing the page. Unable to load some remotely hosted scripts.', 'redux-framework' ); if ( self::$parent->args['dev_mode'] ) { // translators: %s: URL. $msg = sprintf( esc_html__( 'If you are developing offline, please download and install the %s plugin/extension to bypass our CDN and avoid this warning', 'redux-framework' ), '<a href="https://github.com/reduxframework/redux-vendor-support" target="_blank">Redux Vendor Support</a>' ); } // translators: %s: CDN handle. $msg = '<strong>' . esc_html__( 'Redux Framework Warning', 'redux-framework' ) . '</strong><br/>' . sprintf( esc_html__( '%s CDN unavailable. Some controls may not render properly.', 'redux-framework' ), $handle ) . ' ' . $msg; $data = array( 'parent' => self::$parent, 'type' => 'error', 'msg' => $msg, 'id' => $handle . $tran_key, 'dismiss' => false, ); Redux_Admin_Notices::set_notice( $data ); } } else { set_transient( $handle . $tran_key, true, MINUTE_IN_SECONDS * self::$parent->args['cdn_check_time'] ); if ( $register ) { self::register( $handle, $src_cdn, $deps, $ver, $footer_or_media, $is_script ); } else { self::enqueue( $handle, $src_cdn, $deps, $ver, $footer_or_media, $is_script ); } } } } /** * Register/enqueue file from vendor library. * * @param bool $register Register or enqueue. * @param string $handle File handle. * @param array $deps File deps. * @param string $ver File version. * @param mixed $footer_or_media True or 'all'. * @param bool $is_script Script or style. */ private static function vendor_plugin( bool $register, string $handle, array $deps, string $ver, $footer_or_media, bool $is_script ) { if ( class_exists( 'Redux_Vendor_URL' ) || class_exists( 'Redux_VendorURL' ) ) { if ( class_exists( 'Redux_Vendor_URL' ) ) { $src = Redux_Vendor_URL::get_url( $handle ); } else { $src = Redux_VendorURL::get_url( $handle ); } if ( $register ) { self::register( $handle, $src, $deps, $ver, $footer_or_media, $is_script ); } else { self::enqueue( $handle, $src, $deps, $ver, $footer_or_media, $is_script ); } } elseif ( ! self::$set ) { // translators: %s: Vendor support URL. %s: Admin plugins page. $msg = sprintf( esc_html__( 'The %1$s (or extension) is either not installed or not activated and thus, some controls may not render properly. Please ensure that it is installed and %2$s', 'redux-framework' ), '<a href="https://github.com/reduxframework/redux-vendor-support">Vendor Support plugin</a>', '<a href="' . admin_url( 'plugins.php' ) . '">' . esc_html__( 'activated.', 'redux-framework' ) . '</a>' ); $data = array( 'parent' => self::$parent, 'type' => 'error', 'msg' => $msg, 'id' => $handle, 'dismiss' => false, ); Redux_Admin_Notices::set_notice( $data ); self::$set = true; } } /** * Register style CDN or local. * * @param string $handle File handle. * @param string $src_cdn CDN source. * @param array $deps File deps. * @param string $ver File version. * @param string $media True or 'all'. */ public static function register_style( string $handle, string $src_cdn, array $deps = array(), string $ver = '', string $media = 'all' ) { if ( empty( self::$parent ) || self::$parent->args['use_cdn'] ) { self::cdn( true, $handle, $src_cdn, $deps, $ver, $media, false ); } else { self::vendor_plugin( true, $handle, $deps, $ver, $media, false ); } } /** Register script CDN or local. * * @param string $handle File handle. * @param string $src_cdn CDN source. * @param array $deps File deps. * @param string $ver File version. * @param bool $in_footer Script in footer. */ public static function register_script( string $handle, string $src_cdn, array $deps = array(), string $ver = '', bool $in_footer = false ) { if ( empty( self::$parent ) || self::$parent->args['use_cdn'] ) { self::cdn( true, $handle, $src_cdn, $deps, $ver, $in_footer, true ); } else { self::vendor_plugin( true, $handle, $deps, $ver, $in_footer, true ); } } /** * Enqueue style CDN or local. * * @param string $handle File handle. * @param string $src_cdn CDN source. * @param array $deps File deps. * @param string $ver File version. * @param string $media Media type. */ public static function enqueue_style( string $handle, string $src_cdn, array $deps = array(), string $ver = '', string $media = 'all' ) { if ( self::$parent->args['use_cdn'] ) { self::cdn( false, $handle, $src_cdn, $deps, $ver, $media, false ); } else { self::vendor_plugin( false, $handle, $deps, $ver, $media, false ); } } /** * Enqueue script CDN or local. * * @param string $handle File handle. * @param string $src_cdn CDN source. * @param array $deps File seps. * @param string $ver File version. * @param bool $in_footer Script in footer. */ public static function enqueue_script( string $handle, string $src_cdn, array $deps = array(), string $ver = '', bool $in_footer = false ) { if ( self::$parent->args['use_cdn'] ) { self::cdn( false, $handle, $src_cdn, $deps, $ver, $in_footer, true ); } else { self::vendor_plugin( false, $handle, $deps, $ver, $in_footer, true ); } } } } if ( ! class_exists( 'Redux_Vendor_URL' ) && class_exists( 'Redux_Extension_Vendor_Support' ) ) { class_alias( 'Redux_VendorURL', 'Redux_Vendor_URL' ); }