WordPress.org

Plugin Directory

Changeset 998187


Ignore:
Timestamp:
09/29/14 00:42:04 (3 years ago)
Author:
krazybean
Message:

adding version 0.2.5

Location:
wp-redis-cache
Files:
4 edited
8 copied

Legend:

Unmodified
Added
Removed
  • wp-redis-cache/tags/0.2.5/functions.php

    r959436 r998187  
    11<?php 
    22function generate_inline_script($scripts){ 
    3     ?> 
    43 
    5     <?php 
    64} 
    75 
    86 
    97function get_styles_list(){ 
    10     global $wp_styles; 
    11     $list = array(); 
    12     if (isset($wp_styles->queue) && is_array($wp_styles->queue)){ 
    13         foreach ($wp_styles->queue as $style){ 
    14             if (is_excluded($style)){ 
    15                 // is in esclusion list 
    16             }else{ 
    17                 $list[] = array( 
    18                     'src'       => $wp_styles->registered[$style]->src, 
    19                     'media' => $wp_styles->registered[$style]->args 
    20                 ); 
    21             } 
    22         } 
    23     } 
    24     return $list; 
     8    global $wp_styles; 
     9    $list = array(); 
     10    if (isset($wp_styles->queue) && is_array($wp_styles->queue)){ 
     11        foreach ($wp_styles->queue as $style){ 
     12            if (is_excluded($style)){ 
     13                // is in esclusion list 
     14            }else{ 
     15                $list[] = array( 
     16                    'src'       => $wp_styles->registered[$style]->src, 
     17                    'media' => $wp_styles->registered[$style]->args 
     18                ); 
     19            } 
     20        } 
     21    } 
     22    return $list; 
    2523} 
    2624 
    2725function unregister_all_styles(){ 
    28     global $wp_styles; 
    29     if (isset($wp_styles->queue) && is_array($wp_styles->queue)){ 
    30         foreach ($wp_styles->queue as $style){ 
    31             if (is_excluded($style)){ 
    32                 continue; 
    33             } 
    34             wp_dequeue_style($style); 
    35             wp_deregister_style( $style); 
    36         } 
    37     } 
     26    global $wp_styles; 
     27    if (isset($wp_styles->queue) && is_array($wp_styles->queue)){ 
     28        foreach ($wp_styles->queue as $style){ 
     29            if (is_excluded($style)){ 
     30                continue; 
     31            } 
     32            wp_dequeue_style($style); 
     33            wp_deregister_style( $style); 
     34        } 
     35    } 
    3836} 
    3937 
    4038function inline_css($url,$minify=true){ 
    41     $base_url = get_bloginfo('wpurl'); 
    42     $path = false; 
     39    $base_url = get_bloginfo('wpurl'); 
     40    $path = false; 
    4341 
    44     if (strpos($url,$base_url)!==FALSE){ 
    45         $path = str_replace($base_url,rtrim(ABSPATH,'/'),$url); 
    46     }elseif ($url[0]=='/' && $url[1]!='/'){ // url like /wp-conten/... and not like //google.com/... 
    47         $path = rtrim(ABSPATH,'/').$url; 
    48         $url = $base_url.$url; 
    49     } 
     42    if (strpos($url,$base_url)!==FALSE){ 
     43        $path = str_replace($base_url,rtrim(ABSPATH,'/'),$url); 
     44    }elseif ($url[0]=='/' && $url[1]!='/'){ // url like /wp-conten/... and not like //google.com/... 
     45        $path = rtrim(ABSPATH,'/').$url; 
     46        $url = $base_url.$url; 
     47    } 
    5048 
    51     if ($path && file_exists($path)){ 
    52         $css = file_get_contents($path); 
     49    if ($path && file_exists($path)){ 
     50        $css = file_get_contents($path); 
    5351 
    54         if ($minify){ 
    55             $css = minify_css($css); 
    56         } 
     52        if ($minify){ 
     53            $css = minify_css($css); 
     54        } 
    5755 
    58         $css = fix_css_urls($css,$url); 
     56        $css = fix_css_urls($css,$url); 
    5957 
    60         echo $css; 
    61         return true; 
    62     }else{ 
    63         //~ echo "/* !!! can not open file {$url}[{$path}] !!! */"; 
    64         return false; 
    65     } 
     58        echo $css; 
     59        return true; 
     60    }else{ 
     61        //~ echo "/* !!! can not open file {$url}[{$path}] !!! */"; 
     62        return false; 
     63    } 
    6664} 
    6765 
    6866function fix_css_urls($css,$url){ 
    69     $css_dir = substr($url,0,strrpos($url,'/')); 
     67    $css_dir = substr($url,0,strrpos($url,'/')); 
    7068 
    71     //~ $css = preg_replace("/url\(['\"]?([^\/][^'\"\)]*)['\"]?\)/i","url('{$css_dir}/$1')",$css); 
    72     //~ $css = preg_replace("/url\(['\"]?([^\/][^'\"\)]*)['\"]?\)/i","url({$css_dir}/$1)",$css); 
    73     $css = preg_replace("/url\((?!data:)['\"]?([^\/][^'\"\)]*)['\"]?\)/i","url({$css_dir}/$1)",$css); 
     69    //~ $css = preg_replace("/url\(['\"]?([^\/][^'\"\)]*)['\"]?\)/i","url('{$css_dir}/$1')",$css); 
     70    //~ $css = preg_replace("/url\(['\"]?([^\/][^'\"\)]*)['\"]?\)/i","url({$css_dir}/$1)",$css); 
     71    $css = preg_replace("/url\((?!data:)['\"]?([^\/][^'\"\)]*)['\"]?\)/i","url({$css_dir}/$1)",$css); 
    7472 
    75     return $css; 
     73    return $css; 
    7674} 
    7775 
    7876function minify_css($css){ 
    7977        $css = remove_multiline_comments($css); 
    80     $css = str_replace(array("\t","\n","\r"),' ',$css); 
    81     $cnt = 1; 
    82     while ($cnt>0){ 
    83         $css = str_replace('  ',' ',$css,$cnt); 
    84     } 
    85     $css = str_replace(array(' {','{ '),'{',$css); 
    86     $css = str_replace(array(' }','} ',';}'),'}',$css); 
    87     $css = str_replace(': ',':',$css); 
    88     $css = str_replace('; ',';',$css); 
    89     $css = str_replace(', ',',',$css); 
    90     return $css; 
     78    $css = str_replace(array("\t","\n","\r"),' ',$css); 
     79    $cnt = 1; 
     80    while ($cnt>0){ 
     81        $css = str_replace('  ',' ',$css,$cnt); 
     82    } 
     83    $css = str_replace(array(' {','{ '),'{',$css); 
     84    $css = str_replace(array(' }','} ',';}'),'}',$css); 
     85    $css = str_replace(': ',':',$css); 
     86    $css = str_replace('; ',';',$css); 
     87    $css = str_replace(', ',',',$css); 
     88    return $css; 
    9189} 
    9290 
     
    119117 
    120118function get_exceptions(){ 
    121     global $wp_scripts; 
    122     $array = explode("\n",get_option('ajc_exceptions')); 
    123     $exceptions = array(); 
    124     foreach ($array as $key=>$ex){ 
    125         if (trim($ex)!=''){ 
    126             $exceptions[$key] = trim($ex); 
    127         } 
    128     } 
    129     return $exceptions; 
     119    global $wp_scripts; 
     120    $array = explode("\n",get_option('ajc_exceptions')); 
     121    $exceptions = array(); 
     122    foreach ($array as $key=>$ex){ 
     123        if (trim($ex)!=''){ 
     124            $exceptions[$key] = trim($ex); 
     125        } 
     126    } 
     127    return $exceptions; 
    130128} 
    131129 
    132130function get_exceptions_script_names(){ 
    133     global $wp_scripts; 
    134     global $wp_styles; 
    135     $exceptions = get_exceptions(); 
    136     $names = array(); 
    137     foreach ($exceptions as $file){ 
    138         if (is_string($file) && isset($wp_scripts->registered[$file])){ 
    139             $names[] = $wp_scripts->registered[$file]->handle; 
    140         }elseif(is_array($wp_scripts->queue)){ 
    141             foreach ($wp_scripts->queue as $q){ 
    142                 if (strpos($wp_scripts->registered[$q]->src,$file)!==FALSE){ 
    143                     $names[] = $wp_scripts->registered[$q]->handle; 
    144                 } 
    145             } 
    146         } 
    147     } 
    148     return $names; 
     131    global $wp_scripts; 
     132    global $wp_styles; 
     133    $exceptions = get_exceptions(); 
     134    $names = array(); 
     135    foreach ($exceptions as $file){ 
     136        if (is_string($file) && isset($wp_scripts->registered[$file])){ 
     137            $names[] = $wp_scripts->registered[$file]->handle; 
     138        }elseif(is_array($wp_scripts->queue)){ 
     139            foreach ($wp_scripts->queue as $q){ 
     140                if (strpos($wp_scripts->registered[$q]->src,$file)!==FALSE){ 
     141                    $names[] = $wp_scripts->registered[$q]->handle; 
     142                } 
     143            } 
     144        } 
     145    } 
     146    return $names; 
    149147} 
    150148 
    151149function is_excluded($file){ 
    152     global $wp_styles; 
    153     global $wp_scripts; 
     150    global $wp_styles; 
     151    global $wp_scripts; 
    154152 
    155     $exceptions = get_exceptions(); 
     153    $exceptions = get_exceptions(); 
    156154 
    157     if (is_string($file) && isset($wp_scripts->registered[$file])){ 
    158         $filename = $file; 
    159         $file = $wp_scripts->registered[$file]; 
    160         //~ unset($wp_scripts->registered[$filename]->deps); 
    161     }elseif(is_string($file) && isset($wp_styles->registered[$file])){ 
    162         $filename = $file; 
    163         $file = $wp_styles->registered[$file]; 
    164         //~ unset($wp_styles->registered[$filename]->deps); 
    165     }elseif(is_string($file)){ 
     155    if (is_string($file) && isset($wp_scripts->registered[$file])){ 
     156        $filename = $file; 
     157        $file = $wp_scripts->registered[$file]; 
     158        //~ unset($wp_scripts->registered[$filename]->deps); 
     159    }elseif(is_string($file) && isset($wp_styles->registered[$file])){ 
     160        $filename = $file; 
     161        $file = $wp_styles->registered[$file]; 
     162        //~ unset($wp_styles->registered[$filename]->deps); 
     163    }elseif(is_string($file)){ 
    166164                if (is_array($wp_scripts->queue)){ 
    167165                        foreach ($wp_scripts->queue as $q){ 
     
    182180                        } 
    183181                } 
    184     } 
     182    } 
    185183 
    186     foreach ($exceptions as $ex){ 
    187         if ($file->handle==$ex || (strpos($ex,'.')!==FALSE && strpos($file->src,$ex)!==FALSE)){ 
    188             return true; 
    189         } 
    190     } 
     184    foreach ($exceptions as $ex){ 
     185        if ($file->handle==$ex || (strpos($ex,'.')!==FALSE && strpos($file->src,$ex)!==FALSE)){ 
     186            return true; 
     187        } 
     188    } 
    191189 
    192     return false; 
     190    return false; 
    193191} 
    194192 
  • wp-redis-cache/tags/0.2.5/rc_core.php

    r959436 r998187  
    44    Plugin URI: http://nourl 
    55    Description: Caching using redis, simple 
    6     Author: Juanito 
    7     Version: 0.2 
     6    Author: Juanito 
     7    Version: 0.2.5 
    88    Author URI: http://juan 
    99    Requirements: Redis, derp 
     
    1414register_activation_hook( __FILE__, 'ajc_activate' ); 
    1515function ajc_activate(){ 
    16     if (get_option('minify_enabled_check')===FALSE){ 
    17         update_option('minify_enabled_check',                           'on'); 
    18         update_option('minify_css_on',                      'on'); 
    19         update_option('head_detect',    'on'); 
    20         update_option('foot_detect',    'on'); 
    21         update_option('css_load_type',          'inline_header'); 
    22         update_option('css_minify',                     'on'); 
    23     } 
     16    if (get_option('minify_enabled_check')===FALSE){ 
     17        update_option('minify_enabled_check', 'on'); 
     18        update_option('minify_css_on', 'on'); 
     19        update_option('head_detect', 'on'); 
     20        update_option('foot_detect', 'on'); 
     21        update_option('css_load_type', 'inline_header'); 
     22        update_option('css_minify', 'on'); 
     23    } 
    2424} 
    2525 
    26  
    27     function cssmin_init(){          
    28     $minify_enabled_check                           = get_option('minify_enabled_check'); 
    29     $minify_css_on                          = get_option('minify_css_on'); 
    30     $head_detect    = get_option('head_detect'); 
    31     $foot_detect    = get_option('foot_detect'); 
    32     $css_load_type              = get_option('css_load_type'); 
    33     if ($minify_css_on =="on"){ 
    34         add_action('wp_print_styles','ajc_print_styles'); 
    35     } 
     26function cssmin_init(){ 
     27    $minify_enabled_check = get_option('minify_enabled_check'); 
     28    $minify_css_on = get_option('minify_css_on'); 
     29    $head_detect = get_option('head_detect'); 
     30    $foot_detect = get_option('foot_detect'); 
     31    $css_load_type = get_option('css_load_type'); 
     32    if ($minify_css_on =="on"){ 
     33        add_action('wp_print_styles','ajc_print_styles'); 
     34    } 
    3635} 
     36 
     37add_action('init', 'cssmin_init'); 
     38 
     39function ajc_print_styles(){ 
     40    global $css_styles_are_minified; 
     41    global $all_styles; 
     42         
     43    if ( is_admin() || !empty($css_styles_are_minified) ) { 
     44        return; 
     45    } 
     46      
     47    $css_styles_are_minified = true; 
     48    $all_styles = get_styles_list(); 
    3749     
    38 add_action('init',                  'cssmin_init'); 
    39  
    40  function ajc_print_styles(){ 
    41     global $css_styles_are_minified; 
    42     global $all_styles; 
    43   
    44     if ( is_admin() || !empty($css_styles_are_minified) ) { 
    45         return; 
    46     } 
    47   
    48     $css_styles_are_minified = true; 
    49   
    50     $all_styles = get_styles_list(); 
    51   
    52     //~ dump(get_option('css_load_type')); 
    53     if (get_option('css_load_type')=='inline_header'){ 
    54         $not_inlined = array(); 
    55         $minify = get_option('cssminify_enabled'); 
    56                  //~ $ajc_styles = array_reverse($ajc_styles,true); 
    57         foreach ($all_styles as $style){ 
    58             echo "<style type=\"text/css\" ".($style['media'] ? "media=\"{$style['media']}\"" : '' ).">"; 
    59             if (!inline_css($style['src'],$minify)){ 
    60                 $not_inlined[] = $style; 
    61             } 
    62             echo "</style>"; 
    63         } 
    64         if (!empty($not_inlined)){ 
    65             foreach ($not_inlined as $style){ 
    66                 ?><link rel="stylesheet"  href="<?php echo $style['src']?>" type="text/css" <?php echo $style['media'] ? "media=\"{$style['media']}\"" : ''?> /><?php 
    67             } 
    68         } 
    69     } 
    70   
    71     unregister_all_styles(); 
    72  } 
     50    //~ dump(get_option('css_load_type')); 
     51    if (get_option('css_load_type')=='inline_header'){ 
     52        $not_inlined = array(); 
     53        $minify = get_option('cssminify_enabled'); 
     54        //~ $ajc_styles = array_reverse($ajc_styles,true); 
     55        foreach ($all_styles as $style){ 
     56            echo "<style type=\"text/css\" ".($style['media'] ? "media=\"{$style['media']}\"" : '' ).">"; 
     57            if (!inline_css($style['src'],$minify)){ 
     58                $not_inlined[] = $style; 
     59            } 
     60            echo "</style>"; 
     61        } 
     62        if (!empty($not_inlined)){ 
     63            foreach ($not_inlined as $style){ 
     64                ?><link rel="stylesheet"  href="<?php echo $style['src']?>" type="text/css" <?php echo $style['media'] ? "media=\"{$style['media']}\"" : ''?> /><?php 
     65            } 
     66        } 
     67    } 
     68    unregister_all_styles(); 
     69} 
    7370  
    7471  
    75  function ajc_print_delayed_styles(){ 
    76     global $all_styles; 
    77   
    78     $css_load_type              = get_option('css_load_type'); 
    79   
    80     switch ($css_load_type){ 
    81         case "import":{ 
    82             echo "<style type=\"text/css\">"; 
    83             foreach ($all_styles as $style){ 
    84                 echo "@import url(\"{$style['src']}\")".($style['media'] ? " ".$style['media'] : '').";"; 
    85             } 
    86             echo "</style>"; 
    87             break; 
    88         } 
    89         case "inline": 
    90         case "inline_footer": { 
    91             $not_inlined = array(); 
    92             $minify = get_option('css_minify'); 
    93                          //~ $ajc_styles = array_reverse($ajc_styles,true); 
    94             foreach ($all_styles as $style){ 
    95                 echo "<style type=\"text/css\" ".($style['media'] ? "media=\"{$style['media']}\"" : '' ).">"; 
    96                 if (!inline_css($style['src'],$minify)){ 
    97                     $not_inlined[] = $style; 
    98                 } 
    99                 echo "</style>"; 
    100             } 
    101             if (!empty($not_inlined)){ 
    102                 foreach ($not_inlined as $style){ 
    103                     ?><link rel="stylesheet"  href="<?php echo $style['src']?>" type="text/css" <?php echo $style['media'] ? "media=\"{$style['media']}\"" : ''?> /><?php 
    104                 } 
    105             } 
    106             break; 
    107         } 
    108         case "link":{ 
    109             foreach ($all_styles as $style){ 
    110                 ?><link rel="stylesheet"  href="<?php echo $style['src']?>" type="text/css" <?php echo $style['media'] ? "media=\"{$style['media']}\"" : ''?> /><?php 
    111             } 
    112         } 
    113     } 
    114  }  
     72function ajc_print_delayed_styles(){ 
     73    global $all_styles; 
     74 
     75    $css_load_type = get_option('css_load_type'); 
     76 
     77    switch ($css_load_type){ 
     78        case "import":{ 
     79            echo "<style type=\"text/css\">"; 
     80            foreach ($all_styles as $style){ 
     81                echo "@import url(\"{$style['src']}\")".($style['media'] ? " ".$style['media'] : '').";"; 
     82            } 
     83            echo "</style>"; 
     84            break; 
     85        } 
     86        case "inline": 
     87        case "inline_footer": { 
     88            $not_inlined = array(); 
     89            $minify = get_option('css_minify'); 
     90            //~ $ajc_styles = array_reverse($ajc_styles,true); 
     91            foreach ($all_styles as $style){ 
     92                echo "<style type=\"text/css\" ".($style['media'] ? "media=\"{$style['media']}\"" : '' ).">"; 
     93                if (!inline_css($style['src'],$minify)){ 
     94                    $not_inlined[] = $style; 
     95                } 
     96                echo "</style>"; 
     97            } 
     98            if (!empty($not_inlined)){ 
     99                foreach ($not_inlined as $style){ 
     100                    ?><link rel="stylesheet"  href="<?php echo $style['src']?>" type="text/css" <?php echo $style['media'] ? "media=\"{$style['media']}\"" : ''?> /><?php 
     101                } 
     102            } 
     103            break; 
     104        } 
     105        case "link":{ 
     106            foreach ($all_styles as $style){ 
     107                ?><link rel="stylesheet"  href="<?php echo $style['src']?>" type="text/css" <?php echo $style['media'] ? "media=\"{$style['media']}\"" : ''?> /><?php 
     108            } 
     109        } 
     110    } 
     111}  
    115112 
    116113error_reporting(E_ALL);  
     
    148145 
    149146    public function installation(){ 
    150          
    151     // setup wp_options elements on activation  
    152         add_option('rediscache_enabled', 'no', '', 'no'); 
    153         add_option('cssminify_enabled', 'on'); 
    154         update_option('minify_css_on',                      'on'); 
    155         update_option('css_load_type',          'inline_header'); 
    156         update_option('head_detect',    'on'); 
     147        // setup wp_options elements on activation  
     148        add_option('rediscache_enabled', 'no', '', 'no'); 
     149        add_option('cssminify_enabled', 'on'); 
     150        update_option('minify_css_on', 'on'); 
     151        update_option('css_load_type', 'inline_header'); 
     152        update_option('head_detect', 'on'); 
    157153        add_option('rediscache_enabled', 'no', '', 'no'); 
    158154        add_option('rediscache_server', $this->encrypt($default_server), '', 'no'); 
     
    182178        $html_cache = ""; 
    183179        $html = ""; 
    184     try{ include_once(get_home_path().'wp-config.php'); } catch(Exception $e){ echo 'Message: '.$e->getMessage();} 
     180        try{ include_once(get_home_path().'wp-config.php'); } catch(Exception $e){ echo 'Message: '.$e->getMessage();} 
    185181        include_once( dirname( __file__ )  . '/predis.php'); 
    186     $start = microtime(); 
     182        $start = microtime(); 
    187183        if (isset($_SERVER['HTTP_CF_CONNECTING_IP'])) { $_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_CF_CONNECTING_IP']; } 
    188     $host = $this->decrypt(get_option('rediscache_server')); 
    189     $port = $this->decrypt(get_option('rediscache_port')); 
    190     $pass = $this->decrypt(get_option('rediscache_pass')); 
    191     $database = $this->decrypt(get_option('rediscache_database')); 
    192     $ttl = $this->decrypt(get_option('rediscache_ttl')); 
     184        $host = $this->decrypt(get_option('rediscache_server')); 
     185        $port = $this->decrypt(get_option('rediscache_port')); 
     186        $pass = $this->decrypt(get_option('rediscache_pass')); 
     187        $database = $this->decrypt(get_option('rediscache_database')); 
     188        $ttl = $this->decrypt(get_option('rediscache_ttl')); 
    193189 
    194190        if(strlen($pass) >= 1){ 
    195         $params = array( 
    196             'host' => "$host", 
    197             'port' => $port, 
    198             'password' => $pass, 
    199             'database' => $database 
    200         ); 
     191            $params = array( 
     192                'host' => "$host", 
     193                'port' => $port, 
     194                'password' => $pass, 
     195                'database' => $database 
     196            ); 
    201197        }else{ 
    202198            $params = array( 
     
    211207            $redis = new Predis\Client($params); 
    212208 
    213         $domain = $_SERVER['HTTP_HOST']; 
    214         $url = "http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; 
    215         $dkey = md5($domain); 
    216         $ukey = md5($url); 
    217         (isset($_SERVER['HTTP_CACHE_CONTROL']) && $_SERVER['HTTP_CACHE_CONTROL'] == 'max-age=0') ? $submit = 1 : $submit = 0; 
    218         $cookie = var_export($_COOKIE, true); 
    219         $loggedin = preg_match("/wordpress_logged_in/", $cookie); 
    220         //echo "$dkey => $ukey ;"; 
    221         if ($redis->hexists($dkey, $ukey) && !$loggedin && !$submit && !strpos($url, '/feed/')) { 
    222             $html_cache = $redis->hget($dkey, $ukey); 
    223             $cached = 1; 
    224             $msg = 'this is a cache'; 
    225         }elseif($submit || substr($_SERVER['REQUEST_URI'], -4) == '?r=y') { 
    226             $redis->hdel($dkey, $ukey); 
    227             $msg = 'cache of page deleted'; 
    228         }elseif($loggedin && substr($_SERVER['REQUEST_URI'], -4) == '?c=y') { 
    229             if ($redis->exists($dkey)) { 
    230                 $redis->del($dkey); 
    231                 $msg = 'domain cache flushed'; 
    232             }else{ 
    233                 $msg = 'no cache to flush'; 
    234             } 
    235         }elseif($loggedin){ 
    236             $msg = 'not cached'; 
    237         }else{  //constructing the cache  
    238             //echo "Constructing cache"; 
    239             ob_start(); 
    240             include( get_home_path() .'./wp-blog-header.php'); 
    241             if (get_option('minify_css_on')=="on"){ 
    242                 add_action('wp_print_styles',       'ajc_print_styles'); 
    243             }else{} 
    244             $html = ob_get_contents(); 
    245             ob_end_clean(); 
    246             if(!is_404() && !is_search()) { 
    247                 $redis->hset($dkey, $ukey, $html); 
    248                 $redis->expire($dkey, $ttl); 
    249                 $ttlremain = $redis->ttl($dkey); 
    250                 $msg = 'cache is set'; 
    251             } 
    252         } 
    253         if(strlen($html_cache) >= 1){ 
    254             @ob_flush(); 
    255             echo $html_cache; 
    256             $end = microtime(); 
    257             echo "\n<!-- redis cache key: $dkey was used. -->\n"; 
    258             echo "<!-- redis cache time: ".$this->t_exec($start, $end)." -->\n"; 
    259             //echo "<!-- redis ttl remaining: ".$this->$ttlremain.". -->\n"; 
    260             die(); 
    261         }elseif(strlen($html) >= 1){ 
    262             echo $html; 
    263             die(); 
    264         }else{ 
    265         } 
    266         } 
     209            $domain = $_SERVER['HTTP_HOST']; 
     210            $url = "http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; 
     211            $dkey = md5($domain); 
     212            $ukey = md5($url); 
     213            (isset($_SERVER['HTTP_CACHE_CONTROL']) && $_SERVER['HTTP_CACHE_CONTROL'] == 'max-age=0') ? $submit = 1 : $submit = 0; 
     214            $cookie = var_export($_COOKIE, true); 
     215            $loggedin = preg_match("/wordpress_logged_in/", $cookie); 
     216            //echo "$dkey => $ukey ;"; 
     217            if ($redis->hexists($dkey, $ukey) && !$loggedin && !$submit && !strpos($url, '/feed/')) { 
     218                $html_cache = $redis->hget($dkey, $ukey); 
     219                $cached = 1; 
     220                $msg = 'this is a cache'; 
     221            }elseif($submit || substr($_SERVER['REQUEST_URI'], -4) == '?r=y') { 
     222                $redis->hdel($dkey, $ukey); 
     223                //$msg = 'cache of page deleted'; 
     224            }elseif($loggedin && substr($_SERVER['REQUEST_URI'], -4) == '?c=y') { 
     225                if ($redis->exists($dkey)) { 
     226                    $redis->del($dkey); 
     227                    $msg = 'domain cache flushed'; 
     228                }else{ 
     229                    $msg = 'no cache to flush'; 
     230                } 
     231            }elseif($loggedin){ 
     232                $msg = 'not cached'; 
     233            }else{  //constructing the cache  
     234                //echo "Constructing cache"; 
     235                ob_start(); 
     236                include( get_home_path() .'./wp-blog-header.php'); 
     237                if (get_option('minify_css_on')=="on"){ 
     238                    add_action('wp_print_styles', 'ajc_print_styles'); 
     239                }else{} 
     240                $html = ob_get_contents(); 
     241                ob_end_clean(); 
     242                if(!is_404() && !is_search()) { 
     243                    $redis->hset($dkey, $ukey, $html); 
     244                    $redis->expire($dkey, $ttl); 
     245                    $ttlremain = $redis->ttl($dkey); 
     246                    $msg = 'cache is set'; 
     247                } 
     248            } 
     249            if(strlen($html_cache) >= 1){ 
     250                @ob_flush(); 
     251                echo $html_cache; 
     252                $end = microtime(); 
     253                echo "\n<!-- redis cache key: $dkey was used. -->\n"; 
     254                echo "<!-- redis cache time: ".$this->t_exec($start, $end)." -->\n"; 
     255                //echo "<!-- redis ttl remaining: ".$this->$ttlremain.". -->\n"; 
     256                die(); 
     257            }elseif(strlen($html) >= 1){ 
     258                echo $html; 
     259                die(); 
     260            }else{} 
     261            } 
    267262        catch(Exception $e){ 
    268263            echo '<div class="error"> Message: ' .$e->getMessage(). '</div>'; 
    269264        } 
    270265        $end = microtime(); 
    271         //$debug = 1; 
     266        //$debug = 0; 
    272267        //$display_powered_by_redis = 1; 
    273         if (isset($debug)) { 
    274             echo $msg.': '; 
    275             echo $this->t_exec($start, $end); 
    276         } 
     268        //if (isset($debug)) { 
     269            //echo $msg.': '; 
     270            //echo $this->t_exec($start, $end); 
     271        //} 
    277272        if (isset($cached) && isset($display_powered_by_redis)) { 
    278         echo "<style>#redis_powered{float:right;margin:20px 0;background:url(http://94d65bca695befb24601-d2361d348cad2f3de9f9f0e0a54dbefa.r34.cf1.rackcdn.com/redis.png) 10px no-repeat #fff;border:1px solid #D7D8DF;padding:10px;width:190px;} 
    279              #redis_powered div{width:190px;text-align:right;font:10px/11px arial,sans-serif;color:#000;}</style>"; 
    280         echo "<a href=\"http://www.jimwestergren.com/wordpress-with-redis-as-a-frontend-cache/\" style=\"text-decoration:none;\"><div id=\"redis_powered\"><div>Page generated in<br/> ".$this->t_exec($start, $end)." sec</div></div></a>"; 
    281         } 
    282     } 
    283  
    284  
    285     private function buffer_start() { 
    286         //More will be placed here 
     273            echo "<style>#redis_powered{float:right;margin:20px 0;background:url(http://94d65bca695befb24601-d2361d348cad2f3de9f9f0e0a54dbefa.r34.cf1.rackcdn.com/redis.png) 10px no-repeat #fff;border:1px solid #D7D8DF;padding:10px;width:190px;} 
     274            #redis_powered div{width:190px;text-align:right;font:10px/11px arial,sans-serif;color:#000;}</style>"; 
     275            echo "<a href=\"http://www.jimwestergren.com/wordpress-with-redis-as-a-frontend-cache/\" style=\"text-decoration:none;\"><div id=\"redis_powered\"><div>Page generated in<br/> ".$this->t_exec($start, $end)." sec</div></div></a>"; 
     276        } 
     277    } 
     278    private function buffer_start() { 
     279        //More will be placed here 
    287280    } 
    288281 
     
    317310        $dkey = md5($domain); 
    318311        $ukey = md5($url); 
    319         if(!is_404() && !is_search()) { 
    320             continue; 
     312        if(!is_404() && !is_search()) { 
     313            continue; 
    321314        } 
    322315    } 
     
    346339        $redis->flushdb(); 
    347340        return $count; 
    348     }     
     341    } 
     342 
     343    public function clear_cache_on_update( $post_id ) { 
     344        //checking for revision 
     345        if ( wp_is_post_revision( $post_id ) ) 
     346        //purge cache 
     347        $count_purged = $this->flush_db(); 
     348    } 
    349349 
    350350    public function t_exec($start, $end) { 
     
    354354 
    355355    public function getmicrotime($t) { 
    356             list($usec, $sec) = explode(" ",$t); 
    357             return ((float)$usec + (float)$sec); 
     356        list($usec, $sec) = explode(" ",$t); 
     357        return ((float)$usec + (float)$sec); 
    358358    } 
    359359 
     
    361361    public function do_redis_cache_setting() {     
    362362        //Cloud Flare: 
    363     if (isset($_SERVER['HTTP_CF_CONNECTING_IP'])) { $_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_CF_CONNECTING_IP']; } 
     363        if (isset($_SERVER['HTTP_CF_CONNECTING_IP'])) { $_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_CF_CONNECTING_IP']; } 
    364364         
    365     try{ include_once(get_home_path().'wp-config.php'); } catch(Exception $e){ echo 'Message: '.$e->getMessage();} 
     365        try{ include_once(get_home_path().'wp-config.php'); } catch(Exception $e){ echo 'Message: '.$e->getMessage();} 
    366366         
    367367        ?> 
    368368        <h1>Redis Cache</h1> 
    369369        <h3>Details</h3> 
    370     <?php if(get_option('rediscache_enabled') == 'no'){ $status='off';}else{$status='on';}  
     370        <?php if(get_option('rediscache_enabled') == 'no'){ $status='off';}else{$status='on';}  
    371371            if($status == 'off'){?> 
    372         <form action="" method="post"> 
    373             <input type="hidden" name="action" value="cache_enable"> 
    374             <?php if (function_exists('wp_nonce_field')){wp_nonce_field();} ?> 
    375             <input type="submit" value="Enable" class="button button-primary"> 
     372                <form action="" method="post"> 
     373                <input type="hidden" name="action" value="cache_enable"> 
     374                <?php if (function_exists('wp_nonce_field')){wp_nonce_field();} ?> 
     375                <input type="submit" value="Enable" class="button button-primary"> 
     376                </form> 
     377            <?php }elseif($status == 'on'){?> 
     378                <form action="" method="post"> 
     379                <input type="hidden" name="action" value="cache_disable"> 
     380                <?php if (function_exists('wp_nonce_field')){wp_nonce_field();} ?> 
     381                <input type="submit" value="Disable" class="button button-primay"> 
     382                </form> 
     383        <?php }?> 
     384        <hr> 
     385        <h2>Settings</h2> 
     386        <form action="" method="post"> 
     387        <input type="hidden" name="action" value="save_settings"> 
     388        <?php if (function_exists('wp_nonce_field')){wp_nonce_field();} ?> 
     389        <p><label for="server">Redis Server</label> 
     390            <input type="text" name="server" value="<?php echo $this->decrypt(get_option('rediscache_server'));?>" placeholder="localhost"></p> 
     391        <p><label for="database">Redis Instance</label> 
     392            <input type="text" name="database" value="<?php echo $this->decrypt(get_option('rediscache_database'));?>" placeholder="0"></p> 
     393        <p><label for="port">Redis Port</label> 
     394            <input type="text" name="port" value="<?php echo $this->decrypt(get_option('rediscache_port'));?>" placeholder="6379"></p> 
     395        <p><label for="password">Redis Password</label> 
     396            <input type="password" name="password" value="<?php echo $this->decrypt(get_option('rediscache_pass'));?>" placeholder="password"></p> 
     397        <p><label for="ttlset">Cache Expiration (in seconds)</label> 
     398            <input type="text" name="ttlset" value="<?php echo $this->decrypt(get_option('rediscache_ttl'));?>" placeholder="3600"></p> 
     399            <input type="submit" value="Save Settings" class="button button-primary"> 
     400        </form> 
     401        <hr> 
     402        <h3>Minify CSS</h3> 
     403        <?php if(get_option('cssminify_enabled') == 'off'){$status='off';}else{$status='on';}  
     404        if($status == 'off'){?> 
     405            <form action="" method="post"> 
     406                <input type="hidden" name="action" value="cssminify_enable"> 
     407                <?php if (function_exists('wp_nonce_field')){wp_nonce_field();} ?> 
     408                <input type="submit" value="Enable" class="button button-primary"> 
    376409            </form> 
    377410        <?php }elseif($status == 'on'){?> 
    378411            <form action="" method="post"> 
    379             <input type="hidden" name="action" value="cache_disable"> 
    380             <?php if (function_exists('wp_nonce_field')){wp_nonce_field();} ?> 
    381             <input type="submit" value="Disable" class="button button-primay"> 
     412                <input type="hidden" name="action" value="cssminify_disable"> 
     413                <?php if (function_exists('wp_nonce_field')){wp_nonce_field();} ?> 
     414                <input type="submit" value="Disable" class="button button-primay"> 
    382415            </form> 
    383416        <?php }?> 
    384     <hr> 
    385         <h2>Settings</h2> 
     417        <h2>Flush Cache</h2> 
    386418        <form action="" method="post"> 
    387         <input type="hidden" name="action" value="save_settings"> 
    388     <?php if (function_exists('wp_nonce_field')){wp_nonce_field();} ?> 
    389         <p><label for="server">Redis Server</label> 
    390            <input type="text" name="server" value="<?php echo $this->decrypt(get_option('rediscache_server'));?>" placeholder="localhost"></p> 
    391         <p><label for="database">Redis Instance</label> 
    392            <input type="text" name="database" value="<?php echo $this->decrypt(get_option('rediscache_database'));?>" placeholder="0"></p> 
    393         <p><label for="port">Redis Port</label> 
    394            <input type="text" name="port" value="<?php echo $this->decrypt(get_option('rediscache_port'));?>" placeholder="6379"></p> 
    395         <p><label for="password">Redis Password</label> 
    396            <input type="password" name="password" value="<?php echo $this->decrypt(get_option('rediscache_pass'));?>" placeholder="password"></p> 
    397         <p><label for="ttlset">Cache Expiration (in seconds)</label> 
    398            <input type="text" name="ttlset" value="<?php echo $this->decrypt(get_option('rediscache_ttl'));?>" placeholder="3600"></p> 
    399         <input type="submit" value="Save Settings" class="button button-primary"> 
    400         </form> 
    401     <hr> 
    402 <h3>Minify CSS</h3> 
    403 <?php if(get_option('cssminify_enabled') == 'off'){$status='off';}else{$status='on';}  
    404         if($status == 'off'){?> 
    405     <form action="" method="post"> 
    406         <input type="hidden" name="action" value="cssminify_enable"> 
    407         <?php if (function_exists('wp_nonce_field')){wp_nonce_field();} ?> 
    408         <input type="submit" value="Enable" class="button button-primary"> 
    409         </form> 
    410     <?php }elseif($status == 'on'){?> 
    411         <form action="" method="post"> 
    412         <input type="hidden" name="action" value="cssminify_disable"> 
    413         <?php if (function_exists('wp_nonce_field')){wp_nonce_field();} ?> 
    414         <input type="submit" value="Disable" class="button button-primay"> 
    415         </form> 
    416     <?php }?> 
    417     <h2>Flush Cache</h2> 
    418         <form action="" method="post"> 
    419419            <?php if (function_exists('wp_nonce_field')){wp_nonce_field();} ?> 
    420420            <input type="hidden" name="action" value="flush_db"> 
     
    422422        </form> 
    423423        <?php 
    424     if($_POST){ 
    425     $action = $_POST['action']; 
    426     if($action == 'cssminify_enable'){ 
    427             if(check_admin_referer()){ 
    428                 update_option('cssminify_enabled', 'on'); 
    429                 update_option('minify_enabled_check',                           'on'); 
    430                 update_option('minify_css_on',                      'on'); 
    431                 update_option('head_detect',    'on'); 
    432                 update_option('foot_detect',    'on'); 
    433                 update_option('css_load_type',          'inline_header'); 
    434                 update_option('css_minify',                     'on'); 
    435                 echo "<meta http-equiv=\"refresh\" content=\"0\">";                  
    436                 } 
    437         }elseif($action == 'cssminify_disable'){ 
    438             if(check_admin_referer()){ 
    439                 update_option('cssminify_enabled', 'off'); 
    440                 update_option('minify_enabled_check', 'off'); 
    441                 update_option('minify_css_on', 'off'); 
    442                 update_option('head_detect', 'off'); 
    443                 update_option('foot_detect', 'off'); 
    444                 update_option('css_load_type', 'js'); 
    445                 update_option('css_minify',                     'off');  
    446                 echo "<meta http-equiv=\"refresh\" content=\"0\">";              
    447                     } 
    448                 }                            
    449             if($action == 'cache_enable'){ 
    450                 if(check_admin_referer()){ 
    451                     update_option('rediscache_enabled', 'yes', '', 'no'); 
    452             echo "<meta http-equiv=\"refresh\" content=\"0\">"; 
    453                 }else{ 
    454                     $this->denied($verify); 
    455                 } 
    456             }elseif($action == 'cache_disable'){ 
    457                 if(check_admin_referer()){ 
    458                     update_option('rediscache_enabled', 'no', '', 'no'); 
    459             echo "<meta http-equiv=\"refresh\" content=\"0\">"; 
    460                 }else{ 
    461                     $this->denied($verify); 
    462                 } 
    463             }elseif($action == 'save_settings'){ 
    464                 if(!empty($_POST)){ 
    465                     $server = $_POST['server']; 
    466                     $database=$_POST['database']; 
    467                     $port=$_POST['port']; 
    468                     $pass=$_POST['password']; 
    469                     $ttlset=$_POST['ttlset']; 
     424        if($_POST){ 
     425        $action = $_POST['action']; 
     426        if($action == 'cssminify_enable'){ 
     427            if(check_admin_referer()){ 
     428                update_option('cssminify_enabled', 'on'); 
     429                update_option('minify_enabled_check', 'on'); 
     430                update_option('minify_css_on', 'on'); 
     431                update_option('head_detect', 'on'); 
     432                update_option('foot_detect', 'on'); 
     433                update_option('css_load_type', 'inline_header'); 
     434                update_option('css_minify', 'on'); 
     435                echo "<meta http-equiv=\"refresh\" content=\"0\">"; 
     436            } 
     437        }elseif($action == 'cssminify_disable'){ 
     438            if(check_admin_referer()){ 
     439                update_option('cssminify_enabled', 'off'); 
     440                update_option('minify_enabled_check', 'off'); 
     441                update_option('minify_css_on', 'off'); 
     442                update_option('head_detect', 'off'); 
     443                update_option('foot_detect', 'off'); 
     444                update_option('css_load_type', 'js'); 
     445                update_option('css_minify', 'off'); 
     446                echo "<meta http-equiv=\"refresh\" content=\"0\">"; 
     447            } 
     448        } 
     449        if($action == 'cache_enable'){ 
     450            if(check_admin_referer()){ 
     451                update_option('rediscache_enabled', 'yes', '', 'no'); 
     452                echo "<meta http-equiv=\"refresh\" content=\"0\">"; 
     453            }else{ 
     454                $this->denied($verify); 
     455            } 
     456        }elseif($action == 'cache_disable'){ 
     457            if(check_admin_referer()){ 
     458                update_option('rediscache_enabled', 'no', '', 'no'); 
     459                echo "<meta http-equiv=\"refresh\" content=\"0\">"; 
     460            }else{ 
     461                $this->denied($verify); 
     462            } 
     463        }elseif($action == 'save_settings'){ 
     464            if(!empty($_POST)){ 
     465                $server = $_POST['server']; 
     466                $database=$_POST['database']; 
     467                $port=$_POST['port']; 
     468                $pass=$_POST['password']; 
     469                $ttlset=$_POST['ttlset']; 
    470470                if(check_admin_referer()){ 
    471471                    update_option('rediscache_server', $this->encrypt($server), '', 'no'); 
     
    475475                    update_option('rediscache_ttl', $this->encrypt($ttlset), '', 'no'); 
    476476                    echo "<meta http-equiv=\"refresh\" content=\"0\">"; 
    477                  }} 
    478             }elseif($action == 'flush_db'){ 
    479                 if(check_admin_referer()){ 
    480                 $count_purged = print_r($this->flush_db()); 
    481                 //echo "<meta http-equiv=\"refresh\" content=\"0\">"; 
    482                 echo "<div class='updated'> Message: Cache purged -> ($count_purged)</div>"; 
    483             }} 
    484         } 
    485     } 
    486      
     477                 } 
     478             } 
     479         }elseif($action == 'flush_db'){ 
     480             if(check_admin_referer()){ 
     481                 $count_purged = $this->flush_db(); 
     482                 //echo "<meta http-equiv=\"refresh\" content=\"0\">"; 
     483                 echo "<div class='updated'> Message: Cache purged -> ($count_purged)</div>"; 
     484             } 
     485         } 
     486    } 
     487    }     
    487488} 
    488  
    489489// Instantiate the class object. 
    490490$rcplugin = new APF_rediscache; 
     
    493493    add_action('wp_head', array($rcplugin, 'buffer_start')); 
    494494    add_action('wp_footer', array($rcplugin, 'buffer_end')); 
     495    add_action('save_post', array($rcplugin, 'clear_cache_on_update')); 
    495496}elseif(get_option('rediscache_enabled') == 'no'){ 
    496497    remove_action('init', array($rcplugin, 'redis_init'), 10, 1); 
    497498}else{} 
    498     register_activation_hook( __FILE__, array( $rcplugin, 'installation' ) ); 
    499     register_deactivation_hook( __FILE__, array( $rcplugin, 'uninstall' ) ); 
     499register_activation_hook( __FILE__, array( $rcplugin, 'installation' ) ); 
     500register_deactivation_hook( __FILE__, array( $rcplugin, 'uninstall' ) ); 
    500501?> 
  • wp-redis-cache/tags/0.2.5/readme.txt

    r959436 r998187  
    66Tested up to: 3.4 
    77Stable tag: 0.2 
    8 Version: 0.2 
     8Version: 0.2.5 
    99License: GPLv2 or later 
    1010License URI: http://www.gnu.org/licenses/gpl-2.0.html 
     
    2727 - Wordpress :) 
    2828 - PHP 
     29 - mcrypt 
    2930 - Redis server 
    3031 - Redis credentials (optional) 
     
    6667* Added css minification ability 
    6768 
     69= 0.2.5 = 
     70* Added post event purging 
     71 
    6872== Upgrade Notice == 
    6973 
     
    7276= 0.2 = 
    7377Added new features! 
     78= 0.2.5 = 
     79Automatic cache purging on post 
    7480 
    7581== Arbitrary section == 
  • wp-redis-cache/trunk/functions.php

    r959436 r998187  
    11<?php 
    22function generate_inline_script($scripts){ 
    3     ?> 
    43 
    5     <?php 
    64} 
    75 
    86 
    97function get_styles_list(){ 
    10     global $wp_styles; 
    11     $list = array(); 
    12     if (isset($wp_styles->queue) && is_array($wp_styles->queue)){ 
    13         foreach ($wp_styles->queue as $style){ 
    14             if (is_excluded($style)){ 
    15                 // is in esclusion list 
    16             }else{ 
    17                 $list[] = array( 
    18                     'src'       => $wp_styles->registered[$style]->src, 
    19                     'media' => $wp_styles->registered[$style]->args 
    20                 ); 
    21             } 
    22         } 
    23     } 
    24     return $list; 
     8    global $wp_styles; 
     9    $list = array(); 
     10    if (isset($wp_styles->queue) && is_array($wp_styles->queue)){ 
     11        foreach ($wp_styles->queue as $style){ 
     12            if (is_excluded($style)){ 
     13                // is in esclusion list 
     14            }else{ 
     15                $list[] = array( 
     16                    'src'       => $wp_styles->registered[$style]->src, 
     17                    'media' => $wp_styles->registered[$style]->args 
     18                ); 
     19            } 
     20        } 
     21    } 
     22    return $list; 
    2523} 
    2624 
    2725function unregister_all_styles(){ 
    28     global $wp_styles; 
    29     if (isset($wp_styles->queue) && is_array($wp_styles->queue)){ 
    30         foreach ($wp_styles->queue as $style){ 
    31             if (is_excluded($style)){ 
    32                 continue; 
    33             } 
    34             wp_dequeue_style($style); 
    35             wp_deregister_style( $style); 
    36         } 
    37     } 
     26    global $wp_styles; 
     27    if (isset($wp_styles->queue) && is_array($wp_styles->queue)){ 
     28        foreach ($wp_styles->queue as $style){ 
     29            if (is_excluded($style)){ 
     30                continue; 
     31            } 
     32            wp_dequeue_style($style); 
     33            wp_deregister_style( $style); 
     34        } 
     35    } 
    3836} 
    3937 
    4038function inline_css($url,$minify=true){ 
    41     $base_url = get_bloginfo('wpurl'); 
    42     $path = false; 
     39    $base_url = get_bloginfo('wpurl'); 
     40    $path = false; 
    4341 
    44     if (strpos($url,$base_url)!==FALSE){ 
    45         $path = str_replace($base_url,rtrim(ABSPATH,'/'),$url); 
    46     }elseif ($url[0]=='/' && $url[1]!='/'){ // url like /wp-conten/... and not like //google.com/... 
    47         $path = rtrim(ABSPATH,'/').$url; 
    48         $url = $base_url.$url; 
    49     } 
     42    if (strpos($url,$base_url)!==FALSE){ 
     43        $path = str_replace($base_url,rtrim(ABSPATH,'/'),$url); 
     44    }elseif ($url[0]=='/' && $url[1]!='/'){ // url like /wp-conten/... and not like //google.com/... 
     45        $path = rtrim(ABSPATH,'/').$url; 
     46        $url = $base_url.$url; 
     47    } 
    5048 
    51     if ($path && file_exists($path)){ 
    52         $css = file_get_contents($path); 
     49    if ($path && file_exists($path)){ 
     50        $css = file_get_contents($path); 
    5351 
    54         if ($minify){ 
    55             $css = minify_css($css); 
    56         } 
     52        if ($minify){ 
     53            $css = minify_css($css); 
     54        } 
    5755 
    58         $css = fix_css_urls($css,$url); 
     56        $css = fix_css_urls($css,$url); 
    5957 
    60         echo $css; 
    61         return true; 
    62     }else{ 
    63         //~ echo "/* !!! can not open file {$url}[{$path}] !!! */"; 
    64         return false; 
    65     } 
     58        echo $css; 
     59        return true; 
     60    }else{ 
     61        //~ echo "/* !!! can not open file {$url}[{$path}] !!! */"; 
     62        return false; 
     63    } 
    6664} 
    6765 
    6866function fix_css_urls($css,$url){ 
    69     $css_dir = substr($url,0,strrpos($url,'/')); 
     67    $css_dir = substr($url,0,strrpos($url,'/')); 
    7068 
    71     //~ $css = preg_replace("/url\(['\"]?([^\/][^'\"\)]*)['\"]?\)/i","url('{$css_dir}/$1')",$css); 
    72     //~ $css = preg_replace("/url\(['\"]?([^\/][^'\"\)]*)['\"]?\)/i","url({$css_dir}/$1)",$css); 
    73     $css = preg_replace("/url\((?!data:)['\"]?([^\/][^'\"\)]*)['\"]?\)/i","url({$css_dir}/$1)",$css); 
     69    //~ $css = preg_replace("/url\(['\"]?([^\/][^'\"\)]*)['\"]?\)/i","url('{$css_dir}/$1')",$css); 
     70    //~ $css = preg_replace("/url\(['\"]?([^\/][^'\"\)]*)['\"]?\)/i","url({$css_dir}/$1)",$css); 
     71    $css = preg_replace("/url\((?!data:)['\"]?([^\/][^'\"\)]*)['\"]?\)/i","url({$css_dir}/$1)",$css); 
    7472 
    75     return $css; 
     73    return $css; 
    7674} 
    7775 
    7876function minify_css($css){ 
    7977        $css = remove_multiline_comments($css); 
    80     $css = str_replace(array("\t","\n","\r"),' ',$css); 
    81     $cnt = 1; 
    82     while ($cnt>0){ 
    83         $css = str_replace('  ',' ',$css,$cnt); 
    84     } 
    85     $css = str_replace(array(' {','{ '),'{',$css); 
    86     $css = str_replace(array(' }','} ',';}'),'}',$css); 
    87     $css = str_replace(': ',':',$css); 
    88     $css = str_replace('; ',';',$css); 
    89     $css = str_replace(', ',',',$css); 
    90     return $css; 
     78    $css = str_replace(array("\t","\n","\r"),' ',$css); 
     79    $cnt = 1; 
     80    while ($cnt>0){ 
     81        $css = str_replace('  ',' ',$css,$cnt); 
     82    } 
     83    $css = str_replace(array(' {','{ '),'{',$css); 
     84    $css = str_replace(array(' }','} ',';}'),'}',$css); 
     85    $css = str_replace(': ',':',$css); 
     86    $css = str_replace('; ',';',$css); 
     87    $css = str_replace(', ',',',$css); 
     88    return $css; 
    9189} 
    9290 
     
    119117 
    120118function get_exceptions(){ 
    121     global $wp_scripts; 
    122     $array = explode("\n",get_option('ajc_exceptions')); 
    123     $exceptions = array(); 
    124     foreach ($array as $key=>$ex){ 
    125         if (trim($ex)!=''){ 
    126             $exceptions[$key] = trim($ex); 
    127         } 
    128     } 
    129     return $exceptions; 
     119    global $wp_scripts; 
     120    $array = explode("\n",get_option('ajc_exceptions')); 
     121    $exceptions = array(); 
     122    foreach ($array as $key=>$ex){ 
     123        if (trim($ex)!=''){ 
     124            $exceptions[$key] = trim($ex); 
     125        } 
     126    } 
     127    return $exceptions; 
    130128} 
    131129 
    132130function get_exceptions_script_names(){ 
    133     global $wp_scripts; 
    134     global $wp_styles; 
    135     $exceptions = get_exceptions(); 
    136     $names = array(); 
    137     foreach ($exceptions as $file){ 
    138         if (is_string($file) && isset($wp_scripts->registered[$file])){ 
    139             $names[] = $wp_scripts->registered[$file]->handle; 
    140         }elseif(is_array($wp_scripts->queue)){ 
    141             foreach ($wp_scripts->queue as $q){ 
    142                 if (strpos($wp_scripts->registered[$q]->src,$file)!==FALSE){ 
    143                     $names[] = $wp_scripts->registered[$q]->handle; 
    144                 } 
    145             } 
    146         } 
    147     } 
    148     return $names; 
     131    global $wp_scripts; 
     132    global $wp_styles; 
     133    $exceptions = get_exceptions(); 
     134    $names = array(); 
     135    foreach ($exceptions as $file){ 
     136        if (is_string($file) && isset($wp_scripts->registered[$file])){ 
     137            $names[] = $wp_scripts->registered[$file]->handle; 
     138        }elseif(is_array($wp_scripts->queue)){ 
     139            foreach ($wp_scripts->queue as $q){ 
     140                if (strpos($wp_scripts->registered[$q]->src,$file)!==FALSE){ 
     141                    $names[] = $wp_scripts->registered[$q]->handle; 
     142                } 
     143            } 
     144        } 
     145    } 
     146    return $names; 
    149147} 
    150148 
    151149function is_excluded($file){ 
    152     global $wp_styles; 
    153     global $wp_scripts; 
     150    global $wp_styles; 
     151    global $wp_scripts; 
    154152 
    155     $exceptions = get_exceptions(); 
     153    $exceptions = get_exceptions(); 
    156154 
    157     if (is_string($file) && isset($wp_scripts->registered[$file])){ 
    158         $filename = $file; 
    159         $file = $wp_scripts->registered[$file]; 
    160         //~ unset($wp_scripts->registered[$filename]->deps); 
    161     }elseif(is_string($file) && isset($wp_styles->registered[$file])){ 
    162         $filename = $file; 
    163         $file = $wp_styles->registered[$file]; 
    164         //~ unset($wp_styles->registered[$filename]->deps); 
    165     }elseif(is_string($file)){ 
     155    if (is_string($file) && isset($wp_scripts->registered[$file])){ 
     156        $filename = $file; 
     157        $file = $wp_scripts->registered[$file]; 
     158        //~ unset($wp_scripts->registered[$filename]->deps); 
     159    }elseif(is_string($file) && isset($wp_styles->registered[$file])){ 
     160        $filename = $file; 
     161        $file = $wp_styles->registered[$file]; 
     162        //~ unset($wp_styles->registered[$filename]->deps); 
     163    }elseif(is_string($file)){ 
    166164                if (is_array($wp_scripts->queue)){ 
    167165                        foreach ($wp_scripts->queue as $q){ 
     
    182180                        } 
    183181                } 
    184     } 
     182    } 
    185183 
    186     foreach ($exceptions as $ex){ 
    187         if ($file->handle==$ex || (strpos($ex,'.')!==FALSE && strpos($file->src,$ex)!==FALSE)){ 
    188             return true; 
    189         } 
    190     } 
     184    foreach ($exceptions as $ex){ 
     185        if ($file->handle==$ex || (strpos($ex,'.')!==FALSE && strpos($file->src,$ex)!==FALSE)){ 
     186            return true; 
     187        } 
     188    } 
    191189 
    192     return false; 
     190    return false; 
    193191} 
    194192 
  • wp-redis-cache/trunk/rc_core.php

    r959436 r998187  
    44    Plugin URI: http://nourl 
    55    Description: Caching using redis, simple 
    6     Author: Juanito 
    7     Version: 0.2 
     6    Author: Juanito 
     7    Version: 0.2.5 
    88    Author URI: http://juan 
    99    Requirements: Redis, derp 
     
    1414register_activation_hook( __FILE__, 'ajc_activate' ); 
    1515function ajc_activate(){ 
    16     if (get_option('minify_enabled_check')===FALSE){ 
    17         update_option('minify_enabled_check',                           'on'); 
    18         update_option('minify_css_on',                      'on'); 
    19         update_option('head_detect',    'on'); 
    20         update_option('foot_detect',    'on'); 
    21         update_option('css_load_type',          'inline_header'); 
    22         update_option('css_minify',                     'on'); 
    23     } 
     16    if (get_option('minify_enabled_check')===FALSE){ 
     17        update_option('minify_enabled_check', 'on'); 
     18        update_option('minify_css_on', 'on'); 
     19        update_option('head_detect', 'on'); 
     20        update_option('foot_detect', 'on'); 
     21        update_option('css_load_type', 'inline_header'); 
     22        update_option('css_minify', 'on'); 
     23    } 
    2424} 
    2525 
    26  
    27     function cssmin_init(){          
    28     $minify_enabled_check                           = get_option('minify_enabled_check'); 
    29     $minify_css_on                          = get_option('minify_css_on'); 
    30     $head_detect    = get_option('head_detect'); 
    31     $foot_detect    = get_option('foot_detect'); 
    32     $css_load_type              = get_option('css_load_type'); 
    33     if ($minify_css_on =="on"){ 
    34         add_action('wp_print_styles','ajc_print_styles'); 
    35     } 
     26function cssmin_init(){ 
     27    $minify_enabled_check = get_option('minify_enabled_check'); 
     28    $minify_css_on = get_option('minify_css_on'); 
     29    $head_detect = get_option('head_detect'); 
     30    $foot_detect = get_option('foot_detect'); 
     31    $css_load_type = get_option('css_load_type'); 
     32    if ($minify_css_on =="on"){ 
     33        add_action('wp_print_styles','ajc_print_styles'); 
     34    } 
    3635} 
     36 
     37add_action('init', 'cssmin_init'); 
     38 
     39function ajc_print_styles(){ 
     40    global $css_styles_are_minified; 
     41    global $all_styles; 
     42         
     43    if ( is_admin() || !empty($css_styles_are_minified) ) { 
     44        return; 
     45    } 
     46      
     47    $css_styles_are_minified = true; 
     48    $all_styles = get_styles_list(); 
    3749     
    38 add_action('init',                  'cssmin_init'); 
    39  
    40  function ajc_print_styles(){ 
    41     global $css_styles_are_minified; 
    42     global $all_styles; 
    43   
    44     if ( is_admin() || !empty($css_styles_are_minified) ) { 
    45         return; 
    46     } 
    47   
    48     $css_styles_are_minified = true; 
    49   
    50     $all_styles = get_styles_list(); 
    51   
    52     //~ dump(get_option('css_load_type')); 
    53     if (get_option('css_load_type')=='inline_header'){ 
    54         $not_inlined = array(); 
    55         $minify = get_option('cssminify_enabled'); 
    56                  //~ $ajc_styles = array_reverse($ajc_styles,true); 
    57         foreach ($all_styles as $style){ 
    58             echo "<style type=\"text/css\" ".($style['media'] ? "media=\"{$style['media']}\"" : '' ).">"; 
    59             if (!inline_css($style['src'],$minify)){ 
    60                 $not_inlined[] = $style; 
    61             } 
    62             echo "</style>"; 
    63         } 
    64         if (!empty($not_inlined)){ 
    65             foreach ($not_inlined as $style){ 
    66                 ?><link rel="stylesheet"  href="<?php echo $style['src']?>" type="text/css" <?php echo $style['media'] ? "media=\"{$style['media']}\"" : ''?> /><?php 
    67             } 
    68         } 
    69     } 
    70   
    71     unregister_all_styles(); 
    72  } 
     50    //~ dump(get_option('css_load_type')); 
     51    if (get_option('css_load_type')=='inline_header'){ 
     52        $not_inlined = array(); 
     53        $minify = get_option('cssminify_enabled'); 
     54        //~ $ajc_styles = array_reverse($ajc_styles,true); 
     55        foreach ($all_styles as $style){ 
     56            echo "<style type=\"text/css\" ".($style['media'] ? "media=\"{$style['media']}\"" : '' ).">"; 
     57            if (!inline_css($style['src'],$minify)){ 
     58                $not_inlined[] = $style; 
     59            } 
     60            echo "</style>"; 
     61        } 
     62        if (!empty($not_inlined)){ 
     63            foreach ($not_inlined as $style){ 
     64                ?><link rel="stylesheet"  href="<?php echo $style['src']?>" type="text/css" <?php echo $style['media'] ? "media=\"{$style['media']}\"" : ''?> /><?php 
     65            } 
     66        } 
     67    } 
     68    unregister_all_styles(); 
     69} 
    7370  
    7471  
    75  function ajc_print_delayed_styles(){ 
    76     global $all_styles; 
    77   
    78     $css_load_type              = get_option('css_load_type'); 
    79   
    80     switch ($css_load_type){ 
    81         case "import":{ 
    82             echo "<style type=\"text/css\">"; 
    83             foreach ($all_styles as $style){ 
    84                 echo "@import url(\"{$style['src']}\")".($style['media'] ? " ".$style['media'] : '').";"; 
    85             } 
    86             echo "</style>"; 
    87             break; 
    88         } 
    89         case "inline": 
    90         case "inline_footer": { 
    91             $not_inlined = array(); 
    92             $minify = get_option('css_minify'); 
    93                          //~ $ajc_styles = array_reverse($ajc_styles,true); 
    94             foreach ($all_styles as $style){ 
    95                 echo "<style type=\"text/css\" ".($style['media'] ? "media=\"{$style['media']}\"" : '' ).">"; 
    96                 if (!inline_css($style['src'],$minify)){ 
    97                     $not_inlined[] = $style; 
    98                 } 
    99                 echo "</style>"; 
    100             } 
    101             if (!empty($not_inlined)){ 
    102                 foreach ($not_inlined as $style){ 
    103                     ?><link rel="stylesheet"  href="<?php echo $style['src']?>" type="text/css" <?php echo $style['media'] ? "media=\"{$style['media']}\"" : ''?> /><?php 
    104                 } 
    105             } 
    106             break; 
    107         } 
    108         case "link":{ 
    109             foreach ($all_styles as $style){ 
    110                 ?><link rel="stylesheet"  href="<?php echo $style['src']?>" type="text/css" <?php echo $style['media'] ? "media=\"{$style['media']}\"" : ''?> /><?php 
    111             } 
    112         } 
    113     } 
    114  }  
     72function ajc_print_delayed_styles(){ 
     73    global $all_styles; 
     74 
     75    $css_load_type = get_option('css_load_type'); 
     76 
     77    switch ($css_load_type){ 
     78        case "import":{ 
     79            echo "<style type=\"text/css\">"; 
     80            foreach ($all_styles as $style){ 
     81                echo "@import url(\"{$style['src']}\")".($style['media'] ? " ".$style['media'] : '').";"; 
     82            } 
     83            echo "</style>"; 
     84            break; 
     85        } 
     86        case "inline": 
     87        case "inline_footer": { 
     88            $not_inlined = array(); 
     89            $minify = get_option('css_minify'); 
     90            //~ $ajc_styles = array_reverse($ajc_styles,true); 
     91            foreach ($all_styles as $style){ 
     92                echo "<style type=\"text/css\" ".($style['media'] ? "media=\"{$style['media']}\"" : '' ).">"; 
     93                if (!inline_css($style['src'],$minify)){ 
     94                    $not_inlined[] = $style; 
     95                } 
     96                echo "</style>"; 
     97            } 
     98            if (!empty($not_inlined)){ 
     99                foreach ($not_inlined as $style){ 
     100                    ?><link rel="stylesheet"  href="<?php echo $style['src']?>" type="text/css" <?php echo $style['media'] ? "media=\"{$style['media']}\"" : ''?> /><?php 
     101                } 
     102            } 
     103            break; 
     104        } 
     105        case "link":{ 
     106            foreach ($all_styles as $style){ 
     107                ?><link rel="stylesheet"  href="<?php echo $style['src']?>" type="text/css" <?php echo $style['media'] ? "media=\"{$style['media']}\"" : ''?> /><?php 
     108            } 
     109        } 
     110    } 
     111}  
    115112 
    116113error_reporting(E_ALL);  
     
    148145 
    149146    public function installation(){ 
    150          
    151     // setup wp_options elements on activation  
    152         add_option('rediscache_enabled', 'no', '', 'no'); 
    153         add_option('cssminify_enabled', 'on'); 
    154         update_option('minify_css_on',                      'on'); 
    155         update_option('css_load_type',          'inline_header'); 
    156         update_option('head_detect',    'on'); 
     147        // setup wp_options elements on activation  
     148        add_option('rediscache_enabled', 'no', '', 'no'); 
     149        add_option('cssminify_enabled', 'on'); 
     150        update_option('minify_css_on', 'on'); 
     151        update_option('css_load_type', 'inline_header'); 
     152        update_option('head_detect', 'on'); 
    157153        add_option('rediscache_enabled', 'no', '', 'no'); 
    158154        add_option('rediscache_server', $this->encrypt($default_server), '', 'no'); 
     
    182178        $html_cache = ""; 
    183179        $html = ""; 
    184     try{ include_once(get_home_path().'wp-config.php'); } catch(Exception $e){ echo 'Message: '.$e->getMessage();} 
     180        try{ include_once(get_home_path().'wp-config.php'); } catch(Exception $e){ echo 'Message: '.$e->getMessage();} 
    185181        include_once( dirname( __file__ )  . '/predis.php'); 
    186     $start = microtime(); 
     182        $start = microtime(); 
    187183        if (isset($_SERVER['HTTP_CF_CONNECTING_IP'])) { $_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_CF_CONNECTING_IP']; } 
    188     $host = $this->decrypt(get_option('rediscache_server')); 
    189     $port = $this->decrypt(get_option('rediscache_port')); 
    190     $pass = $this->decrypt(get_option('rediscache_pass')); 
    191     $database = $this->decrypt(get_option('rediscache_database')); 
    192     $ttl = $this->decrypt(get_option('rediscache_ttl')); 
     184        $host = $this->decrypt(get_option('rediscache_server')); 
     185        $port = $this->decrypt(get_option('rediscache_port')); 
     186        $pass = $this->decrypt(get_option('rediscache_pass')); 
     187        $database = $this->decrypt(get_option('rediscache_database')); 
     188        $ttl = $this->decrypt(get_option('rediscache_ttl')); 
    193189 
    194190        if(strlen($pass) >= 1){ 
    195         $params = array( 
    196             'host' => "$host", 
    197             'port' => $port, 
    198             'password' => $pass, 
    199             'database' => $database 
    200         ); 
     191            $params = array( 
     192                'host' => "$host", 
     193                'port' => $port, 
     194                'password' => $pass, 
     195                'database' => $database 
     196            ); 
    201197        }else{ 
    202198            $params = array( 
     
    211207            $redis = new Predis\Client($params); 
    212208 
    213         $domain = $_SERVER['HTTP_HOST']; 
    214         $url = "http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; 
    215         $dkey = md5($domain); 
    216         $ukey = md5($url); 
    217         (isset($_SERVER['HTTP_CACHE_CONTROL']) && $_SERVER['HTTP_CACHE_CONTROL'] == 'max-age=0') ? $submit = 1 : $submit = 0; 
    218         $cookie = var_export($_COOKIE, true); 
    219         $loggedin = preg_match("/wordpress_logged_in/", $cookie); 
    220         //echo "$dkey => $ukey ;"; 
    221         if ($redis->hexists($dkey, $ukey) && !$loggedin && !$submit && !strpos($url, '/feed/')) { 
    222             $html_cache = $redis->hget($dkey, $ukey); 
    223             $cached = 1; 
    224             $msg = 'this is a cache'; 
    225         }elseif($submit || substr($_SERVER['REQUEST_URI'], -4) == '?r=y') { 
    226             $redis->hdel($dkey, $ukey); 
    227             $msg = 'cache of page deleted'; 
    228         }elseif($loggedin && substr($_SERVER['REQUEST_URI'], -4) == '?c=y') { 
    229             if ($redis->exists($dkey)) { 
    230                 $redis->del($dkey); 
    231                 $msg = 'domain cache flushed'; 
    232             }else{ 
    233                 $msg = 'no cache to flush'; 
    234             } 
    235         }elseif($loggedin){ 
    236             $msg = 'not cached'; 
    237         }else{  //constructing the cache  
    238             //echo "Constructing cache"; 
    239             ob_start(); 
    240             include( get_home_path() .'./wp-blog-header.php'); 
    241             if (get_option('minify_css_on')=="on"){ 
    242                 add_action('wp_print_styles',       'ajc_print_styles'); 
    243             }else{} 
    244             $html = ob_get_contents(); 
    245             ob_end_clean(); 
    246             if(!is_404() && !is_search()) { 
    247                 $redis->hset($dkey, $ukey, $html); 
    248                 $redis->expire($dkey, $ttl); 
    249                 $ttlremain = $redis->ttl($dkey); 
    250                 $msg = 'cache is set'; 
    251             } 
    252         } 
    253         if(strlen($html_cache) >= 1){ 
    254             @ob_flush(); 
    255             echo $html_cache; 
    256             $end = microtime(); 
    257             echo "\n<!-- redis cache key: $dkey was used. -->\n"; 
    258             echo "<!-- redis cache time: ".$this->t_exec($start, $end)." -->\n"; 
    259             //echo "<!-- redis ttl remaining: ".$this->$ttlremain.". -->\n"; 
    260             die(); 
    261         }elseif(strlen($html) >= 1){ 
    262             echo $html; 
    263             die(); 
    264         }else{ 
    265         } 
    266         } 
     209            $domain = $_SERVER['HTTP_HOST']; 
     210            $url = "http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; 
     211            $dkey = md5($domain); 
     212            $ukey = md5($url); 
     213            (isset($_SERVER['HTTP_CACHE_CONTROL']) && $_SERVER['HTTP_CACHE_CONTROL'] == 'max-age=0') ? $submit = 1 : $submit = 0; 
     214            $cookie = var_export($_COOKIE, true); 
     215            $loggedin = preg_match("/wordpress_logged_in/", $cookie); 
     216            //echo "$dkey => $ukey ;"; 
     217            if ($redis->hexists($dkey, $ukey) && !$loggedin && !$submit && !strpos($url, '/feed/')) { 
     218                $html_cache = $redis->hget($dkey, $ukey); 
     219                $cached = 1; 
     220                $msg = 'this is a cache'; 
     221            }elseif($submit || substr($_SERVER['REQUEST_URI'], -4) == '?r=y') { 
     222                $redis->hdel($dkey, $ukey); 
     223                //$msg = 'cache of page deleted'; 
     224            }elseif($loggedin && substr($_SERVER['REQUEST_URI'], -4) == '?c=y') { 
     225                if ($redis->exists($dkey)) { 
     226                    $redis->del($dkey); 
     227                    $msg = 'domain cache flushed'; 
     228                }else{ 
     229                    $msg = 'no cache to flush'; 
     230                } 
     231            }elseif($loggedin){ 
     232                $msg = 'not cached'; 
     233            }else{  //constructing the cache  
     234                //echo "Constructing cache"; 
     235                ob_start(); 
     236                include( get_home_path() .'./wp-blog-header.php'); 
     237                if (get_option('minify_css_on')=="on"){ 
     238                    add_action('wp_print_styles', 'ajc_print_styles'); 
     239                }else{} 
     240                $html = ob_get_contents(); 
     241                ob_end_clean(); 
     242                if(!is_404() && !is_search()) { 
     243                    $redis->hset($dkey, $ukey, $html); 
     244                    $redis->expire($dkey, $ttl); 
     245                    $ttlremain = $redis->ttl($dkey); 
     246                    $msg = 'cache is set'; 
     247                } 
     248            } 
     249            if(strlen($html_cache) >= 1){ 
     250                @ob_flush(); 
     251                echo $html_cache; 
     252                $end = microtime(); 
     253                echo "\n<!-- redis cache key: $dkey was used. -->\n"; 
     254                echo "<!-- redis cache time: ".$this->t_exec($start, $end)." -->\n"; 
     255                //echo "<!-- redis ttl remaining: ".$this->$ttlremain.". -->\n"; 
     256                die(); 
     257            }elseif(strlen($html) >= 1){ 
     258                echo $html; 
     259                die(); 
     260            }else{} 
     261            } 
    267262        catch(Exception $e){ 
    268263            echo '<div class="error"> Message: ' .$e->getMessage(). '</div>'; 
    269264        } 
    270265        $end = microtime(); 
    271         //$debug = 1; 
     266        //$debug = 0; 
    272267        //$display_powered_by_redis = 1; 
    273         if (isset($debug)) { 
    274             echo $msg.': '; 
    275             echo $this->t_exec($start, $end); 
    276         } 
     268        //if (isset($debug)) { 
     269            //echo $msg.': '; 
     270            //echo $this->t_exec($start, $end); 
     271        //} 
    277272        if (isset($cached) && isset($display_powered_by_redis)) { 
    278         echo "<style>#redis_powered{float:right;margin:20px 0;background:url(http://94d65bca695befb24601-d2361d348cad2f3de9f9f0e0a54dbefa.r34.cf1.rackcdn.com/redis.png) 10px no-repeat #fff;border:1px solid #D7D8DF;padding:10px;width:190px;} 
    279              #redis_powered div{width:190px;text-align:right;font:10px/11px arial,sans-serif;color:#000;}</style>"; 
    280         echo "<a href=\"http://www.jimwestergren.com/wordpress-with-redis-as-a-frontend-cache/\" style=\"text-decoration:none;\"><div id=\"redis_powered\"><div>Page generated in<br/> ".$this->t_exec($start, $end)." sec</div></div></a>"; 
    281         } 
    282     } 
    283  
    284  
    285     private function buffer_start() { 
    286         //More will be placed here 
     273            echo "<style>#redis_powered{float:right;margin:20px 0;background:url(http://94d65bca695befb24601-d2361d348cad2f3de9f9f0e0a54dbefa.r34.cf1.rackcdn.com/redis.png) 10px no-repeat #fff;border:1px solid #D7D8DF;padding:10px;width:190px;} 
     274            #redis_powered div{width:190px;text-align:right;font:10px/11px arial,sans-serif;color:#000;}</style>"; 
     275            echo "<a href=\"http://www.jimwestergren.com/wordpress-with-redis-as-a-frontend-cache/\" style=\"text-decoration:none;\"><div id=\"redis_powered\"><div>Page generated in<br/> ".$this->t_exec($start, $end)." sec</div></div></a>"; 
     276        } 
     277    } 
     278    private function buffer_start() { 
     279        //More will be placed here 
    287280    } 
    288281 
     
    317310        $dkey = md5($domain); 
    318311        $ukey = md5($url); 
    319         if(!is_404() && !is_search()) { 
    320             continue; 
     312        if(!is_404() && !is_search()) { 
     313            continue; 
    321314        } 
    322315    } 
     
    346339        $redis->flushdb(); 
    347340        return $count; 
    348     }     
     341    } 
     342 
     343    public function clear_cache_on_update( $post_id ) { 
     344        //checking for revision 
     345        if ( wp_is_post_revision( $post_id ) ) 
     346        //purge cache 
     347        $count_purged = $this->flush_db(); 
     348    } 
    349349 
    350350    public function t_exec($start, $end) { 
     
    354354 
    355355    public function getmicrotime($t) { 
    356             list($usec, $sec) = explode(" ",$t); 
    357             return ((float)$usec + (float)$sec); 
     356        list($usec, $sec) = explode(" ",$t); 
     357        return ((float)$usec + (float)$sec); 
    358358    } 
    359359 
     
    361361    public function do_redis_cache_setting() {     
    362362        //Cloud Flare: 
    363     if (isset($_SERVER['HTTP_CF_CONNECTING_IP'])) { $_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_CF_CONNECTING_IP']; } 
     363        if (isset($_SERVER['HTTP_CF_CONNECTING_IP'])) { $_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_CF_CONNECTING_IP']; } 
    364364         
    365     try{ include_once(get_home_path().'wp-config.php'); } catch(Exception $e){ echo 'Message: '.$e->getMessage();} 
     365        try{ include_once(get_home_path().'wp-config.php'); } catch(Exception $e){ echo 'Message: '.$e->getMessage();} 
    366366         
    367367        ?> 
    368368        <h1>Redis Cache</h1> 
    369369        <h3>Details</h3> 
    370     <?php if(get_option('rediscache_enabled') == 'no'){ $status='off';}else{$status='on';}  
     370        <?php if(get_option('rediscache_enabled') == 'no'){ $status='off';}else{$status='on';}  
    371371            if($status == 'off'){?> 
    372         <form action="" method="post"> 
    373             <input type="hidden" name="action" value="cache_enable"> 
    374             <?php if (function_exists('wp_nonce_field')){wp_nonce_field();} ?> 
    375             <input type="submit" value="Enable" class="button button-primary"> 
     372                <form action="" method="post"> 
     373                <input type="hidden" name="action" value="cache_enable"> 
     374                <?php if (function_exists('wp_nonce_field')){wp_nonce_field();} ?> 
     375                <input type="submit" value="Enable" class="button button-primary"> 
     376                </form> 
     377            <?php }elseif($status == 'on'){?> 
     378                <form action="" method="post"> 
     379                <input type="hidden" name="action" value="cache_disable"> 
     380                <?php if (function_exists('wp_nonce_field')){wp_nonce_field();} ?> 
     381                <input type="submit" value="Disable" class="button button-primay"> 
     382                </form> 
     383        <?php }?> 
     384        <hr> 
     385        <h2>Settings</h2> 
     386        <form action="" method="post"> 
     387        <input type="hidden" name="action" value="save_settings"> 
     388        <?php if (function_exists('wp_nonce_field')){wp_nonce_field();} ?> 
     389        <p><label for="server">Redis Server</label> 
     390            <input type="text" name="server" value="<?php echo $this->decrypt(get_option('rediscache_server'));?>" placeholder="localhost"></p> 
     391        <p><label for="database">Redis Instance</label> 
     392            <input type="text" name="database" value="<?php echo $this->decrypt(get_option('rediscache_database'));?>" placeholder="0"></p> 
     393        <p><label for="port">Redis Port</label> 
     394            <input type="text" name="port" value="<?php echo $this->decrypt(get_option('rediscache_port'));?>" placeholder="6379"></p> 
     395        <p><label for="password">Redis Password</label> 
     396            <input type="password" name="password" value="<?php echo $this->decrypt(get_option('rediscache_pass'));?>" placeholder="password"></p> 
     397        <p><label for="ttlset">Cache Expiration (in seconds)</label> 
     398            <input type="text" name="ttlset" value="<?php echo $this->decrypt(get_option('rediscache_ttl'));?>" placeholder="3600"></p> 
     399            <input type="submit" value="Save Settings" class="button button-primary"> 
     400        </form> 
     401        <hr> 
     402        <h3>Minify CSS</h3> 
     403        <?php if(get_option('cssminify_enabled') == 'off'){$status='off';}else{$status='on';}  
     404        if($status == 'off'){?> 
     405            <form action="" method="post"> 
     406                <input type="hidden" name="action" value="cssminify_enable"> 
     407                <?php if (function_exists('wp_nonce_field')){wp_nonce_field();} ?> 
     408                <input type="submit" value="Enable" class="button button-primary"> 
    376409            </form> 
    377410        <?php }elseif($status == 'on'){?> 
    378411            <form action="" method="post"> 
    379             <input type="hidden" name="action" value="cache_disable"> 
    380             <?php if (function_exists('wp_nonce_field')){wp_nonce_field();} ?> 
    381             <input type="submit" value="Disable" class="button button-primay"> 
     412                <input type="hidden" name="action" value="cssminify_disable"> 
     413                <?php if (function_exists('wp_nonce_field')){wp_nonce_field();} ?> 
     414                <input type="submit" value="Disable" class="button button-primay"> 
    382415            </form> 
    383416        <?php }?> 
    384     <hr> 
    385         <h2>Settings</h2> 
     417        <h2>Flush Cache</h2> 
    386418        <form action="" method="post"> 
    387         <input type="hidden" name="action" value="save_settings"> 
    388     <?php if (function_exists('wp_nonce_field')){wp_nonce_field();} ?> 
    389         <p><label for="server">Redis Server</label> 
    390            <input type="text" name="server" value="<?php echo $this->decrypt(get_option('rediscache_server'));?>" placeholder="localhost"></p> 
    391         <p><label for="database">Redis Instance</label> 
    392            <input type="text" name="database" value="<?php echo $this->decrypt(get_option('rediscache_database'));?>" placeholder="0"></p> 
    393         <p><label for="port">Redis Port</label> 
    394            <input type="text" name="port" value="<?php echo $this->decrypt(get_option('rediscache_port'));?>" placeholder="6379"></p> 
    395         <p><label for="password">Redis Password</label> 
    396            <input type="password" name="password" value="<?php echo $this->decrypt(get_option('rediscache_pass'));?>" placeholder="password"></p> 
    397         <p><label for="ttlset">Cache Expiration (in seconds)</label> 
    398            <input type="text" name="ttlset" value="<?php echo $this->decrypt(get_option('rediscache_ttl'));?>" placeholder="3600"></p> 
    399         <input type="submit" value="Save Settings" class="button button-primary"> 
    400         </form> 
    401     <hr> 
    402 <h3>Minify CSS</h3> 
    403 <?php if(get_option('cssminify_enabled') == 'off'){$status='off';}else{$status='on';}  
    404         if($status == 'off'){?> 
    405     <form action="" method="post"> 
    406         <input type="hidden" name="action" value="cssminify_enable"> 
    407         <?php if (function_exists('wp_nonce_field')){wp_nonce_field();} ?> 
    408         <input type="submit" value="Enable" class="button button-primary"> 
    409         </form> 
    410     <?php }elseif($status == 'on'){?> 
    411         <form action="" method="post"> 
    412         <input type="hidden" name="action" value="cssminify_disable"> 
    413         <?php if (function_exists('wp_nonce_field')){wp_nonce_field();} ?> 
    414         <input type="submit" value="Disable" class="button button-primay"> 
    415         </form> 
    416     <?php }?> 
    417     <h2>Flush Cache</h2> 
    418         <form action="" method="post"> 
    419419            <?php if (function_exists('wp_nonce_field')){wp_nonce_field();} ?> 
    420420            <input type="hidden" name="action" value="flush_db"> 
     
    422422        </form> 
    423423        <?php 
    424     if($_POST){ 
    425     $action = $_POST['action']; 
    426     if($action == 'cssminify_enable'){ 
    427             if(check_admin_referer()){ 
    428                 update_option('cssminify_enabled', 'on'); 
    429                 update_option('minify_enabled_check',                           'on'); 
    430                 update_option('minify_css_on',                      'on'); 
    431                 update_option('head_detect',    'on'); 
    432                 update_option('foot_detect',    'on'); 
    433                 update_option('css_load_type',          'inline_header'); 
    434                 update_option('css_minify',                     'on'); 
    435                 echo "<meta http-equiv=\"refresh\" content=\"0\">";                  
    436                 } 
    437         }elseif($action == 'cssminify_disable'){ 
    438             if(check_admin_referer()){ 
    439                 update_option('cssminify_enabled', 'off'); 
    440                 update_option('minify_enabled_check', 'off'); 
    441                 update_option('minify_css_on', 'off'); 
    442                 update_option('head_detect', 'off'); 
    443                 update_option('foot_detect', 'off'); 
    444                 update_option('css_load_type', 'js'); 
    445                 update_option('css_minify',                     'off');  
    446                 echo "<meta http-equiv=\"refresh\" content=\"0\">";              
    447                     } 
    448                 }                            
    449             if($action == 'cache_enable'){ 
    450                 if(check_admin_referer()){ 
    451                     update_option('rediscache_enabled', 'yes', '', 'no'); 
    452             echo "<meta http-equiv=\"refresh\" content=\"0\">"; 
    453                 }else{ 
    454                     $this->denied($verify); 
    455                 } 
    456             }elseif($action == 'cache_disable'){ 
    457                 if(check_admin_referer()){ 
    458                     update_option('rediscache_enabled', 'no', '', 'no'); 
    459             echo "<meta http-equiv=\"refresh\" content=\"0\">"; 
    460                 }else{ 
    461                     $this->denied($verify); 
    462                 } 
    463             }elseif($action == 'save_settings'){ 
    464                 if(!empty($_POST)){ 
    465                     $server = $_POST['server']; 
    466                     $database=$_POST['database']; 
    467                     $port=$_POST['port']; 
    468                     $pass=$_POST['password']; 
    469                     $ttlset=$_POST['ttlset']; 
     424        if($_POST){ 
     425        $action = $_POST['action']; 
     426        if($action == 'cssminify_enable'){ 
     427            if(check_admin_referer()){ 
     428                update_option('cssminify_enabled', 'on'); 
     429                update_option('minify_enabled_check', 'on'); 
     430                update_option('minify_css_on', 'on'); 
     431                update_option('head_detect', 'on'); 
     432                update_option('foot_detect', 'on'); 
     433                update_option('css_load_type', 'inline_header'); 
     434                update_option('css_minify', 'on'); 
     435                echo "<meta http-equiv=\"refresh\" content=\"0\">"; 
     436            } 
     437        }elseif($action == 'cssminify_disable'){ 
     438            if(check_admin_referer()){ 
     439                update_option('cssminify_enabled', 'off'); 
     440                update_option('minify_enabled_check', 'off'); 
     441                update_option('minify_css_on', 'off'); 
     442                update_option('head_detect', 'off'); 
     443                update_option('foot_detect', 'off'); 
     444                update_option('css_load_type', 'js'); 
     445                update_option('css_minify', 'off'); 
     446                echo "<meta http-equiv=\"refresh\" content=\"0\">"; 
     447            } 
     448        } 
     449        if($action == 'cache_enable'){ 
     450            if(check_admin_referer()){ 
     451                update_option('rediscache_enabled', 'yes', '', 'no'); 
     452                echo "<meta http-equiv=\"refresh\" content=\"0\">"; 
     453            }else{ 
     454                $this->denied($verify); 
     455            } 
     456        }elseif($action == 'cache_disable'){ 
     457            if(check_admin_referer()){ 
     458                update_option('rediscache_enabled', 'no', '', 'no'); 
     459                echo "<meta http-equiv=\"refresh\" content=\"0\">"; 
     460            }else{ 
     461                $this->denied($verify); 
     462            } 
     463        }elseif($action == 'save_settings'){ 
     464            if(!empty($_POST)){ 
     465                $server = $_POST['server']; 
     466                $database=$_POST['database']; 
     467                $port=$_POST['port']; 
     468                $pass=$_POST['password']; 
     469                $ttlset=$_POST['ttlset']; 
    470470                if(check_admin_referer()){ 
    471471                    update_option('rediscache_server', $this->encrypt($server), '', 'no'); 
     
    475475                    update_option('rediscache_ttl', $this->encrypt($ttlset), '', 'no'); 
    476476                    echo "<meta http-equiv=\"refresh\" content=\"0\">"; 
    477                  }} 
    478             }elseif($action == 'flush_db'){ 
    479                 if(check_admin_referer()){ 
    480                 $count_purged = print_r($this->flush_db()); 
    481                 //echo "<meta http-equiv=\"refresh\" content=\"0\">"; 
    482                 echo "<div class='updated'> Message: Cache purged -> ($count_purged)</div>"; 
    483             }} 
    484         } 
    485     } 
    486      
     477                 } 
     478             } 
     479         }elseif($action == 'flush_db'){ 
     480             if(check_admin_referer()){ 
     481                 $count_purged = $this->flush_db(); 
     482                 //echo "<meta http-equiv=\"refresh\" content=\"0\">"; 
     483                 echo "<div class='updated'> Message: Cache purged -> ($count_purged)</div>"; 
     484             } 
     485         } 
     486    } 
     487    }     
    487488} 
    488  
    489489// Instantiate the class object. 
    490490$rcplugin = new APF_rediscache; 
     
    493493    add_action('wp_head', array($rcplugin, 'buffer_start')); 
    494494    add_action('wp_footer', array($rcplugin, 'buffer_end')); 
     495    add_action('save_post', array($rcplugin, 'clear_cache_on_update')); 
    495496}elseif(get_option('rediscache_enabled') == 'no'){ 
    496497    remove_action('init', array($rcplugin, 'redis_init'), 10, 1); 
    497498}else{} 
    498     register_activation_hook( __FILE__, array( $rcplugin, 'installation' ) ); 
    499     register_deactivation_hook( __FILE__, array( $rcplugin, 'uninstall' ) ); 
     499register_activation_hook( __FILE__, array( $rcplugin, 'installation' ) ); 
     500register_deactivation_hook( __FILE__, array( $rcplugin, 'uninstall' ) ); 
    500501?> 
  • wp-redis-cache/trunk/readme.txt

    r959436 r998187  
    66Tested up to: 3.4 
    77Stable tag: 0.2 
    8 Version: 0.2 
     8Version: 0.2.5 
    99License: GPLv2 or later 
    1010License URI: http://www.gnu.org/licenses/gpl-2.0.html 
     
    2727 - Wordpress :) 
    2828 - PHP 
     29 - mcrypt 
    2930 - Redis server 
    3031 - Redis credentials (optional) 
     
    6667* Added css minification ability 
    6768 
     69= 0.2.5 = 
     70* Added post event purging 
     71 
    6872== Upgrade Notice == 
    6973 
     
    7276= 0.2 = 
    7377Added new features! 
     78= 0.2.5 = 
     79Automatic cache purging on post 
    7480 
    7581== Arbitrary section == 
Note: See TracChangeset for help on using the changeset viewer.