WP Super Cache - Version 0.8.2

Version Description

Download this release

Release Info

Developer donncha
Plugin Icon 128x128 WP Super Cache
Version 0.8.2
Comparing to
See all releases

Code changes from version 0.8.1 to 0.8.2

Files changed (5) hide show
  1. Changelog.txt +46 -0
  2. readme.txt +1 -1
  3. wp-cache-config-sample.php +5 -0
  4. wp-cache-phase2.php +66 -34
  5. wp-cache.php +17 -6
Changelog.txt CHANGED
@@ -1,3 +1,49 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  2008-09-24 13:03 donncha
2
 
3
  * wp-cache-phase2.php: Added function to clear cache when a post is
1
+ 2008-09-26 23:15 donncha
2
+
3
+ * readme.txt, wp-cache.php: Bump the version number to 0.8.2
4
+
5
+ 2008-09-26 23:14 donncha
6
+
7
+ * wp-cache-config-sample.php, wp-cache-phase2.php, wp-cache.php:
8
+ Added $cache_rebuild_files setting to switch off "need rebuild"
9
+ functionality by default
10
+
11
+ 2008-09-26 16:00 donncha
12
+
13
+ * wp-cache-phase2.php: On post change clear the front page
14
+
15
+ 2008-09-26 12:04 donncha
16
+
17
+ * wp-cache-phase2.php: Move cache writers entry up above supercache
18
+ cleaning.
19
+ Only clean individual posts, don't clear cache when no post_id
20
+
21
+ 2008-09-26 09:49 donncha
22
+
23
+ * wp-cache.php: Only show "Delete Cache" link to MU site admins or
24
+ admins on WP blogs
25
+
26
+ 2008-09-25 12:47 donncha
27
+
28
+ * wp-cache.php: Save "wp_cache_clear_on_post_edit" properly, thanks
29
+ HarryRAR,
30
+ http://wordpress.org/support/topic/206371?replies=2#post-861998
31
+
32
+ 2008-09-25 11:12 donncha
33
+
34
+ * wp-cache-phase2.php, wp-cache.php: Can't clear cache on edit_post
35
+ because leaving a comment calls edit_post unfortunately
36
+ Experimental code to preserve supercache version of a page while
37
+ it's being regenerated.
38
+
39
+ 2008-09-24 14:21 donncha
40
+
41
+ * wp-cache.php: Added "Delete Cache" link at top of admin pages
42
+
43
+ 2008-09-24 13:57 donncha
44
+
45
+ * Changelog.txt: Updated changelog, still release 0.8.1
46
+
47
  2008-09-24 13:03 donncha
48
 
49
  * wp-cache-phase2.php: Added function to clear cache when a post is
readme.txt CHANGED
@@ -2,7 +2,7 @@
2
  Contributors: donncha
3
  Tags: performance,caching,wp-cache
4
  Tested up to: 2.6.2
5
- Stable tag: 0.8.1
6
  Requires at least: 2.2
7
 
8
  A very fast caching engine for WordPress that produces static html files.
2
  Contributors: donncha
3
  Tags: performance,caching,wp-cache
4
  Tested up to: 2.6.2
5
+ Stable tag: 0.8.2
6
  Requires at least: 2.2
7
 
8
  A very fast caching engine for WordPress that produces static html files.
