diff --git a/readme.txt b/readme.txt
index d292c93..ffa8f50 100644
--- a/readme.txt
+++ b/readme.txt
@@ -3,8 +3,8 @@ Contributors: cadeyrn
Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=XU3DG7LLA76WC
Tags: cache, page cache, full page cache, nginx, memcached, apc, speed
Requires at least: 3.0
-Tested up to: 3.9.1
-Stable tag: 1.5.0
+Tested up to: 4.0
+Stable tag: 1.6.0
License: GPLv3
License URI: http://www.gnu.org/licenses/gpl-3.0.html
@@ -17,14 +17,14 @@ It can be configured to join forces with [NGiNX](http://NGiNX.org "NGiNX")'s bui
= Features: =
* Wordpress Network support
* fully supported domain/subdomain based WordPress Networks on per site setup as well
- * will work in Network Enabled mode only for subdirectory based Multisites ( no per site setting possibility )
-* supports variable backends
+ * will work in Network Enabled mode only for subdirectory based Multisites ( per site settings will not work in this case )
+* supports various backends
* memcached with [PHP Memcached](http://php.net/manual/en/book.memcached.php "Memcached")
* memcached with [PHP Memcache](http://php.net/manual/en/book.memcache.php "Memcache")
* [APC](http://php.net/manual/en/book.apc.php "APC")
* [APCu](http://pecl.php.net/package/APCu "APC User Cache")
* [Xcache](http://xcache.lighttpd.net/ "Xcache") - not stable yet, volunteer testers required!
-* cache exclude possibilities ( home, feeds, archieves, pages, singles )
+* cache exclude options ( home, feeds, archieves, pages, singles; regex based url exclusion )
* (optional) cache for logged-in users
* 404 caching
* canonical redirects caching
@@ -43,6 +43,8 @@ Many thanks for donations, contributors, supporters, testers & bug reporters:
* [Mark Costlow](mailto:cheeks@swcp.com "Mark Costlow")
* [Jason Miller](mailto:jason@redconfetti.com "Jason Miller")
* [Dave Clark](https://github.com/dkcwd "Dave Clark")
+* Miguel Clara
+* [plescheff](https://github.com/plescheff)
== Installation ==
@@ -98,6 +100,29 @@ Please post feature requests to [WP-FFPC feature request topic](http://wordpress
== Changelog ==
+Version numbering logic:
+
+* every A. indicates BIG changes.
+* every .B version indicates new features.
+* every ..C indicates bugfixes for A.B version.
+
+= 1.6.0 =
+*2014-05-30*
+
+What's new:
+
+* added functionality to exclude regex urls, contribution from [plescheff](https://github.com/plescheff/wp-ffpc/commit/3c875ad4fe1e083d3968421dd83b9c179c686649)
+* added functionality to include "?" containing URL
+
+What's fixed:
+
+* some warning messages removed in case there's not a single backend installed when the plugin is activated
+
+Under the hood:
+
+* major changes to the abstract wp-common class for better interoperability between my plugins
+
+
= 1.5.0 =
*2014-05-30*
diff --git a/wp-common b/wp-common
index 2dd92a6..d84ff21 160000
--- a/wp-common
+++ b/wp-common
@@ -1 +1 @@
-Subproject commit 2dd92a681f986a6637550a2640c697be39399de9
+Subproject commit d84ff213cd944c22a6a440d6faba502abd1da774
diff --git a/wp-ffpc-acache.php b/wp-ffpc-acache.php
index 024d253..904f346 100644
--- a/wp-ffpc-acache.php
+++ b/wp-ffpc-acache.php
@@ -26,7 +26,7 @@ if (defined('SID') && SID != '')
$wp_ffpc_uri = $_SERVER['REQUEST_URI'];
/* no cache for uri with query strings, things usually go bad that way */
-if ( stripos($wp_ffpc_uri, '?') !== false)
+if ( isset($wp_ffpc_config['nocache_dyn']) && !empty($wp_ffpc_config['nocache_dyn']) && stripos($wp_ffpc_uri, '?') !== false ) {
return false;
/* no cache for pages starting with /wp- like WP admin */
@@ -67,6 +67,14 @@ if ( isset($wp_ffpc_config['nocache_cookies']) && !empty($wp_ffpc_config['nocach
}
}
+/* no cache for excluded URL patterns */
+if ( isset($wp_ffpc_config['nocache_url']) && trim($wp_ffpc_config['nocache_url']) ) {
+ $pattern = sprintf('#%s#', trim($wp_ffpc_config['nocache_url']));
+ if ( preg_match($pattern, $wp_ffpc_uri) ) {
+ return false;
+ }
+}
+
/* canonical redirect storage */
$wp_ffpc_redirect = null;
/* fires up the backend storage array with current config */
@@ -254,7 +262,7 @@ function wp_ffpc_callback( $buffer ) {
}
}
- if ( is_404() )
+ if ( is_404() )
$meta['status'] = 404;
/* redirect page */
diff --git a/wp-ffpc-backend.php b/wp-ffpc-backend.php
index dbc4be6..2d03186 100644
--- a/wp-ffpc-backend.php
+++ b/wp-ffpc-backend.php
@@ -520,7 +520,7 @@ class WP_FFPC_Backend {
}
/* verify apcu is working */
- if ( apcu_cache_info("user",true) ) {
+ if ( apcu_cache_info("user") ) {
$this->log ( __translate__('backend OK', $this->plugin_constant ) );
$this->alive = true;
}
@@ -606,6 +606,14 @@ class WP_FFPC_Backend {
return false;
}
+ $xcache_admin = ini_get ( 'xcache.admin.user' );
+ $xcache_pass = ini_get ( 'xcache.admin.pass' );
+
+ if ( empty( $xcache_admin ) || empty( $xcache_pass ) ) {
+ $this->log ( __translate__('XCACHE xcache.admin.user or xcache.admin.pass is not set in php.ini. Please set them, otherwise the use cache part of xcache is not accessible.', $this->plugin_constant ) );
+ return false;
+ }
+
/* verify apc is working */
$info = xcache_info();
if ( !empty( $info )) {
@@ -716,7 +724,7 @@ class WP_FFPC_Backend {
$this->connection->setOption( Memcached::OPT_COMPRESSION , false );
$this->connection->setOption( Memcached::OPT_BINARY_PROTOCOL , true );
- if ( version_compare( phpversion( 'memcached' ) , '2.0.0', '>=' ) && ini_get( 'memcached.use_sasl' ) == 1 ) {
+ if ( version_compare( phpversion( 'memcached' ) , '2.0.0', '>=' ) && ini_get( 'memcached.use_sasl' ) == 1 && isset($this->options['authpass']) && !empty($this->options['authpass']) && isset($this->options['authuser']) && !empty($this->options['authuser']) ) {
$this->connection->setSaslAuthData ( $this->options['authuser'], $this->options['authpass']);
}
}
diff --git a/wp-ffpc-class.php b/wp-ffpc-class.php
index 3961d77..2e0b6e6 100644
--- a/wp-ffpc-class.php
+++ b/wp-ffpc-class.php
@@ -3,9 +3,9 @@
if ( ! class_exists( 'WP_FFPC' ) ) :
/* get the plugin abstract class*/
-include_once ( 'wp-common/plugin_abstract.php' );
+include_once ( dirname(__FILE__) . '/wp-common/plugin_abstract.php' );
/* get the common functions class*/
-include_once ( 'wp-ffpc-backend.php' );
+include_once ( dirname(__FILE__) .'/wp-ffpc-backend.php' );
/**
* main wp-ffpc class
@@ -63,6 +63,20 @@ class WP_FFPC extends PluginAbstract {
private $scheduled = false;
private $errors = array();
+ /**
+ *
+ */
+ public function plugin_post_construct () {
+ $this->plugin_url = plugin_dir_url( __FILE__ );
+ $this->plugin_dir = plugin_dir_path( __FILE__ );
+
+ $this->common_url = $this->plugin_url . self::common_slug;
+ $this->common_dir = $this->plugin_dir . self::common_slug;
+
+ $this->admin_css_handle = $this->plugin_constant . '-admin-css';
+ $this->admin_css_url = $this->common_url . 'wp-admin.css';
+ }
+
/**
* init hook function runs before admin panel hook, themeing and options read
*/
@@ -272,12 +286,11 @@ class WP_FFPC extends PluginAbstract {
*/
public function plugin_extend_admin_init () {
/* save parameter updates, if there are any */
- if ( isset( $_POST[ $this->button_flush ] ) ) {
-
+ if ( isset( $_POST[ $this->button_flush ] ) && check_admin_referer ( $this->plugin_constant ) ) {
/* remove precache log entry */
- $this->_delete_option( self::precache_log );
+ $this->utils->_delete_option( self::precache_log );
/* remove precache timestamp entry */
- $this->_delete_option( self::precache_timestamp );
+ $this->utils->_delete_option( self::precache_timestamp );
/* remove precache logfile */
if ( @file_exists ( $this->precache_logfile ) ) {
@@ -296,8 +309,7 @@ class WP_FFPC extends PluginAbstract {
}
/* save parameter updates, if there are any */
- if ( isset( $_POST[ $this->button_precache ] ) ) {
-
+ if ( isset( $_POST[ $this->button_precache ] ) && check_admin_referer ( $this->plugin_constant ) ) {
/* is no shell function is possible, fail */
if ( $this->shell_function == false ) {
$this->status = 5;
@@ -407,15 +419,17 @@ class WP_FFPC extends PluginAbstract {
/* we need to go through all servers */
$servers = $this->backend->status();
- foreach ( $servers as $server_string => $status ) {
- echo $server_string ." => ";
+ if ( is_array( $servers ) && !empty ( $servers ) ) {
+ foreach ( $servers as $server_string => $status ) {
+ echo $server_string ." => ";
- if ( $status == 0 )
- _e ( 'down
', $this->plugin_constant );
- elseif ( ( $this->options['cache_type'] == 'memcache' && $status > 0 ) || $status == 1 )
- _e ( 'up & running
', $this->plugin_constant );
- else
- _e ( 'unknown, please try re-saving settings!
', $this->plugin_constant );
+ if ( $status == 0 )
+ _e ( 'down
', $this->plugin_constant );
+ elseif ( ( $this->options['cache_type'] == 'memcache' && $status > 0 ) || $status == 1 )
+ _e ( 'up & running
', $this->plugin_constant );
+ else
+ _e ( 'unknown, please try re-saving settings!
', $this->plugin_constant );
+ }
}
?>