PluginProbe
QuadMenu – Mega Menu / 1.8.8
QuadMenu – Mega Menu v1.8.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 / lib / ReduxCore / inc / class.redux_cdn.php

class.redux_cdn.php in QuadMenu – Mega Menu 1.8.8, at lib/ReduxCore/inc/class.redux_cdn.php

165 lines 8.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( 'Redux_CDN' ) ) {
17 class Redux_CDN {
18 static public $_parent;
19 static private $_set;
20
21 private static function is_enqueued( $handle, $list = 'enqueued', $is_script ) {
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 = true, $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( 'Redux_VendorURL' ) ) {
65 $src = Redux_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 } else {
73 if ( ! self::is_enqueued( $handle, 'enqueued', $is_script ) ) {
74 $msg = __( 'Please wait a few minutes, then try refreshing the page. Unable to load some remotely hosted scripts.', 'redux-framework' );
75 if ( self::$_parent->args['dev_mode'] ) {
76 $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/reduxframework/redux-vendor-support' );
77 }
78
79 $msg = '<strong>' . __( 'Redux Framework Warning', 'redux-framework' ) . '</strong><br/>' . sprintf( __( '%s CDN unavailable. Some controls may not render properly.', 'redux-framework' ), $handle ) . ' ' . $msg;
80
81 $data = array(
82 'parent' => self::$_parent,
83 'type' => 'error',
84 'msg' => $msg,
85 'id' => $handle . $tran_key,
86 'dismiss' => false
87 );
88
89 Redux_Admin_Notices::set_notice($data);
90 }
91 }
92 } else {
93 set_transient( $handle . $tran_key, true, MINUTE_IN_SECONDS * self::$_parent->args['cdn_check_time'] );
94
95 if ( $register ) {
96 self::_register( $handle, $src_cdn, $deps, $ver, $footer_or_media, $is_script );
97 } else {
98 self::_enqueue( $handle, $src_cdn, $deps, $ver, $footer_or_media, $is_script );
99 }
100 }
101 }
102 }
103
104 private static function _vendor_plugin( $register = true, $handle, $src_cdn, $deps, $ver, $footer_or_media, $is_script = true ) {
105 if ( class_exists( 'Redux_VendorURL' ) ) {
106 $src = Redux_VendorURL::get_url( $handle );
107
108 if ( $register ) {
109 self::_register( $handle, $src, $deps, $ver, $footer_or_media, $is_script );
110 } else {
111 self::_enqueue( $handle, $src, $deps, $ver, $footer_or_media, $is_script );
112 }
113 } else {
114 if ( ! self::$_set ) {
115 $msg = sprintf( __( 'The <a href="%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="%s">activated</a>', 'redux-framework' ), 'https://github.com/reduxframework/redux-vendor-support', admin_url( 'plugins.php' ) );
116
117 $data = array(
118 'parent' => self::$_parent,
119 'type' => 'error',
120 'msg' => $msg,
121 'id' => $handle,
122 'dismiss' => false
123 );
124
125 Redux_Admin_Notices::set_notice($data);
126
127 self::$_set = true;
128 }
129 }
130 }
131
132 public static function register_style( $handle, $src_cdn = false, $deps = array(), $ver = false, $media = 'all' ) {
133 if ( self::$_parent->args['use_cdn'] ) {
134 self::_cdn( true, $handle, $src_cdn, $deps, $ver, $media, $is_script = false );
135 } else {
136 self::_vendor_plugin( true, $handle, $src_cdn, $deps, $ver, $media, $is_script = false );
137 }
138 }
139
140 public static function register_script( $handle, $src_cdn = false, $deps = array(), $ver = false, $in_footer = false ) {
141 if ( self::$_parent->args['use_cdn'] ) {
142 self::_cdn( true, $handle, $src_cdn, $deps, $ver, $in_footer, $is_script = true );
143 } else {
144 self::_vendor_plugin( true, $handle, $src_cdn, $deps, $ver, $in_footer, $is_script = true );
145 }
146 }
147
148 public static function enqueue_style( $handle, $src_cdn = false, $deps = array(), $ver = false, $media = 'all' ) {
149 if ( self::$_parent->args['use_cdn'] ) {
150 self::_cdn( false, $handle, $src_cdn, $deps, $ver, $media, $is_script = false );
151 } else {
152 self::_vendor_plugin( false, $handle, $src_cdn, $deps, $ver, $media, $is_script = false );
153 }
154 }
155
156 public static function enqueue_script( $handle, $src_cdn = false, $deps = array(), $ver = false, $in_footer = false ) {
157 if ( self::$_parent->args['use_cdn'] ) {
158 self::_cdn( false, $handle, $src_cdn, $deps, $ver, $in_footer, $is_script = true );
159 } else {
160 self::_vendor_plugin( false, $handle, $src_cdn, $deps, $ver, $in_footer, $is_script = true );
161 }
162 }
163 }
164 }
165