Changeset 2912625
- Timestamp:
- 05/15/2023 05:40:12 PM (3 years ago)
- Location:
- g-core-labs-cdn/trunk
- Files:
-
- 2 edited
-
includes/front-cdn.php (modified) (2 diffs)
-
index.php (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
g-core-labs-cdn/trunk/includes/front-cdn.php
r2908015 r2912625 6 6 */ 7 7 8 $gcore_enable_cdn = get_option( 'gcore_enable_cdn' ); 9 10 if ( 1 === (int) $gcore_enable_cdn ) { 11 /** 12 * Function g_core_labs_change_url 13 * 14 * @param array $data Required. 15 * @param string $urls Required. 16 * 17 * @return array|mixed|string|string[] 18 */ 19 function g_core_labs_change_url( $data, $urls ) { 20 global $gcore_cdn_url; 21 22 $gcore_cdn_url = get_option( 'gcore_cdn_url' ); 23 if ( stripos( $gcore_cdn_url, '[SITE_URL]' ) !== false ) { 24 $temp_home_url = wp_parse_url( get_home_url(), PHP_URL_HOST ); 25 $gcore_cdn_url = str_replace( '[SITE_URL]', $temp_home_url, $gcore_cdn_url ); 26 } 27 28 $gcore_cdn_exceptions = get_option( 'gcore_cdn_exceptions' ); 29 $gcore_cdn_exceptions = json_decode( $gcore_cdn_exceptions, true ); 30 if ( 0 === $gcore_cdn_exceptions || count( $gcore_cdn_exceptions ) < 1 ) { 31 $gcore_cdn_exceptions = array(); 32 } 33 34 $gcore_folder_advanced = get_option( 'gcore_folder_advanced' ); 35 if ( 0 === (int) $gcore_folder_advanced ) { 36 $gcore_folder_templates = get_option( 'gcore_folder_templates' ); 37 $gcore_folder_plugins = get_option( 'gcore_folder_plugins' ); 38 $gcore_folder_content = get_option( 'gcore_folder_content' ); 39 $gcore_folder_wp = get_option( 'gcore_folder_wp' ); 40 $gcore_cdn_folders = array(); 41 if ( 1 === (int) $gcore_folder_templates ) { 42 $gcore_cdn_folders[] = '/wp-content/themes/'; 8 /** 9 * Function g_core_labs_change_url 10 * 11 * @param array $data Required. 12 * @param string $urls Required. 13 * 14 * @return array|mixed|string|string[] 15 */ 16 function g_core_labs_change_url( $data, $urls ) { 17 global $gcore_cdn_url; 18 19 $gcore_cdn_url = get_option( 'gcore_cdn_url' ); 20 if ( stripos( $gcore_cdn_url, '[SITE_URL]' ) !== false ) { 21 $temp_home_url = wp_parse_url( get_home_url(), PHP_URL_HOST ); 22 $gcore_cdn_url = str_replace( '[SITE_URL]', $temp_home_url, $gcore_cdn_url ); 23 } 24 25 $gcore_cdn_exceptions = get_option( 'gcore_cdn_exceptions' ); 26 $gcore_cdn_exceptions = json_decode( $gcore_cdn_exceptions, true ); 27 if ( 0 === $gcore_cdn_exceptions || count( $gcore_cdn_exceptions ) < 1 ) { 28 $gcore_cdn_exceptions = array(); 29 } 30 31 $gcore_folder_advanced = get_option( 'gcore_folder_advanced' ); 32 if ( 0 === (int) $gcore_folder_advanced ) { 33 $gcore_folder_templates = get_option( 'gcore_folder_templates' ); 34 $gcore_folder_plugins = get_option( 'gcore_folder_plugins' ); 35 $gcore_folder_content = get_option( 'gcore_folder_content' ); 36 $gcore_folder_wp = get_option( 'gcore_folder_wp' ); 37 $gcore_cdn_folders = array(); 38 if ( 1 === (int) $gcore_folder_templates ) { 39 $gcore_cdn_folders[] = '/wp-content/themes/'; 40 } 41 if ( 1 === (int) $gcore_folder_plugins ) { 42 $gcore_cdn_folders[] = '/wp-content/plugins/'; 43 } 44 if ( 1 === (int) $gcore_folder_content ) { 45 $gcore_cdn_folders[] = '/wp-content/uploads/'; 46 } 47 if ( 1 === (int) $gcore_folder_wp ) { 48 $gcore_cdn_folders[] = '/wp-includes/'; 49 } 50 } else { 51 $gcore_cdn_folders = get_option( 'gcore_cdn_folders' ); 52 $gcore_cdn_folders = json_decode( $gcore_cdn_folders, true ); 53 if ( 0 === (int) $gcore_cdn_folders || count( $gcore_cdn_folders ) < 1 ) { 54 $gcore_cdn_folders = array(); 55 } 56 } 57 58 $gcore_type_advanced = get_option( 'gcore_type_advanced' ); 59 if ( 0 === (int) $gcore_type_advanced ) { 60 $gcore_type_image = get_option( 'gcore_type_image' ); 61 $gcore_type_video = get_option( 'gcore_type_video' ); 62 $gcore_type_audio = get_option( 'gcore_type_audio' ); 63 $gcore_type_js = get_option( 'gcore_type_js' ); 64 $gcore_type_css = get_option( 'gcore_type_css' ); 65 $gcore_type_archive = get_option( 'gcore_type_archive' ); 66 67 $temp_cdn_type_temp = array(); 68 if ( 1 === (int) $gcore_type_image ) { 69 $temp_cdn_type_temp[] = array( 'jpg', 'jpeg', 'gif', 'png', 'bmp', 'svg', 'webp', 'tif' ); 70 } 71 if ( 1 === (int) $gcore_type_video ) { 72 $temp_cdn_type_temp[] = array( 'mp4', 'mov', 'webm', 'ogv' ); 73 } 74 if ( 1 === (int) $gcore_type_audio ) { 75 $temp_cdn_type_temp[] = array( 'mp3', 'wav', 'ogg' ); 76 } 77 if ( 1 === (int) $gcore_type_js ) { 78 $temp_cdn_type_temp[] = array( 'json', 'js' ); 79 } 80 if ( 1 === (int) $gcore_type_css ) { 81 $temp_cdn_type_temp[] = array( 'css', 'map', 'less' ); 82 } 83 if ( 1 === (int) $gcore_type_archive ) { 84 $temp_cdn_type_temp[] = array( 'zip', 'rar', 'tar', 'gz', 'bz' ); 85 } 86 87 $temp_cdn_type = array(); 88 foreach ( $temp_cdn_type_temp as $e ) { 89 $temp_cdn_type = array_merge( $temp_cdn_type, $e ); 90 } 91 $gcore_cdn_types = array(); 92 } else { 93 $gcore_cdn_types = get_option( 'gcore_cdn_types' ); 94 $gcore_cdn_types = json_decode( $gcore_cdn_types, true ); 95 if ( 0 === (int) $gcore_cdn_types || count( $gcore_cdn_types ) < 1 ) { 96 $gcore_cdn_types = array(); 97 } 98 $temp_cdn_type = array(); 99 } 100 101 $urls_temp = explode( ',', $urls ); 102 $urls_temp = array_diff( $urls_temp, array( '' ) ); 103 104 if ( is_array( $urls_temp ) && count( $urls_temp ) > 0 ) { 105 106 foreach ( $urls_temp as $url ) { 107 $url = trim( $url ); 108 $url = explode( '?', $url ); 109 $url = $url[0]; 110 $url = explode( ' ', $url ); 111 $url = $url[0]; 112 113 $parsed_url = wp_parse_url( $url ); 114 115 if ( isset( $parsed_url['scheme'] ) ) { 116 $origin_url = $parsed_url['scheme'] . '://' . $parsed_url['host'] . ( isset( $parsed_url['port'] ) ? ':' . $parsed_url['port'] : '' ); 117 } else { 118 $origin_url = '//' . $parsed_url['host'] . ( isset( $parsed_url['port'] ) ? ':' . $parsed_url['port'] : '' ); 43 119 } 44 if ( 1 === (int) $gcore_folder_plugins ) { 45 $gcore_cdn_folders[] = '/wp-content/plugins/'; 46 } 47 if ( 1 === (int) $gcore_folder_content ) { 48 $gcore_cdn_folders[] = '/wp-content/uploads/'; 49 } 50 if ( 1 === (int) $gcore_folder_wp ) { 51 $gcore_cdn_folders[] = '/wp-includes/'; 52 } 53 } else { 54 $gcore_cdn_folders = get_option( 'gcore_cdn_folders' ); 55 $gcore_cdn_folders = json_decode( $gcore_cdn_folders, true ); 56 if ( 0 === (int) $gcore_cdn_folders || count( $gcore_cdn_folders ) < 1 ) { 57 $gcore_cdn_folders = array(); 58 } 59 } 60 61 $gcore_type_advanced = get_option( 'gcore_type_advanced' ); 62 if ( 0 === (int) $gcore_type_advanced ) { 63 $gcore_type_image = get_option( 'gcore_type_image' ); 64 $gcore_type_video = get_option( 'gcore_type_video' ); 65 $gcore_type_audio = get_option( 'gcore_type_audio' ); 66 $gcore_type_js = get_option( 'gcore_type_js' ); 67 $gcore_type_css = get_option( 'gcore_type_css' ); 68 $gcore_type_archive = get_option( 'gcore_type_archive' ); 69 70 $temp_cdn_type_temp = array(); 71 if ( 1 === (int) $gcore_type_image ) { 72 $temp_cdn_type_temp[] = array( 'jpg', 'jpeg', 'gif', 'png', 'bmp', 'svg', 'webp', 'tif' ); 73 } 74 if ( 1 === (int) $gcore_type_video ) { 75 $temp_cdn_type_temp[] = array( 'mp4', 'mov', 'webm', 'ogv' ); 76 } 77 if ( 1 === (int) $gcore_type_audio ) { 78 $temp_cdn_type_temp[] = array( 'mp3', 'wav', 'ogg' ); 79 } 80 if ( 1 === (int) $gcore_type_js ) { 81 $temp_cdn_type_temp[] = array( 'json', 'js' ); 82 } 83 if ( 1 === (int) $gcore_type_css ) { 84 $temp_cdn_type_temp[] = array( 'css', 'map', 'less' ); 85 } 86 if ( 1 === (int) $gcore_type_archive ) { 87 $temp_cdn_type_temp[] = array( 'zip', 'rar', 'tar', 'gz', 'bz' ); 88 } 89 90 $temp_cdn_type = array(); 91 foreach ( $temp_cdn_type_temp as $e ) { 92 $temp_cdn_type = array_merge( $temp_cdn_type, $e ); 93 } 94 $gcore_cdn_types = array(); 95 } else { 96 $gcore_cdn_types = get_option( 'gcore_cdn_types' ); 97 $gcore_cdn_types = json_decode( $gcore_cdn_types, true ); 98 if ( 0 === (int) $gcore_cdn_types || count( $gcore_cdn_types ) < 1 ) { 99 $gcore_cdn_types = array(); 100 } 101 $temp_cdn_type = array(); 102 } 103 104 $urls_temp = explode( ',', $urls ); 105 $urls_temp = array_diff( $urls_temp, array( '' ) ); 106 107 if ( is_array( $urls_temp ) && count( $urls_temp ) > 0 ) { 108 109 foreach ( $urls_temp as $url ) { 110 $url = trim( $url ); 111 $url = explode( '?', $url ); 112 $url = $url[0]; 113 $url = explode( ' ', $url ); 114 $url = $url[0]; 115 116 $parsed_url = wp_parse_url( $url ); 117 118 if ( isset( $parsed_url['scheme'] ) ) { 119 $origin_url = $parsed_url['scheme'] . '://' . $parsed_url['host'] . ( isset( $parsed_url['port'] ) ? ':' . $parsed_url['port'] : '' ); 120 } else { 121 $origin_url = '//' . $parsed_url['host'] . ( isset( $parsed_url['port'] ) ? $parsed_url['port'] : '' ); 122 } 123 if ( get_home_url() === $origin_url ) { 124 125 if ( ! in_array( $url, $gcore_cdn_exceptions, true ) ) { 126 127 if ( count( $gcore_cdn_folders ) > 0 ) { 128 foreach ( $gcore_cdn_folders as $folder ) { 129 130 if ( substr( $parsed_url['path'], 0, strlen( $folder ) ) === $folder ) { 131 $ext = explode( '.', $parsed_url['path'] ); 132 $ext = end( $ext ); 133 $ext = explode( ' ', $ext ); 134 $ext = trim( $ext[0] ); 135 136 if ( in_array( $ext, $gcore_cdn_types, true ) || in_array( $ext, $temp_cdn_type, true ) ) { 137 $new_url = str_replace( get_home_url() . '/', $gcore_cdn_url, $url ); 138 $data = str_replace( $url, $new_url, $data ); 139 } 120 if ( get_home_url() === $origin_url ) { 121 122 if ( ! in_array( $url, $gcore_cdn_exceptions, true ) ) { 123 124 if ( count( $gcore_cdn_folders ) > 0 ) { 125 foreach ( $gcore_cdn_folders as $folder ) { 126 127 if ( substr( $parsed_url['path'], 0, strlen( $folder ) ) === $folder ) { 128 $ext = explode( '.', $parsed_url['path'] ); 129 $ext = end( $ext ); 130 $ext = explode( ' ', $ext ); 131 $ext = trim( $ext[0] ); 132 133 if ( in_array( $ext, $gcore_cdn_types, true ) || in_array( $ext, $temp_cdn_type, true ) ) { 134 $new_url = str_replace( get_home_url() . '/', $gcore_cdn_url, $url ); 135 $data = str_replace( $url, $new_url, $data ); 140 136 } 141 137 } 142 } else {143 $ext = explode( '.', $parsed_url['path'] );144 $ext = end( $ext);145 $ext = explode( ' ',$ext );146 $ext = trim( $ext[0]);147 if ( in_array( $ext, $gcore_cdn_types, true ) || in_array( $ext, $temp_cdn_type, true ) ) {148 $new_url = str_replace( get_home_url() . '/', $gcore_cdn_url, $url );149 $data = str_replace( $url, $new_url, $data);150 }138 } 139 } else { 140 $ext = explode( '.', $parsed_url['path'] ); 141 $ext = end( $ext ); 142 $ext = explode( ' ', $ext ); 143 $ext = trim( $ext[0] ); 144 if ( in_array( $ext, $gcore_cdn_types, true ) || in_array( $ext, $temp_cdn_type, true ) ) { 145 $new_url = str_replace( get_home_url() . '/', $gcore_cdn_url, $url ); 146 $data = str_replace( $url, $new_url, $data ); 151 147 } 152 148 } … … 154 150 } 155 151 } 156 return $data; 157 } 158 159 /** 160 * Function g_core_labs_get_include_contents 161 * 162 * @param string $filename Requred. 163 * 164 * @return false|string 165 */ 166 function g_core_labs_get_include_contents( $filename ) { 167 168 if ( is_file( $filename ) ) { 169 ob_start(); 170 include $filename; 171 return ob_get_clean(); 172 } 173 return false; 174 } 175 176 $string = g_core_labs_get_include_contents( $template ); 177 152 } 153 return $data; 154 } 155 156 /** 157 * Function g_core_start_buffering 158 */ 159 function g_core_start_buffering() { 160 ob_start( 'g_core_end_buffering' ); 161 } 162 163 /** 164 * Function g_core_end_buffering 165 * 166 * @param string $contents Required. 167 * @param int $phase Required. 168 * 169 * @return string 170 */ 171 function g_core_end_buffering( $contents, $phase ) { 172 if ( $phase & PHP_OUTPUT_HANDLER_FINAL || $phase & PHP_OUTPUT_HANDLER_END ) { 173 $gcore_enable_cdn = get_option( 'gcore_enable_cdn' ); 174 175 if ( 1 === (int) $gcore_enable_cdn ) { 176 return g_core_do_replace_urls( $contents ); 177 } 178 } 179 180 return $contents; 181 } 182 183 /** 184 * Function g_core_do_replace_urls 185 * 186 * @param string $contents Required. 187 * 188 * @return string 189 */ 190 function g_core_do_replace_urls( $contents ) { 178 191 $pattern = '#(?:https?|ftp)://[^\s\,]+[?\'"?]#i'; 179 $num_found = preg_match_all( $pattern, $ string, $parse_url );192 $num_found = preg_match_all( $pattern, $contents, $parse_url ); 180 193 if ( $num_found ) { 181 194 foreach ( $parse_url[0] as $url ) { 182 195 $url = str_replace( array( '\'', '"' ), array( '', '' ), $url ); 183 196 if ( '' !== $url ) { 184 185 $string = g_core_labs_change_url( $string, $url ); 197 $contents = g_core_labs_change_url( $contents, $url ); 186 198 } 187 199 } 188 200 } 189 201 190 echo $string; 191 } else { 192 require $template; 193 } 202 return $contents; 203 } -
g-core-labs-cdn/trunk/index.php
r2908015 r2912625 78 78 /** 79 79 * Function g_core_labs_activate 80 *81 * @param string $template Required.82 *83 * @return mixed|string84 80 */ 85 function g_core_labs_activate( $template ) { 86 if ( $template ) { 87 include plugin_dir_path( __FILE__ ) . 'includes/front-cdn.php'; 88 $template = plugin_dir_path( __FILE__ ) . 'includes/blank_tpl.php'; 89 } 90 91 return $template; 81 function g_core_labs_activate() { 82 require_once plugin_dir_path( __FILE__ ) . 'includes/front-cdn.php'; 83 g_core_start_buffering(); 92 84 } 93 85 … … 104 96 add_action( 'init', 'g_core_labs_init_action' ); 105 97 106 add_filter( ' template_include', 'g_core_labs_activate', 999);98 add_filter( 'setup_theme', 'g_core_labs_activate' ); 107 99 108 100 register_activation_hook( __FILE__, 'g_core_labs' );
Note: See TracChangeset
for help on using the changeset viewer.