' . $cachefiledata . '\n"; ob_end_flush(); if ( isset( $wp_super_cache_debug ) && $wp_super_cache_debug ) wp_cache_debug( "Served compressed dynamic page from supercache file using PHP. File: $file", 5 ); } else { eval( '?>' . $cachefiledata . ' $header) { // godaddy fix, via http://blog.gneu.org/2008/05/wp-supercache-on-godaddy/ and http://www.littleredrails.com/blog/2007/09/08/using-wp-cache-on-godaddy-500-error/ if( strpos( $header, 'Last-Modified:' ) === false ) header($header); } header( 'WP-Super-Cache: Served legacy cache file' ); if ( $wp_cache_object_cache ) { if ( $cache ) { if ( $ungzip ) { $uncompressed = gzuncompress( $cache ); if ( $uncompressed ) { if ( isset( $wp_super_cache_debug ) && $wp_super_cache_debug ) wp_cache_debug( "Uncompressed gzipped cache file from object cache", 1 ); $cache = $uncompressed; unset( $uncompressed ); } } if ( isset( $meta[ 'dynamic' ] ) && $meta[ 'dynamic' ] ) { if ( isset( $wp_super_cache_debug ) && $wp_super_cache_debug ) wp_cache_debug( "Serving wp-cache dynamic file from object cache", 5 ); eval( '?>' . $cache . '' . $uncompressed . '' . $cache . '{$func[1]}( $value ); } else { $value = $func( $value ); } } } return $value; } function wp_cache_mobile_group( $user_agent ) { global $wp_cache_mobile_groups; foreach( (array)$wp_cache_mobile_groups as $name => $group ) { foreach( (array)$group as $browser ) { $browser = trim( strtolower( $browser ) ); if ( $browser != '' && strstr( $user_agent, $browser ) ) { return $browser; } } } return "mobile"; } // From http://wordpress.org/extend/plugins/wordpress-mobile-edition/ by Alex King function wp_cache_check_mobile( $cache_key ) { global $wp_cache_mobile_enabled, $wp_cache_mobile_browsers, $wp_cache_mobile_prefixes; if ( !isset( $wp_cache_mobile_enabled ) || false == $wp_cache_mobile_enabled ) return $cache_key; if ( !isset( $_SERVER[ "HTTP_USER_AGENT" ] ) ) { return $cache_key; } $browsers = explode( ',', $wp_cache_mobile_browsers ); $user_agent = strtolower( $_SERVER['HTTP_USER_AGENT'] ); foreach ($browsers as $browser) { if ( strstr( $user_agent, trim( strtolower( $browser ) ) ) ) { if ( isset( $GLOBALS[ 'wp_super_cache_debug' ] ) && $GLOBALS[ 'wp_super_cache_debug' ] ) wp_cache_debug( "mobile browser detected: " . $_SERVER[ "HTTP_USER_AGENT" ], 5 ); return $cache_key . '-' . wp_cache_mobile_group( $user_agent ); } } if (isset($_SERVER['HTTP_X_WAP_PROFILE']) ) return $cache_key . '-' . $_SERVER['HTTP_X_WAP_PROFILE']; if (isset($_SERVER['HTTP_PROFILE']) ) return $cache_key . '-' . $_SERVER['HTTP_PROFILE']; if ( isset( $wp_cache_mobile_prefixes ) ) { $browsers = explode( ',', $wp_cache_mobile_prefixes ); foreach ($browsers as $browser_prefix) { if ( substr($user_agent, 0, 4) == $browser_prefix ) { if ( isset( $GLOBALS[ 'wp_super_cache_debug' ] ) && $GLOBALS[ 'wp_super_cache_debug' ] ) wp_cache_debug( "mobile browser (prefix) detected: " . $_SERVER[ "HTTP_USER_AGENT" ], 5 ); return $cache_key . '-' . $browser_prefix; } } } $accept = strtolower($_SERVER['HTTP_ACCEPT']); if (strpos($accept, 'wap') !== false) { return $cache_key . '-' . 'wap'; } if (isset($_SERVER['ALL_HTTP']) && strpos(strtolower($_SERVER['ALL_HTTP']), 'operamini') !== false) { return $cache_key . '-' . 'operamini'; } return $cache_key; } function wp_cache_debug( $message, $level = 1 ) { global $wp_cache_debug_level, $wp_cache_debug_log, $cache_path, $wp_cache_debug_ip, $wp_super_cache_debug; if ( isset( $wp_super_cache_debug ) && $wp_super_cache_debug == false ) return false; if ( isset( $wp_cache_debug_log ) == false ) return false; if ( isset( $wp_cache_debug_level ) == false ) $wp_cache_debug_level = 1; if ( $wp_cache_debug_level < $level ) return false; if ( isset( $wp_cache_debug_ip ) && $wp_cache_debug_ip != '' && $wp_cache_debug_ip != $_SERVER[ 'REMOTE_ADDR' ] ) return false; if ( isset( $wp_cache_debug_log ) && $wp_cache_debug_log != '' ) { error_log( date( 'H:i:s' ) . " " . $_SERVER[ 'REQUEST_URI' ] . " " . $message . "\n", 3, $cache_path . str_replace( '/', '', str_replace( '..', '', $wp_cache_debug_log ) ) ); } } function wp_cache_user_agent_is_rejected() { global $cache_rejected_user_agent; if (!function_exists('apache_request_headers')) return false; $headers = apache_request_headers(); if (!isset($headers["User-Agent"])) return false; foreach ($cache_rejected_user_agent as $expr) { if (strlen($expr) > 0 && stristr($headers["User-Agent"], $expr)) return true; } return false; } function get_current_url_supercache_dir( $post_id = 0 ) { global $cached_direct_pages, $cache_path, $wp_cache_request_uri; static $saved_supercache_dir = array(); if ( isset( $saved_supercache_dir[ $post_id ] ) ) { return $saved_supercache_dir[ $post_id ]; } if ( $post_id != 0 ) { $uri = str_replace( site_url(), '', get_permalink( $post_id ) ); } else { $uri = strtolower( $wp_cache_request_uri ); } $uri = preg_replace('/[ <>\'\"\r\n\t\(\)]/', '', str_replace( '/index.php', '/', str_replace( '..', '', preg_replace("/(\?.*)?$/", '', $uri ) ) ) ); $uri = str_replace( '\\', '', $uri ); $dir = preg_replace( '/:.*$/', '', $_SERVER["HTTP_HOST"] ) . $uri; // To avoid XSS attacks if ( function_exists( "apply_filters" ) ) $dir = apply_filters( 'supercache_dir', $dir ); $dir = $cache_path . 'supercache/' . $dir . '/'; if( is_array( $cached_direct_pages ) && in_array( $_SERVER[ 'REQUEST_URI' ], $cached_direct_pages ) ) { $dir = ABSPATH . $uri . '/'; } $dir = str_replace( '//', '/', $dir ); if ( isset( $GLOBALS[ 'wp_super_cache_debug' ] ) && $GLOBALS[ 'wp_super_cache_debug' ] ) wp_cache_debug( "supercache dir: $dir", 5 ); $saved_supercache_dir[ $post_id ] = $dir; return $dir; } function get_oc_version() { $wp_cache_oc_key = wp_cache_get( "wp_cache_oc_key" ); if ( ! $wp_cache_oc_key ) { $wp_cache_oc_key[ 'key' ] = reset_oc_version(); } elseif ( $wp_cache_oc_key[ 'ts' ] < time() - 600 ) wp_cache_set( "wp_cache_oc_key", array( 'ts' => time(), 'key' => $wp_cache_oc_key[ 'key' ] ) ); return $wp_cache_oc_key[ 'key' ]; } function reset_oc_version( $version = 1 ) { if ( $version == 1 ) $version = mt_rand(); wp_cache_set( "wp_cache_oc_key", array( 'ts' => time(), 'key' => $version ) ); return $version; } function get_oc_key( $url = false ) { global $wp_cache_gzip_encoding; if ( $url ) { $key = intval( $_SERVER[ 'SERVER_PORT' ] ) . strtolower( preg_replace( '/:.*$/', '', $_SERVER[ "HTTP_HOST" ] ) ) . $url; } else { $key = get_current_url_supercache_dir(); } return $key . $wp_cache_gzip_encoding . get_oc_version(); } ?>