wp-cache-config-sample.php CHANGED
@@ -42,6 +42,11 @@ $cache_acceptable_files = array( 'wp-comments-popup.php', 'wp-links-opml.php', '
42
  $cache_rejected_uri = array('wp-.*.php', 'index.php');
43
  $cache_rejected_user_agent = array ( 0 => 'bot', 1 => 'ia_archive', 2 => 'slurp', 3 => 'crawl', 4 => 'spider');
44
 
 
 
 
 
 
45
  // Just modify it if you have conflicts with semaphores
46
  $sem_id = 5419;
47
 
42
  $cache_rejected_uri = array('wp-.*.php', 'index.php');
43
  $cache_rejected_user_agent = array ( 0 => 'bot', 1 => 'ia_archive', 2 => 'slurp', 3 => 'crawl', 4 => 'spider');
44
 
45
+ // Change this to 1 to enable experimental code that tries to serve slightly
46
+ // out of date content to anon users while a new supercache file is being
47
+ // generated.
48
+ $cache_rebuild_files = 0;
49
+
50
  // Just modify it if you have conflicts with semaphores
51
  $sem_id = 5419;
52
 
wp-cache-phase2.php CHANGED
@@ -1,14 +1,13 @@
1
  <?php
2
 
3
  function wp_cache_phase2() {
4
- global $cache_filename, $cache_acceptable_files, $wp_cache_meta_object;
5
- global $wp_cache_gzip_encoding;
6
 
7
  wp_cache_mutex_init();
8
  if(function_exists('add_action') && ( !defined( 'WPLOCKDOWN' ) || ( defined( 'WPLOCKDOWN' ) && constant( 'WPLOCKDOWN' ) == '0' ) ) ) {
9
  // Post ID is received
10
  add_action('publish_post', 'wp_cache_post_edit', 0);
11
- add_action('edit_post', 'wp_cache_post_edit', 0);
12
  add_action('delete_post', 'wp_cache_post_edit', 0);
13
  add_action('publish_phone', 'wp_cache_post_edit', 0);
14
  // Coment ID is received
@@ -38,6 +37,28 @@ function wp_cache_phase2() {
38
  else
39
  header('Vary: Cookie');
40
  ob_start('wp_cache_ob_callback');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
41
  register_shutdown_function('wp_cache_shutdown_callback');
42
  }
43
 
@@ -126,6 +147,18 @@ function wp_cache_writers_exit() {
126
  sem_release($mutex);
127
  }
128
 
 
 
 
 
 
 
 
 
 
 
 
 
129
  function wp_cache_ob_callback($buffer) {
130
  global $cache_path, $cache_filename, $meta_file, $wp_start_time, $supercachedir;
131
  global $new_cache, $wp_cache_meta_object, $file_expired, $blog_id, $cache_compression;
@@ -165,12 +198,7 @@ function wp_cache_ob_callback($buffer) {
165
  the file was expired and its mtime is less than 5 seconds
166
  */
167
  if( !((!$file_expired && $mtime) || ($mtime && $file_expired && (time() - $mtime) < 5)) ) {
168
- $uri = preg_replace('/[ <>\'\"\r\n\t\(\)]/', '', str_replace( '/index.php', '/', str_replace( '..', '', $_SERVER['REQUEST_URI']) ) );
169
- $dir = strtolower(preg_replace('/:.*$/', '', $_SERVER["HTTP_HOST"])) . $uri; // To avoid XSS attacs
170
- $dir = trailingslashit( $cache_path . 'supercache/' . $dir );
171
- if( is_array( $cached_direct_pages ) && in_array( $_SERVER[ 'REQUEST_URI' ], $cached_direct_pages ) ) {
172
- $dir = trailingslashit( ABSPATH . $uri );
173
- }
174
  $supercachedir = $cache_path . 'supercache/' . preg_replace('/:.*$/', '', $_SERVER["HTTP_HOST"]);
175
  if( !empty( $_GET ) || is_feed() || ( $super_cache_enabled == true && is_dir( substr( $supercachedir, 0, -1 ) . '.disabled' ) ) )
176
  $super_cache_enabled = false;
@@ -181,7 +209,6 @@ function wp_cache_ob_callback($buffer) {
181
  return $buffer;
182
  }
183
  if( $super_cache_enabled ) {
184
- $dir = str_replace( '//', '/', $dir );
185
  if( @is_dir( $dir ) == false )
186
  @wp_mkdir_p( $dir );
187
 
@@ -236,15 +263,15 @@ function wp_cache_ob_callback($buffer) {
236
  fclose($fr);
237
  if( $fr2 ) {
238
  fclose($fr2);
239
- chmod( $tmp_cache_filename, 0666 & ~umask());
240
- if( !rename( $tmp_cache_filename, $cache_fname ) ) {
241
  unlink( $cache_fname );
242
  rename( $tmp_cache_filename, $cache_fname );
243
  }
244
  }
245
  if( $gz ) {
246
  fclose($gz);
247
- if( !rename( $tmp_cache_filename . '.gz', $cache_fname . '.gz' ) ) {
248
  unlink( $cache_fname . '.gz' );
249
  rename( $tmp_cache_filename . '.gz', $cache_fname . '.gz' );
250
  }
@@ -270,8 +297,8 @@ function wp_cache_phase2_clean_cache($file_prefix) {
270
  wp_cache_writers_exit();
271
  }
272
 
273
- function prune_super_cache($directory, $force = false) {
274
- global $cache_max_time, $cache_path, $super_cache_enabled;
275
 
276
  if( !is_admin() && $super_cache_enabled == 0 )
277
  return false;
@@ -289,23 +316,30 @@ function prune_super_cache($directory, $force = false) {
289
  $entries = glob($directory. '*');
290
  if( is_array( $entries ) && !empty( $entries ) ) foreach ($entries as $entry) {
291
  if ($entry != '.' && $entry != '..') {
292
- prune_super_cache($entry, $force);
293
  if( is_dir( $entry ) && ( $force || @filemtime( $entry ) + $cache_max_time <= $now ) ) {
294
  $oktodelete = true;
295
  if( in_array( $entry, $protected_directories ) )
296
  $oktodelete = false;
297
- if( $oktodelete )
298
  @rmdir( addslashes( $entry ) );
299
  }
300
  }
301
  }
302
- } else {
303
- if( is_file($directory) && ($force || filemtime( $directory ) + $cache_max_time <= $now ) ) {
304
- $oktodelete = true;
305
- if( in_array( $directory, $protected_directories ) )
306
- $oktodelete = false;
307
- if( $oktodelete )
308
- @unlink( addslashes( $directory ) );
 
 
 
 
 
 
 
309
  }
310
  }
311
  }
@@ -461,15 +495,19 @@ function wp_cache_post_change($post_id) {
461
 
462
  if ($post_id == $last_processed) return $post_id;
463
  $last_processed = $post_id;
 
 
 
464
  $permalink = trailingslashit( str_replace( get_option( 'siteurl' ), '', post_permalink( $post_id ) ) );
465
  if( $super_cache_enabled ) {
466
  $siteurl = trailingslashit( strtolower( preg_replace( '/:.*$/', '', str_replace( 'http://', '', get_option( 'home' ) ) ) ) );
467
- if( $post_id == 0 ) {
468
- prune_super_cache( $cache_path . 'supercache/' . $siteurl );
469
- } else {
 
470
  $permalink = trailingslashit( str_replace( get_option( 'home' ), '', post_permalink( $post_id ) ) );
471
  $dir = $cache_path . 'supercache/' . $siteurl;
472
- prune_super_cache( $dir . $permalink, true );
473
  @rmdir( $dir . $permalink );
474
  prune_super_cache( $dir . 'page/', true );
475
  }
@@ -477,8 +515,6 @@ function wp_cache_post_change($post_id) {
477
 
478
  $meta = new CacheMeta;
479
  $matches = array();
480
- if( !wp_cache_writers_entry() )
481
- return $post_id;
482
  if ( ($handle = opendir( $cache_path . 'meta/' )) ) {
483
  while ( false !== ($file = readdir($handle))) {
484
  if ( preg_match("/^({$file_prefix}{$blogcacheid}.*)\.meta/", $file, $matches) ) {
@@ -489,10 +525,6 @@ function wp_cache_post_change($post_id) {
489
  if ($meta->blog_id == $blog_id && (!$meta->post || $meta->post == $post_id) ) {
490
  @unlink($meta_pathname);
491
  @unlink($content_pathname);
492
- if( $super_cache_enabled ) {
493
- @unlink( $cache_path . 'supercache/' . trailingslashit( $meta->uri ) . 'index.html' );
494
- @unlink( $cache_path . 'supercache/' . trailingslashit( $meta->uri ) . 'index.html.gz' );
495
- }
496
  }
497
  } elseif ($meta->blog_id == $blog_id) {
498
  @unlink($meta_pathname);
1
  <?php
2
 
3
  function wp_cache_phase2() {
4
+ global $cache_filename, $cache_acceptable_files, $wp_cache_meta_object, $wp_cache_gzip_encoding, $super_cache_enabled, $cache_rebuild_files;
 
5
 
6
  wp_cache_mutex_init();
7
  if(function_exists('add_action') && ( !defined( 'WPLOCKDOWN' ) || ( defined( 'WPLOCKDOWN' ) && constant( 'WPLOCKDOWN' ) == '0' ) ) ) {
8
  // Post ID is received
9
  add_action('publish_post', 'wp_cache_post_edit', 0);
10
+ add_action('edit_post', 'wp_cache_post_change', 0); // leaving a comment called edit_post
11
  add_action('delete_post', 'wp_cache_post_edit', 0);
12
  add_action('publish_phone', 'wp_cache_post_edit', 0);
13
  // Coment ID is received
37
  else
38
  header('Vary: Cookie');
39
  ob_start('wp_cache_ob_callback');
40
+
41
+ // restore old supercache file temporarily
42
+ if( $super_cache_enabled && $cache_rebuild_files ) {
43
+ $user_info = wp_cache_get_cookies_values();
44
+ $do_cache = apply_filters( 'do_createsupercache', $user_info );
45
+ if( $user_info == '' || $do_cache === true ) {
46
+ $dir = get_current_url_supercache_dir();
47
+ $files_to_check = array( $dir . 'index.html', $dir . 'index.html.gz' );
48
+ foreach( $files_to_check as $cache_file ) {
49
+ if( !file_exists( $cache_file . '.needs-rebuild' ) )
50
+ continue;
51
+ $mtime = @filemtime($cache_file . '.needs-rebuild');
52
+ if( $mtime && (time() - $mtime) < 30 ) {
53
+ @rename( $cache_file . '.needs-rebuild', $cache_file );
54
+ }
55
+ // cleanup old files or if rename fails
56
+ if( @file_exists( $cache_file . '.needs-rebuild' ) ) {
57
+ @unlink( $cache_file . '.needs-rebuild' );
58
+ }
59
+ }
60
+ }
61
+ }
62
  register_shutdown_function('wp_cache_shutdown_callback');
63
  }
64
 
147
  sem_release($mutex);
148
  }
149
 
150
+ function get_current_url_supercache_dir() {
151
+ global $cached_direct_pages, $cache_path;
152
+ $uri = preg_replace('/[ <>\'\"\r\n\t\(\)]/', '', str_replace( '/index.php', '/', str_replace( '..', '', preg_replace("/(\?.*)?$/", '', $_SERVER['REQUEST_URI'] ) ) ) );
153
+ $dir = strtolower(preg_replace('/:.*$/', '', $_SERVER["HTTP_HOST"])) . $uri; // To avoid XSS attacs
154
+ $dir = trailingslashit( $cache_path . 'supercache/' . $dir );
155
+ if( is_array( $cached_direct_pages ) && in_array( $_SERVER[ 'REQUEST_URI' ], $cached_direct_pages ) ) {
156
+ $dir = trailingslashit( ABSPATH . $uri );
157
+ }
158
+ $dir = str_replace( '//', '/', $dir );
159
+ return $dir;
160
+ }
161
+
162
  function wp_cache_ob_callback($buffer) {
163
  global $cache_path, $cache_filename, $meta_file, $wp_start_time, $supercachedir;
164
  global $new_cache, $wp_cache_meta_object, $file_expired, $blog_id, $cache_compression;
198
  the file was expired and its mtime is less than 5 seconds
199
  */
200
  if( !((!$file_expired && $mtime) || ($mtime && $file_expired && (time() - $mtime) < 5)) ) {
201
+ $dir = get_current_url_supercache_dir();
 
 
 
 
 
202
  $supercachedir = $cache_path . 'supercache/' . preg_replace('/:.*$/', '', $_SERVER["HTTP_HOST"]);
203
  if( !empty( $_GET ) || is_feed() || ( $super_cache_enabled == true && is_dir( substr( $supercachedir, 0, -1 ) . '.disabled' ) ) )
204
  $super_cache_enabled = false;
209
  return $buffer;
210
  }
211
  if( $super_cache_enabled ) {
 
212
  if( @is_dir( $dir ) == false )
213
  @wp_mkdir_p( $dir );
214
 
263
  fclose($fr);
264
  if( $fr2 ) {
265
  fclose($fr2);
266
+ @chmod( $tmp_cache_filename, 0666 & ~umask());
267
+ if( !@rename( $tmp_cache_filename, $cache_fname ) ) {
268
  unlink( $cache_fname );
269
  rename( $tmp_cache_filename, $cache_fname );
270
  }
271
  }
272
  if( $gz ) {
273
  fclose($gz);
274
+ if( !@rename( $tmp_cache_filename . '.gz', $cache_fname . '.gz' ) ) {
275
  unlink( $cache_fname . '.gz' );
276
  rename( $tmp_cache_filename . '.gz', $cache_fname . '.gz' );
277
  }
297
  wp_cache_writers_exit();
298
  }
299
 
300
+ function prune_super_cache($directory, $force = false, $rename = false) {
301
+ global $cache_max_time, $cache_path, $super_cache_enabled, $cache_rebuild_files;
302
 
303
  if( !is_admin() && $super_cache_enabled == 0 )
304
  return false;
316
  $entries = glob($directory. '*');
317
  if( is_array( $entries ) && !empty( $entries ) ) foreach ($entries as $entry) {
318
  if ($entry != '.' && $entry != '..') {
319
+ prune_super_cache( $entry, $force, $rename );
320
  if( is_dir( $entry ) && ( $force || @filemtime( $entry ) + $cache_max_time <= $now ) ) {
321
  $oktodelete = true;
322
  if( in_array( $entry, $protected_directories ) )
323
  $oktodelete = false;
324
+ if( $oktodelete && !$rename )
325
  @rmdir( addslashes( $entry ) );
326
  }
327
  }
328
  }
329
+ } elseif( is_file($directory) && ($force || filemtime( $directory ) + $cache_max_time <= $now ) ) {
330
+ $oktodelete = true;
331
+ if( in_array( $directory, $protected_directories ) )
332
+ $oktodelete = false;
333
+ if( $oktodelete && !$rename ) {
334
+ @unlink( addslashes( $directory ) );
335
+ } elseif( $oktodelete && $rename ) {
336
+ if( $cache_rebuild_files && substr( $directory, -14 ) != '.needs-rebuild' ) {
337
+ if( @rename($directory, $directory . '.needs-rebuild') )
338
+ @touch( $directory . '.needs-rebuild' );
339
+ } else {
340
+ @unlink( $directory );
341
+ }
342
+
343
  }
344
  }
345
  }
495
 
496
  if ($post_id == $last_processed) return $post_id;
497
  $last_processed = $post_id;
498
+ if( !wp_cache_writers_entry() )
499
+ return $post_id;
500
+
501
  $permalink = trailingslashit( str_replace( get_option( 'siteurl' ), '', post_permalink( $post_id ) ) );
502
  if( $super_cache_enabled ) {
503
  $siteurl = trailingslashit( strtolower( preg_replace( '/:.*$/', '', str_replace( 'http://', '', get_option( 'home' ) ) ) ) );
504
+ // make sure the front page has a rebuild file
505
+ prune_super_cache( $cache_path . 'supercache/' . $siteurl . 'index.html', true, true );
506
+ prune_super_cache( $cache_path . 'supercache/' . $siteurl . 'index.html.gz', true, true );
507
+ if( $post_id != 0 ) {
508
  $permalink = trailingslashit( str_replace( get_option( 'home' ), '', post_permalink( $post_id ) ) );
509
  $dir = $cache_path . 'supercache/' . $siteurl;
510
+ prune_super_cache( $dir . $permalink, true, true );
511
  @rmdir( $dir . $permalink );
512
  prune_super_cache( $dir . 'page/', true );
513
  }
515
 
516
  $meta = new CacheMeta;
517
  $matches = array();
 
 
518
  if ( ($handle = opendir( $cache_path . 'meta/' )) ) {
519
  while ( false !== ($file = readdir($handle))) {
520
  if ( preg_match("/^({$file_prefix}{$blogcacheid}.*)\.meta/", $file, $matches) ) {
525
  if ($meta->blog_id == $blog_id && (!$meta->post || $meta->post == $post_id) ) {
526
  @unlink($meta_pathname);
527
  @unlink($content_pathname);
 
 
 
 
528
  }
529
  } elseif ($meta->blog_id == $blog_id) {
530
  @unlink($meta_pathname);
wp-cache.php CHANGED
@@ -3,7 +3,7 @@
3
  Plugin Name: WP Super Cache
4
  Plugin URI: http://ocaoimh.ie/wp-super-cache/
5
  Description: Very fast caching module for WordPress. Once activated, you must <a href="options-general.php?page=wpsupercache">enable the cache</a>. Based on WP-Cache by <a href="http://mnm.uib.es/gallir/">Ricardo Galli Granada</a>.
6
- Version: 0.8.1
7
  Author: Donncha O Caoimh
8
  Author URI: http://ocaoimh.ie/
9
  */
@@ -109,7 +109,7 @@ function wp_cache_add_pages() {
109
  add_action('admin_menu', 'wp_cache_add_pages');
110
 
111
  function wp_cache_manager() {
112
- global $wp_cache_config_file, $valid_nonce, $supercachedir, $cache_path, $cache_enabled, $cache_compression, $super_cache_enabled, $wp_cache_hello_world, $wp_cache_clear_on_post_edit;
113
 
114
  if( function_exists( 'is_site_admin' ) )
115
  if( !is_site_admin() )
@@ -118,6 +118,9 @@ function wp_cache_manager() {
118
  $supercachedir = $cache_path . 'supercache/' . preg_replace('/:.*$/', '', $_SERVER["HTTP_HOST"]);
119
  if( get_option( 'gzipcompression' ) == 1 )
120
  update_option( 'gzipcompression', 0 );
 
 
 
121
  $valid_nonce = wp_verify_nonce($_REQUEST['_wpnonce'], 'wp-cache');
122
  /* http://www.netlobo.com/div_hiding.html */
123
  ?>
@@ -231,10 +234,12 @@ function toggleLayer( whichLayer ) {
231
  prune_super_cache ($cache_path, true);
232
  delete_option( 'super_cache_meta' );
233
  }
234
- if( isset( $_POST[ 'wp_cache_clear_on_post_edit' ] ) && $_POST[ 'wp_cache_clear_on_post_edit' ] != $wp_cache_clear_on_post_edit ) {
235
- $wp_cache_clear_on_post_edit = intval( $_POST[ 'wp_cache_clear_on_post_edit' ] );
236
- wp_cache_replace_line('^ *\$wp_cache_clear_on_post_edit', "\$wp_cache_clear_on_post_edit = " . $wp_cache_clear_on_post_edit . ";", $wp_cache_config_file);
 
237
  }
 
238
  }
239
 
240
  ?><fieldset class="options">
@@ -245,7 +250,7 @@ function toggleLayer( whichLayer ) {
245
  <label><input type='radio' name='wp_cache_status' value='wpcache' <?php if( $cache_enabled == true && $super_cache_enabled == false ) { echo 'checked=checked'; } ?>> <strong>HALF ON</strong> (Super Cache Disabled, only legacy WP-Cache caching.)</label><br />
246
  <label><input type='radio' name='wp_cache_status' value='none' <?php if( $cache_enabled == false ) { echo 'checked=checked'; } ?>> <strong>OFF</strong> (WP Cache and Super Cache disabled)</label><br />
247
  <p><label><input type='checkbox' name='wp_cache_hello_world' <?php if( $wp_cache_hello_world ) echo "checked"; ?> value='1'> Proudly tell the world your server is Digg proof! (places a message in your blog's footer)</label></p>
248
- <p><label><input type='checkbox' name='wp_cache_clear_on_post_edit' <?php if( $wp_cache_clear_on_post_edit ) echo "checked"; ?> value='1'> Clear all cache files when a post or page is edited. (This may significantly slow down saving of posts.)</label></p>
249
  <p>Note: if uninstalling this plugin, make sure the directory <em><?php echo WP_CONTENT_DIR; ?></em> is writeable by the webserver so the files <em>advanced-cache.php</em> and <em>cache-config.php</em> can be deleted automatically. (Making sure those files are writeable too is probably a good idea!)</p>
250
  <?php
251
  echo "<div><input type='submit' " . SUBMITDISABLED . " value='Update Status &raquo;' /></div>";
@@ -1074,6 +1079,12 @@ function wp_cache_files() {
1074
  }
1075
 
1076
  function delete_cache_dashboard() {
 
 
 
 
 
 
1077
  echo "<li><a href='" . wp_nonce_url( 'options-general.php?page=wpsupercache&wp_delete_cache=1#list', 'wp-cache' ) . "' target='_blank' title='Delete Super Cache cached files (opens in new window)'>Delete Cache</a></li>";
1078
  }
1079
  add_action( 'dashmenu', 'delete_cache_dashboard' );
3
  Plugin Name: WP Super Cache
4
  Plugin URI: http://ocaoimh.ie/wp-super-cache/
5
  Description: Very fast caching module for WordPress. Once activated, you must <a href="options-general.php?page=wpsupercache">enable the cache</a>. Based on WP-Cache by <a href="http://mnm.uib.es/gallir/">Ricardo Galli Granada</a>.
6
+ Version: 0.8.2
7
  Author: Donncha O Caoimh
8
  Author URI: http://ocaoimh.ie/
9
  */
109
  add_action('admin_menu', 'wp_cache_add_pages');
110
 
111
  function wp_cache_manager() {
112
+ global $wp_cache_config_file, $valid_nonce, $supercachedir, $cache_path, $cache_enabled, $cache_compression, $super_cache_enabled, $wp_cache_hello_world, $wp_cache_clear_on_post_edit, $cache_rebuild_files;
113
 
114
  if( function_exists( 'is_site_admin' ) )
115
  if( !is_site_admin() )
118
  $supercachedir = $cache_path . 'supercache/' . preg_replace('/:.*$/', '', $_SERVER["HTTP_HOST"]);
119
  if( get_option( 'gzipcompression' ) == 1 )
120
  update_option( 'gzipcompression', 0 );
121
+ if( !isset( $cache_rebuild_files ) )
122
+ $cache_rebuild_files = 0;
123
+
124
  $valid_nonce = wp_verify_nonce($_REQUEST['_wpnonce'], 'wp-cache');
125
  /* http://www.netlobo.com/div_hiding.html */
126
  ?>
234
  prune_super_cache ($cache_path, true);
235
  delete_option( 'super_cache_meta' );
236
  }
237
+ if( isset( $_POST[ 'wp_cache_clear_on_post_edit' ] ) ) {
238
+ $wp_cache_clear_on_post_edit = 1;
239
+ } else {
240
+ $wp_cache_clear_on_post_edit = 0;
241
  }
242
+ wp_cache_replace_line('^ *\$wp_cache_clear_on_post_edit', "\$wp_cache_clear_on_post_edit = " . $wp_cache_clear_on_post_edit . ";", $wp_cache_config_file);
243
  }
244
 
245
  ?><fieldset class="options">
250
  <label><input type='radio' name='wp_cache_status' value='wpcache' <?php if( $cache_enabled == true && $super_cache_enabled == false ) { echo 'checked=checked'; } ?>> <strong>HALF ON</strong> (Super Cache Disabled, only legacy WP-Cache caching.)</label><br />
251
  <label><input type='radio' name='wp_cache_status' value='none' <?php if( $cache_enabled == false ) { echo 'checked=checked'; } ?>> <strong>OFF</strong> (WP Cache and Super Cache disabled)</label><br />
252
  <p><label><input type='checkbox' name='wp_cache_hello_world' <?php if( $wp_cache_hello_world ) echo "checked"; ?> value='1'> Proudly tell the world your server is Digg proof! (places a message in your blog's footer)</label></p>
253
+ <p><label><input type='checkbox' name='wp_cache_clear_on_post_edit' <?php if( $wp_cache_clear_on_post_edit ) echo "checked"; ?> value='1'> Clear all cache files when a post or page is published. (This may significantly slow down saving of posts.)</label></p>
254
  <p>Note: if uninstalling this plugin, make sure the directory <em><?php echo WP_CONTENT_DIR; ?></em> is writeable by the webserver so the files <em>advanced-cache.php</em> and <em>cache-config.php</em> can be deleted automatically. (Making sure those files are writeable too is probably a good idea!)</p>
255
  <?php
256
  echo "<div><input type='submit' " . SUBMITDISABLED . " value='Update Status &raquo;' /></div>";
1079
  }
1080
 
1081
  function delete_cache_dashboard() {
1082
+ if( function_exists( 'is_site_admin' ) && !is_site_admin() )
1083
+ return false;
1084
+
1085
+ if( function_exists('current_user_can') && !current_user_can('manage_options') )
1086
+ return false;
1087
+
1088
  echo "<li><a href='" . wp_nonce_url( 'options-general.php?page=wpsupercache&wp_delete_cache=1#list', 'wp-cache' ) . "' target='_blank' title='Delete Super Cache cached files (opens in new window)'>Delete Cache</a></li>";
1089
  }
1090
  add_action( 'dashmenu', 'delete_cache_dashboard' );