Plugin Directory

Changeset 2912625


Ignore:
Timestamp:
05/15/2023 05:40:12 PM (3 years ago)
Author:
gcorewpress
Message:

Fixed bugs

Location:
g-core-labs-cdn/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • g-core-labs-cdn/trunk/includes/front-cdn.php

    r2908015 r2912625  
    66 */
    77
    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 */
     16function 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'] : '' );
    43119            }
    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 );
    140136                                }
    141137                            }
    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 );
    151147                        }
    152148                    }
     
    154150            }
    155151        }
    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 */
     159function 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 */
     171function 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 */
     190function g_core_do_replace_urls( $contents ) {
    178191    $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 );
    180193    if ( $num_found ) {
    181194        foreach ( $parse_url[0] as $url ) {
    182195            $url = str_replace( array( '\'', '"' ), array( '', '' ), $url );
    183196            if ( '' !== $url ) {
    184 
    185                 $string = g_core_labs_change_url( $string, $url );
     197                $contents = g_core_labs_change_url( $contents, $url );
    186198            }
    187199        }
    188200    }
    189201
    190     echo $string;
    191 } else {
    192     require $template;
    193 }
     202    return $contents;
     203}
  • g-core-labs-cdn/trunk/index.php

    r2908015 r2912625  
    7878/**
    7979 * Function g_core_labs_activate
    80  *
    81  * @param string $template Required.
    82  *
    83  * @return mixed|string
    8480 */
    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;
     81function g_core_labs_activate() {
     82    require_once plugin_dir_path( __FILE__ ) . 'includes/front-cdn.php';
     83    g_core_start_buffering();
    9284}
    9385
     
    10496add_action( 'init', 'g_core_labs_init_action' );
    10597
    106 add_filter( 'template_include', 'g_core_labs_activate', 999 );
     98add_filter( 'setup_theme', 'g_core_labs_activate' );
    10799
    108100register_activation_hook( __FILE__, 'g_core_labs' );
Note: See TracChangeset for help on using the changeset viewer.