PluginProbe
QuadMenu – Mega Menu / 3.3.8
QuadMenu – Mega Menu v3.3.8
3.3.8 3.3.7 3.3.6 trunk 1.8.4 1.8.5 1.8.7 1.8.8 1.8.9 1.9.0 1.9.2 1.9.3 1.9.4 1.9.5 1.9.6 1.9.7 1.9.8 1.9.9 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 All 88 releases
quadmenu / redux / ReduxCore / inc / class.redux_cdn.php

class.redux_cdn.php in QuadMenu – Mega Menu 3.3.8, at redux/ReduxCore/inc/class.redux_cdn.php

161 lines 6.1 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 /**
4 * Redux Framework CDN Container Class
5 *
6 * @author Kevin Provance (kprovance)
7 * @package Redux_Framework
8 * @subpackage Core
9 */
10
11 // Exit if accessed directly
12 if ( ! defined( 'ABSPATH' ) ) {
13 exit;
14 }
15
16 if ( ! class_exists( 'ReduxLegacy_CDN' ) ) {
17 class ReduxLegacy_CDN {
18 public static $_parent;
19 private static $_set;
20
21 private static function is_enqueued( $handle, $list = 'enqueued', $is_script = true ) {
22 if ( $is_script ) {
23 wp_script_is( $handle, $list );
24 } else {
25 wp_style_is( $handle, $list );
26 }
27 }
28
29 private static function _register( $handle, $src_cdn, $deps, $ver, $footer_or_media, $is_script = true ) {
30 if ( $is_script ) {
31 wp_register_script( $handle, $src_cdn, $deps, $ver, $footer_or_media );
32 } else {
33 wp_register_style( $handle, $src_cdn, $deps, $ver, $footer_or_media );
34 }
35 }
36
37 private static function _enqueue( $handle, $src_cdn, $deps, $ver, $footer_or_media, $is_script = true ) {
38 if ( $is_script ) {
39 wp_enqueue_script( $handle, $src_cdn, $deps, $ver, $footer_or_media );
40 } else {
41 wp_enqueue_style( $handle, $src_cdn, $deps, $ver, $footer_or_media );
42 }
43 }
44
45 private static function _cdn( $register, $handle, $src_cdn, $deps, $ver, $footer_or_media, $is_script = true ) {
46 $tran_key = '_style_cdn_is_up';
47 if ( $is_script ) {
48 $tran_key = '_script_cdn_is_up';
49 }
50
51 $cdn_is_up = get_transient( $handle . $tran_key );
52 if ( $cdn_is_up ) {
53 if ( $register ) {
54 self::_register( $handle, $src_cdn, $deps, $ver, $footer_or_media, $is_script );
55 } else {
56 self::_enqueue( $handle, $src_cdn, $deps, $ver, $footer_or_media, $is_script );
57 }
58 } else {
59
60 $prefix = $src_cdn[1] == '/' ? 'http:' : '';
61 $cdn_response = @wp_remote_get( $prefix . $src_cdn );
62
63 if ( is_wp_error( $cdn_response ) || wp_remote_retrieve_response_code( $cdn_response ) != '200' ) {
64 if ( class_exists( 'ReduxLegacy_VendorURL' ) ) {
65 $src = ReduxLegacy_VendorURL::get_url( $handle );
66
67 if ( $register ) {
68 self::_register( $handle, $src, $deps, $ver, $footer_or_media, $is_script );
69 } else {
70 self::_enqueue( $handle, $src, $deps, $ver, $footer_or_media, $is_script );
71 }
72 } elseif ( ! self::is_enqueued( $handle, 'enqueued', $is_script ) ) {
73 $msg = __( 'Please wait a few minutes, then try refreshing the page. Unable to load some remotely hosted scripts.', 'redux-framework' );
74 if ( self::$_parent->args['dev_mode'] ) {
75 $msg = sprintf( __( 'If you are developing offline, please download and install the <a href="%s" target="_blank">Redux Vendor Support</a> plugin/extension to bypass the our CDN and avoid this warning', 'redux-framework' ), 'https://github.com/ReduxFrameworkLegacy/redux-vendor-support' );
76 }
77
78 $msg = '<strong>' . __( 'Redux Framework Warning', 'redux-framework' ) . '</strong><br/>' . sprintf( __( '%s CDN unavailable. Some controls may not render properly.', 'redux-framework' ), $handle ) . ' ' . $msg;
79
80 $data = array(
81 'parent' => self::$_parent,
82 'type' => 'error',
83 'msg' => $msg,
84 'id' => $handle . $tran_key,
85 'dismiss' => false,
86 );
87
88 ReduxLegacy_Admin_Notices::set_notice( $data );
89 }
90 } else {
91 set_transient( $handle . $tran_key, true, MINUTE_IN_SECONDS * self::$_parent->args['cdn_check_time'] );
92
93 if ( $register ) {
94 self::_register( $handle, $src_cdn, $deps, $ver, $footer_or_media, $is_script );
95 } else {
96 self::_enqueue( $handle, $src_cdn, $deps, $ver, $footer_or_media, $is_script );
97 }
98 }
99 }
100 }
101
102 private static function _vendor_plugin( $register, $handle, $src_cdn, $deps, $ver, $footer_or_media, $is_script = true ) {
103 if ( class_exists( 'ReduxLegacy_VendorURL' ) ) {
104 $src = ReduxLegacy_VendorURL::get_url( $handle );
105
106 if ( $register ) {
107 self::_register( $handle, $src, $deps, $ver, $footer_or_media, $is_script );
108 } else {
109 self::_enqueue( $handle, $src, $deps, $ver, $footer_or_media, $is_script );
110 }
111 } elseif ( ! self::$_set ) {
112 $msg = sprintf( __( 'The <a href="%1$s">Vendor Support plugin</a> (or extension) is either not installed or not activated and thus, some controls may not render properly. Please ensure that it is installed and <a href="%2$s">activated</a>', 'redux-framework' ), 'https://github.com/ReduxFrameworkLegacy/redux-vendor-support', admin_url( 'plugins.php' ) );
113
114 $data = array(
115 'parent' => self::$_parent,
116 'type' => 'error',
117 'msg' => $msg,
118 'id' => $handle,
119 'dismiss' => false,
120 );
121
122 ReduxLegacy_Admin_Notices::set_notice( $data );
123
124 self::$_set = true;
125 }
126 }
127
128 public static function register_style( $handle, $src_cdn = false, $deps = array(), $ver = false, $media = 'all' ) {
129 if ( self::$_parent->args['use_cdn'] ) {
130 self::_cdn( true, $handle, $src_cdn, $deps, $ver, $media, $is_script = false );
131 } else {
132 self::_vendor_plugin( true, $handle, $src_cdn, $deps, $ver, $media, $is_script = false );
133 }
134 }
135
136 public static function register_script( $handle, $src_cdn = false, $deps = array(), $ver = false, $in_footer = false ) {
137 if ( self::$_parent->args['use_cdn'] ) {
138 self::_cdn( true, $handle, $src_cdn, $deps, $ver, $in_footer, $is_script = true );
139 } else {
140 self::_vendor_plugin( true, $handle, $src_cdn, $deps, $ver, $in_footer, $is_script = true );
141 }
142 }
143
144 public static function enqueue_style( $handle, $src_cdn = false, $deps = array(), $ver = false, $media = 'all' ) {
145 if ( self::$_parent->args['use_cdn'] ) {
146 self::_cdn( false, $handle, $src_cdn, $deps, $ver, $media, $is_script = false );
147 } else {
148 self::_vendor_plugin( false, $handle, $src_cdn, $deps, $ver, $media, $is_script = false );
149 }
150 }
151
152 public static function enqueue_script( $handle, $src_cdn = false, $deps = array(), $ver = false, $in_footer = false ) {
153 if ( self::$_parent->args['use_cdn'] ) {
154 self::_cdn( false, $handle, $src_cdn, $deps, $ver, $in_footer, $is_script = true );
155 } else {
156 self::_vendor_plugin( false, $handle, $src_cdn, $deps, $ver, $in_footer, $is_script = true );
157 }
158 }
159 }
160 }
161