Version Description
- Fix: Dont store content of HEAD requests.
- Updated informational URL on page cache static page comments.
Download this release
Release Info
Developer | joemoto |
Plugin | W3 Total Cache |
Version | 0.13.2 |
Comparing to | |
See all releases |
Code changes from version 0.13.1 to 0.13.2
- Cache_File.php +1 -1
- Cache_File_Generic.php +1 -1
- Cdn_StackPath2_Widget.php +2 -8
- Config.php +13 -4
- ConfigState.php +1 -0
- Extension_CloudFlare_Widget.php +1 -10
- Extensions_Page.php +5 -4
- Extensions_Util.php +5 -2
- Generic_AdminActions_Default.php +18 -4
- Generic_Plugin.php +1 -1
- Generic_Plugin_Admin.php +4 -0
- Generic_WidgetBoldGrid.php +13 -21
- LazyLoad_GeneralPage_View.php +0 -28
- LazyLoad_Page_View.php +0 -67
- LazyLoad_Plugin_Admin.php +0 -36
- Minify_AutoJs.php +65 -41
- Minify_Plugin.php +16 -13
- PgCache_ContentGrabber.php +10 -4
- PgCache_Page.php +8 -0
- PgCache_Plugin_Admin.php +7 -1
- Root_Loader.php +2 -2
- UsageStatistics_Page.php +3 -3
- UsageStatistics_Source_DbQueriesLog.php +1 -1
- UsageStatistics_Source_ObjectCacheLog.php +1 -1
- UsageStatistics_Source_PageCacheLog.php +1 -1
- UsageStatistics_Widget.php +1 -10
- UserExperience_Emoji_Extension.php +54 -0
- LazyLoad_GeneralPage.php → UserExperience_GeneralPage.php +3 -5
- UserExperience_GeneralPage_View.php +44 -0
- LazyLoad_Mutator.php → UserExperience_LazyLoad_Mutator.php +3 -5
- LazyLoad_Mutator_Picture.php → UserExperience_LazyLoad_Mutator_Picture.php +1 -3
- LazyLoad_Mutator_Unmutable.php → UserExperience_LazyLoad_Mutator_Unmutable.php +1 -3
- UserExperience_LazyLoad_Page_View.php +53 -0
- LazyLoad_Plugin.php → UserExperience_LazyLoad_Plugin.php +2 -4
- UserExperience_OEmbed_Extension.php +19 -0
- LazyLoad_Page.php → UserExperience_Page.php +2 -4
- UserExperience_Page_View.php +23 -0
- UserExperience_Plugin_Admin.php +56 -0
- Util_Environment.php +1 -1
- Util_Ui.php +24 -4
- Util_Widget.php +51 -2
- inc/options/browsercache.php +0 -0
- inc/options/extensions/list.php +5 -1
- inc/options/general.php +2 -1
- inc/options/pgcache.php +3 -0
- lib/OAuth/W3tcOAuth.php +1 -11
- pub/img/W3TC_dashboard_logo_title-retina.png +0 -0
- pub/img/W3TC_dashboard_logo_title.png +0 -0
- pub/img/cdn-highwinds-logo.png +0 -0
- pub/img/google-logo.png +0 -0
- pub/img/overlay/ceo.png +0 -0
- pub/img/overlay/gray-check.png +0 -0
- pub/img/overlay/list-check.png +0 -0
- pub/img/overlay/lite-gray-check.png +0 -0
- pub/img/overlay/lock.png +0 -0
- pub/img/overlay/overlay-close.png +0 -0
- pub/img/overlay/overlay-down-arrow.png +0 -0
- pub/img/overlay/overlay-logo.png +0 -0
- pub/img/overlay/save-close.png +0 -0
- pub/img/overlay/select-arrow.png +0 -0
- pub/img/overlay/twitter-bird-dark-bgs.png +0 -0
- pub/img/overlay/wordpress-logo-simplified-rgb.png +0 -0
- pub/img/w3tc_google-logo-retina.png +0 -0
- pub/img/w3tc_google-logo.png +0 -0
- pub/img/w3tc_maxcdn-logo-retina.png +0 -0
- pub/img/w3tc_maxcdn-logo.png +0 -0
- pub/img/w3tc_netdna-logo-retina.png +0 -0
- pub/img/w3tc_netdna-logo.png +0 -0
- pub/img/w3tc_newrelic-logo-retina.png +0 -0
- pub/img/w3tc_newrelic-logo.png +0 -0
- pub/img/w3tc_swarmify-logo-retina.png +0 -0
- pub/img/w3tc_swarmify-logo.png +0 -0
- pub/img/w3tc_w3edge-logo-retina.png +0 -0
- pub/img/w3tc_w3edge-logo.png +0 -0
- pub/img/w3tc_w3tc-logo-retina.png +0 -0
- pub/js/options-validator.js +22 -0
- pub/js/options.js +6 -0
- readme.txt +6 -1
- w3-total-cache-api.php +1 -1
- w3-total-cache.php +1 -1
Cache_File.php
CHANGED
@@ -445,7 +445,7 @@ class Cache_File extends Cache_Base {
|
|
445 |
$dir = dirname( $path );
|
446 |
|
447 |
if ( !@is_dir( $dir ) ) {
|
448 |
-
if ( !Util_File::mkdir_from( $dir, W3TC_CACHE_DIR ) )
|
449 |
return false;
|
450 |
}
|
451 |
|
445 |
$dir = dirname( $path );
|
446 |
|
447 |
if ( !@is_dir( $dir ) ) {
|
448 |
+
if ( !Util_File::mkdir_from( $dir, dirname( W3TC_CACHE_DIR ) ) )
|
449 |
return false;
|
450 |
}
|
451 |
|
Cache_File_Generic.php
CHANGED
@@ -44,7 +44,7 @@ class Cache_File_Generic extends Cache_File {
|
|
44 |
$dir = dirname( $path );
|
45 |
|
46 |
if ( !@is_dir( $dir ) ) {
|
47 |
-
if ( !Util_File::mkdir_from_safe( $dir, W3TC_CACHE_DIR ) )
|
48 |
return false;
|
49 |
}
|
50 |
|
44 |
$dir = dirname( $path );
|
45 |
|
46 |
if ( !@is_dir( $dir ) ) {
|
47 |
+
if ( !Util_File::mkdir_from_safe( $dir, dirname( W3TC_CACHE_DIR ) ) )
|
48 |
return false;
|
49 |
}
|
50 |
|
Cdn_StackPath2_Widget.php
CHANGED
@@ -8,16 +8,10 @@ class Cdn_StackPath2_Widget {
|
|
8 |
array( $o, 'admin_print_styles' ) );
|
9 |
add_action( 'admin_print_scripts',
|
10 |
array( $o, 'admin_print_scripts' ) );
|
11 |
-
add_action( 'w3tc_widget_setup',
|
12 |
-
array( $o, 'w3tc_widget_setup' ), 2000 );
|
13 |
-
}
|
14 |
-
|
15 |
-
|
16 |
|
17 |
-
|
18 |
-
Util_Widget::add( 'w3tc_stackpath',
|
19 |
'<div class="w3tc-widget-stackpath2-logo"></div>',
|
20 |
-
array( $
|
21 |
Util_Ui::admin_url( 'admin.php?page=w3tc_cdn' ),
|
22 |
'normal' );
|
23 |
}
|
8 |
array( $o, 'admin_print_styles' ) );
|
9 |
add_action( 'admin_print_scripts',
|
10 |
array( $o, 'admin_print_scripts' ) );
|
|
|
|
|
|
|
|
|
|
|
11 |
|
12 |
+
Util_Widget::add2( 'w3tc_stackpath', 2000,
|
|
|
13 |
'<div class="w3tc-widget-stackpath2-logo"></div>',
|
14 |
+
array( $o, 'widget_form' ),
|
15 |
Util_Ui::admin_url( 'admin.php?page=w3tc_cdn' ),
|
16 |
'normal' );
|
17 |
}
|
Config.php
CHANGED
@@ -77,10 +77,19 @@ class Config {
|
|
77 |
static public function util_config_filename( $blog_id, $preview ) {
|
78 |
$postfix = ( $preview ? '-preview' : '' ) . '.php';
|
79 |
|
80 |
-
if ( $blog_id <= 0 )
|
81 |
-
|
82 |
-
else
|
83 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
84 |
}
|
85 |
|
86 |
|
77 |
static public function util_config_filename( $blog_id, $preview ) {
|
78 |
$postfix = ( $preview ? '-preview' : '' ) . '.php';
|
79 |
|
80 |
+
if ( $blog_id <= 0 ) {
|
81 |
+
$filename = W3TC_CONFIG_DIR . '/master' . $postfix;
|
82 |
+
} else {
|
83 |
+
$filename = W3TC_CONFIG_DIR . '/' . sprintf( '%06d', $blog_id ) . $postfix;
|
84 |
+
}
|
85 |
+
|
86 |
+
$d = w3tc_apply_filters( 'config_filename', array(
|
87 |
+
'blog_id' => $blog_id,
|
88 |
+
'preview' => $preview,
|
89 |
+
'filename' => $filename
|
90 |
+
) );
|
91 |
+
|
92 |
+
return $d['filename'];
|
93 |
}
|
94 |
|
95 |
|
ConfigState.php
CHANGED
@@ -191,5 +191,6 @@ class ConfigState {
|
|
191 |
|
192 |
private function apply_defaults() {
|
193 |
$this->set( 'common.install', time() );
|
|
|
194 |
}
|
195 |
}
|
191 |
|
192 |
private function apply_defaults() {
|
193 |
$this->set( 'common.install', time() );
|
194 |
+
$this->set( 'common.install_version', W3TC_VERSION );
|
195 |
}
|
196 |
}
|
Extension_CloudFlare_Widget.php
CHANGED
@@ -11,16 +11,7 @@ class Extension_CloudFlare_Widget {
|
|
11 |
add_action( 'admin_print_scripts-toplevel_page_w3tc_dashboard',
|
12 |
array( $this, 'admin_print_scripts_w3tc_dashboard' ) );
|
13 |
|
14 |
-
|
15 |
-
$this,
|
16 |
-
'w3tc_widget_setup'
|
17 |
-
), 10000 );
|
18 |
-
}
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
function w3tc_widget_setup() {
|
23 |
-
Util_Widget::add( 'w3tc_cloudflare',
|
24 |
'<div class="w3tc_cloudflare_widget_logo"></div>',
|
25 |
array( $this, 'widget_form' ),
|
26 |
Util_Ui::admin_url( 'admin.php?page=w3tc_general#cloudflare' ),
|
11 |
add_action( 'admin_print_scripts-toplevel_page_w3tc_dashboard',
|
12 |
array( $this, 'admin_print_scripts_w3tc_dashboard' ) );
|
13 |
|
14 |
+
Util_Widget::add2( 'w3tc_cloudflare', 10000,
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
15 |
'<div class="w3tc_cloudflare_widget_logo"></div>',
|
16 |
array( $this, 'widget_form' ),
|
17 |
Util_Ui::admin_url( 'admin.php?page=w3tc_general#cloudflare' ),
|
Extensions_Page.php
CHANGED
@@ -6,10 +6,10 @@ namespace W3TC;
|
|
6 |
/* todo - sort by name
|
7 |
function extensions_sort_cmp_name($a, $b)
|
8 |
{
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
}*/
|
14 |
|
15 |
|
@@ -84,6 +84,7 @@ class Extensions_Page extends Base_Page_Settings {
|
|
84 |
'enabled' => true,
|
85 |
'requirements' => array(),
|
86 |
'core' => false,
|
|
|
87 |
'path' => ''
|
88 |
);
|
89 |
return array_merge( $default, $meta );
|
6 |
/* todo - sort by name
|
7 |
function extensions_sort_cmp_name($a, $b)
|
8 |
{
|
9 |
+
if ($a['name'] == $b['name']) {
|
10 |
+
return 0;
|
11 |
+
}
|
12 |
+
return ($a['name'] < $b['name']) ? -1 : 1;
|
13 |
}*/
|
14 |
|
15 |
|
84 |
'enabled' => true,
|
85 |
'requirements' => array(),
|
86 |
'core' => false,
|
87 |
+
'public' => true,
|
88 |
'path' => ''
|
89 |
);
|
90 |
return array_merge( $default, $meta );
|
Extensions_Util.php
CHANGED
@@ -61,7 +61,7 @@ class Extensions_Util {
|
|
61 |
* @param Config $w3_config
|
62 |
* @return bool
|
63 |
*/
|
64 |
-
static public function activate_extension( $extension, $w3_config ) {
|
65 |
$all_extensions = Extensions_Util::get_extensions( $w3_config );
|
66 |
$extensions = $w3_config->get_array( 'extensions.active' );
|
67 |
|
@@ -85,8 +85,11 @@ class Extensions_Util {
|
|
85 |
$w3_config->set_extension_active_frontend( $extension, true );
|
86 |
}
|
87 |
|
|
|
88 |
try {
|
89 |
-
|
|
|
|
|
90 |
return true;
|
91 |
} catch ( \Exception $ex ) {
|
92 |
}
|
61 |
* @param Config $w3_config
|
62 |
* @return bool
|
63 |
*/
|
64 |
+
static public function activate_extension( $extension, $w3_config, $dont_save_config = false ) {
|
65 |
$all_extensions = Extensions_Util::get_extensions( $w3_config );
|
66 |
$extensions = $w3_config->get_array( 'extensions.active' );
|
67 |
|
85 |
$w3_config->set_extension_active_frontend( $extension, true );
|
86 |
}
|
87 |
|
88 |
+
|
89 |
try {
|
90 |
+
if ( !$dont_save_config ) {
|
91 |
+
$w3_config->save();
|
92 |
+
}
|
93 |
return true;
|
94 |
} catch ( \Exception $ex ) {
|
95 |
}
|
Generic_AdminActions_Default.php
CHANGED
@@ -809,12 +809,26 @@ class Generic_AdminActions_Default {
|
|
809 |
include W3TC_DIR . '/ConfigKeys.php'; // define $keys
|
810 |
|
811 |
foreach ( $request as $request_key => $request_value ) {
|
812 |
-
if ( is_array( $request_value ) )
|
813 |
array_map( 'stripslashes_deep', $request_value );
|
814 |
-
else
|
815 |
$request_value = stripslashes( $request_value );
|
816 |
-
|
817 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
818 |
|
819 |
$key = Util_Ui::config_key_from_http_name( $request_key );
|
820 |
if ( is_array( $key ) ) {
|
809 |
include W3TC_DIR . '/ConfigKeys.php'; // define $keys
|
810 |
|
811 |
foreach ( $request as $request_key => $request_value ) {
|
812 |
+
if ( is_array( $request_value ) ) {
|
813 |
array_map( 'stripslashes_deep', $request_value );
|
814 |
+
} else {
|
815 |
$request_value = stripslashes( $request_value );
|
816 |
+
|
817 |
+
if ( strpos( $request_key, 'memcached__servers' ) || strpos( $request_key, 'redis__servers' ) ) {
|
818 |
+
$request_value = explode( ',', $request_value );
|
819 |
+
}
|
820 |
+
}
|
821 |
+
|
822 |
+
if ( substr( $request_key, 0, 11 ) == 'extension__' ) {
|
823 |
+
$extension_id = Util_Ui::config_key_from_http_name(
|
824 |
+
substr( $request_key, 11 ) );
|
825 |
+
|
826 |
+
if ( $request_value == '1' ) {
|
827 |
+
Extensions_Util::activate_extension( $extension_id, $config, true );
|
828 |
+
} else {
|
829 |
+
Extensions_Util::deactivate_extension( $extension_id, $config, true );
|
830 |
+
}
|
831 |
+
}
|
832 |
|
833 |
$key = Util_Ui::config_key_from_http_name( $request_key );
|
834 |
if ( is_array( $key ) ) {
|
Generic_Plugin.php
CHANGED
@@ -520,7 +520,7 @@ class Generic_Plugin {
|
|
520 |
$strings = array();
|
521 |
|
522 |
if ( !$this->_config->get_boolean( 'common.tweeted' ) ) {
|
523 |
-
$strings[] = 'Performance optimized by W3 Total Cache. Learn more: https://www.
|
524 |
$strings[] = '';
|
525 |
}
|
526 |
|
520 |
$strings = array();
|
521 |
|
522 |
if ( !$this->_config->get_boolean( 'common.tweeted' ) ) {
|
523 |
+
$strings[] = 'Performance optimized by W3 Total Cache. Learn more: https://www.boldgrid.com/w3-total-cache/';
|
524 |
$strings[] = '';
|
525 |
}
|
526 |
|
Generic_Plugin_Admin.php
CHANGED
@@ -269,6 +269,7 @@ class Generic_Plugin_Admin {
|
|
269 |
else
|
270 |
$profile = 'UA-2264433-8';
|
271 |
|
|
|
272 |
?>
|
273 |
<script type="text/javascript">
|
274 |
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
|
@@ -286,6 +287,9 @@ class Generic_Plugin_Admin {
|
|
286 |
'dimension5': '<?php echo esc_attr( $_SERVER["SERVER_SOFTWARE"] ) ?>',
|
287 |
'dimension6': 'mysql<?php global $wpdb; echo $wpdb->db_version() ?>',
|
288 |
'dimension7': '<?php echo Util_Environment::home_url_host() ?>',
|
|
|
|
|
|
|
289 |
'userId': '<?php echo $current_user->user_email ?>',
|
290 |
'page': '<?php echo $page ?>'
|
291 |
});
|
269 |
else
|
270 |
$profile = 'UA-2264433-8';
|
271 |
|
272 |
+
$state = Dispatcher::config_state();
|
273 |
?>
|
274 |
<script type="text/javascript">
|
275 |
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
|
287 |
'dimension5': '<?php echo esc_attr( $_SERVER["SERVER_SOFTWARE"] ) ?>',
|
288 |
'dimension6': 'mysql<?php global $wpdb; echo $wpdb->db_version() ?>',
|
289 |
'dimension7': '<?php echo Util_Environment::home_url_host() ?>',
|
290 |
+
'dimension9': '<?php echo esc_attr( $state->get_string( 'common.install_version' ) ) ?>',
|
291 |
+
'dimension10': '<?php echo esc_attr( Util_Environment::w3tc_edition( $this->_config ) ) ?>',
|
292 |
+
'dimension11': '<?php echo esc_attr( Util_Widget::list_widgets() ) ?>',
|
293 |
'userId': '<?php echo $current_user->user_email ?>',
|
294 |
'page': '<?php echo $page ?>'
|
295 |
});
|
Generic_WidgetBoldGrid.php
CHANGED
@@ -3,35 +3,27 @@ namespace W3TC;
|
|
3 |
|
4 |
class Generic_WidgetBoldGrid {
|
5 |
static public function admin_init_w3tc_dashboard() {
|
6 |
-
$
|
7 |
-
|
8 |
-
add_action( 'w3tc_widget_setup', array( $o, 'wp_dashboard_setup' ), 3000 );
|
9 |
-
add_action( 'w3tc_network_dashboard_setup',
|
10 |
-
array( $o, 'wp_dashboard_setup' ), 5000 );
|
11 |
-
|
12 |
-
add_thickbox();
|
13 |
-
wp_enqueue_script( 'plugin-install' );
|
14 |
-
|
15 |
-
wp_enqueue_script( 'w3tc-boldgrid-widget',
|
16 |
-
plugins_url( 'Generic_WidgetBoldGrid_View.js', W3TC_FILE ),
|
17 |
-
array( 'thickbox' ), W3TC_VERSION );
|
18 |
-
}
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
function wp_dashboard_setup() {
|
23 |
-
$show = apply_filters( 'w3tc_generic_boldgrid_show', $this->should_show_widget() );
|
24 |
if ( !$show ) {
|
25 |
return;
|
26 |
}
|
27 |
|
28 |
-
|
|
|
|
|
29 |
'<div class="w3tc-widget-boldgrid-logo"></div>',
|
30 |
-
array( $
|
31 |
self_admin_url(
|
32 |
'plugin-install.php?tab=plugin-information&plugin=boldgrid-backup' .
|
33 |
'&TB_iframe=true&width=772&height=550'
|
34 |
), 'normal', __( 'View Details' ), 'thickbox open-plugin-details-modal' );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
35 |
}
|
36 |
|
37 |
|
@@ -46,7 +38,7 @@ class Generic_WidgetBoldGrid {
|
|
46 |
*
|
47 |
* @return bool
|
48 |
*/
|
49 |
-
private function should_show_widget() {
|
50 |
$plugins = get_option( 'active_plugins' );
|
51 |
|
52 |
$backup_plugins = array(
|
3 |
|
4 |
class Generic_WidgetBoldGrid {
|
5 |
static public function admin_init_w3tc_dashboard() {
|
6 |
+
$show = apply_filters( 'w3tc_generic_boldgrid_show', self::should_show_widget() );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7 |
if ( !$show ) {
|
8 |
return;
|
9 |
}
|
10 |
|
11 |
+
$o = new Generic_WidgetBoldGrid();
|
12 |
+
|
13 |
+
Util_Widget::add2( 'w3tc_boldgrid', 5000,
|
14 |
'<div class="w3tc-widget-boldgrid-logo"></div>',
|
15 |
+
array( $o, 'widget_form' ),
|
16 |
self_admin_url(
|
17 |
'plugin-install.php?tab=plugin-information&plugin=boldgrid-backup' .
|
18 |
'&TB_iframe=true&width=772&height=550'
|
19 |
), 'normal', __( 'View Details' ), 'thickbox open-plugin-details-modal' );
|
20 |
+
|
21 |
+
add_thickbox();
|
22 |
+
wp_enqueue_script( 'plugin-install' );
|
23 |
+
|
24 |
+
wp_enqueue_script( 'w3tc-boldgrid-widget',
|
25 |
+
plugins_url( 'Generic_WidgetBoldGrid_View.js', W3TC_FILE ),
|
26 |
+
array( 'thickbox' ), W3TC_VERSION );
|
27 |
}
|
28 |
|
29 |
|
38 |
*
|
39 |
* @return bool
|
40 |
*/
|
41 |
+
static private function should_show_widget() {
|
42 |
$plugins = get_option( 'active_plugins' );
|
43 |
|
44 |
$backup_plugins = array(
|
LazyLoad_GeneralPage_View.php
DELETED
@@ -1,28 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
namespace W3TC;
|
3 |
-
|
4 |
-
if ( !defined( 'W3TC' ) )
|
5 |
-
die();
|
6 |
-
|
7 |
-
?>
|
8 |
-
<?php
|
9 |
-
Util_Ui::postbox_header( __( 'User Experience', 'w3-total-cache' ), '', 'userexperience' );
|
10 |
-
Util_Ui::config_overloading_button( array(
|
11 |
-
'key' => 'lazyload.configuration_overloaded'
|
12 |
-
) );
|
13 |
-
?>
|
14 |
-
|
15 |
-
<table class="form-table">
|
16 |
-
<?php
|
17 |
-
Util_Ui::config_item( array(
|
18 |
-
'key' => 'lazyload.enabled',
|
19 |
-
'control' => 'checkbox',
|
20 |
-
'checkbox_label' => __( 'Lazy Loading', 'w3-total-cache' ),
|
21 |
-
'description' => __( 'Defer loading offscreen images.',
|
22 |
-
'w3-total-cache' )
|
23 |
-
) );
|
24 |
-
?>
|
25 |
-
</table>
|
26 |
-
|
27 |
-
<?php Util_Ui::button_config_save( 'general_userexperience' ); ?>
|
28 |
-
<?php Util_Ui::postbox_footer(); ?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
LazyLoad_Page_View.php
DELETED
@@ -1,67 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
namespace W3TC;
|
3 |
-
|
4 |
-
if ( !defined( 'W3TC' ) )
|
5 |
-
die();
|
6 |
-
|
7 |
-
?>
|
8 |
-
<p>
|
9 |
-
Lazy loading is currently
|
10 |
-
<?php if ( $c->get_boolean( 'lazyload.enabled' ) ): ?>
|
11 |
-
<span class="w3tc-enabled">enabled</span>
|
12 |
-
<?php else: ?>
|
13 |
-
<span class="w3tc-disabled">disabled</span>
|
14 |
-
<?php endif ?>
|
15 |
-
.
|
16 |
-
<p>
|
17 |
-
|
18 |
-
<form action="admin.php?page=w3tc_userexperience" method="post">
|
19 |
-
<div class="metabox-holder">
|
20 |
-
<?php Util_Ui::postbox_header( __( 'Lazy Loading', 'w3-total-cache' ), '', 'application' ); ?>
|
21 |
-
<table class="form-table">
|
22 |
-
<?php
|
23 |
-
Util_Ui::config_item( array(
|
24 |
-
'key' => 'lazyload.process_img',
|
25 |
-
'control' => 'checkbox',
|
26 |
-
'checkbox_label' => __( 'Process HTML image tags', 'w3-total-cache' ),
|
27 |
-
'description' => __( 'Process <code>img</code> tags',
|
28 |
-
'w3-total-cache' )
|
29 |
-
) );
|
30 |
-
|
31 |
-
Util_Ui::config_item( array(
|
32 |
-
'key' => 'lazyload.process_background',
|
33 |
-
'control' => 'checkbox',
|
34 |
-
'checkbox_label' => __( 'Process background images', 'w3-total-cache' ),
|
35 |
-
'description' => __( 'Process <code>background</code> styles',
|
36 |
-
'w3-total-cache' )
|
37 |
-
) );
|
38 |
-
|
39 |
-
Util_Ui::config_item( array(
|
40 |
-
'key' => 'lazyload.exclude',
|
41 |
-
'label' => 'Exclude words:',
|
42 |
-
'control' => 'textarea',
|
43 |
-
'description' => __( 'Exclude tags containing words',
|
44 |
-
'w3-total-cache' )
|
45 |
-
) );
|
46 |
-
|
47 |
-
Util_Ui::config_item( array(
|
48 |
-
'key' => 'lazyload.embed_method',
|
49 |
-
'label' => __( 'Script Embed method:', 'w3-total-cache' ),
|
50 |
-
'control' => 'selectbox',
|
51 |
-
'selectbox_values' => array(
|
52 |
-
'async_head' => 'async',
|
53 |
-
'sync_head' => 'sync (to head)',
|
54 |
-
'inline_footer' => 'inline'
|
55 |
-
),
|
56 |
-
'description' => 'Use <code>inline</code> method only when your website has just a few pages'
|
57 |
-
)
|
58 |
-
);
|
59 |
-
?>
|
60 |
-
</table>
|
61 |
-
<p class="submit">
|
62 |
-
<?php Util_Ui::button_config_save( 'lazyload' ); ?>
|
63 |
-
</p>
|
64 |
-
|
65 |
-
<?php Util_Ui::postbox_footer(); ?>
|
66 |
-
</form>
|
67 |
-
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
LazyLoad_Plugin_Admin.php
DELETED
@@ -1,36 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
namespace W3TC;
|
3 |
-
|
4 |
-
|
5 |
-
|
6 |
-
class LazyLoad_Plugin_Admin {
|
7 |
-
function run() {
|
8 |
-
add_filter( 'w3tc_admin_menu', array( $this, 'w3tc_admin_menu' ) );
|
9 |
-
add_action( 'w3tc_settings_page-w3tc_userexperience',
|
10 |
-
array( $this, 'w3tc_settings_page_w3tc_userexperience' ) );
|
11 |
-
add_action( 'admin_init_w3tc_general',
|
12 |
-
array( '\W3TC\LazyLoad_GeneralPage', 'admin_init_w3tc_general' ) );
|
13 |
-
}
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
public function w3tc_admin_menu( $menu ) {
|
18 |
-
$c = Dispatcher::config();
|
19 |
-
|
20 |
-
$menu['w3tc_userexperience'] = array(
|
21 |
-
'page_title' => __( 'User Experience', 'w3-total-cache' ),
|
22 |
-
'menu_text' => __( 'User Experience', 'w3-total-cache' ),
|
23 |
-
'visible_always' => false,
|
24 |
-
'order' => 1200
|
25 |
-
);
|
26 |
-
|
27 |
-
return $menu;
|
28 |
-
}
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
public function w3tc_settings_page_w3tc_userexperience() {
|
33 |
-
$v = new LazyLoad_Page();
|
34 |
-
$v->render_content();
|
35 |
-
}
|
36 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Minify_AutoJs.php
CHANGED
@@ -43,16 +43,7 @@ class Minify_AutoJs {
|
|
43 |
private $debug_minified_urls = array();
|
44 |
|
45 |
/**
|
46 |
-
* Current
|
47 |
-
*
|
48 |
-
* @var integer
|
49 |
-
*/
|
50 |
-
private $embed_pos;
|
51 |
-
|
52 |
-
/**
|
53 |
-
* Current list of files to minify
|
54 |
-
*
|
55 |
-
* @var array
|
56 |
*/
|
57 |
private $files_to_minify;
|
58 |
|
@@ -63,12 +54,6 @@ class Minify_AutoJs {
|
|
63 |
*/
|
64 |
private $group_type = 'head';
|
65 |
|
66 |
-
/**
|
67 |
-
* Current number of minification group
|
68 |
-
*
|
69 |
-
* @var integer
|
70 |
-
*/
|
71 |
-
private $minify_group_number = 0;
|
72 |
private $debug = false;
|
73 |
|
74 |
/**
|
@@ -120,14 +105,28 @@ class Minify_AutoJs {
|
|
120 |
$script_tags );
|
121 |
|
122 |
// pass scripts
|
123 |
-
$this->
|
124 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
125 |
|
126 |
for ( $n = 0; $n < count( $script_tags ); $n++ ) {
|
127 |
$this->process_script_tag( $script_tags[$n], $n );
|
128 |
}
|
129 |
|
130 |
-
$this->flush_collected( '' );
|
|
|
|
|
131 |
|
132 |
return $this->buffer;
|
133 |
}
|
@@ -191,7 +190,7 @@ class Minify_AutoJs {
|
|
191 |
Minify_Core::log( 'its not src=, flushing' );
|
192 |
}
|
193 |
|
194 |
-
$this->flush_collected( $script_tag );
|
195 |
|
196 |
if ( preg_match( '~</head>~is', $script_tag, $match ) )
|
197 |
$this->group_type = 'body';
|
@@ -210,9 +209,8 @@ class Minify_AutoJs {
|
|
210 |
|
211 |
$step1 = !empty( $step1_result );
|
212 |
$step2 = !in_array( $file, $this->ignore_js_files );
|
213 |
-
$step3 = !preg_match( '~\s+(async|defer)[> ]~is', $script_tag );
|
214 |
|
215 |
-
$do_tag_minification = $step1 && $step2
|
216 |
$do_tag_minification = apply_filters( 'w3tc_minify_js_do_tag_minification',
|
217 |
$do_tag_minification, $script_tag, $file );
|
218 |
|
@@ -244,7 +242,7 @@ class Minify_AutoJs {
|
|
244 |
strlen( $script_tag ) );
|
245 |
}
|
246 |
|
247 |
-
$this->flush_collected( $script_tag );
|
248 |
return;
|
249 |
}
|
250 |
|
@@ -252,33 +250,51 @@ class Minify_AutoJs {
|
|
252 |
$this->buffer = substr_replace( $this->buffer, '',
|
253 |
$tag_pos, strlen( $script_tag ) );
|
254 |
|
255 |
-
|
256 |
-
|
257 |
-
|
258 |
-
|
259 |
-
|
260 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
261 |
}
|
262 |
|
263 |
/**
|
264 |
* Minifies collected scripts
|
265 |
*/
|
266 |
-
private function flush_collected( $last_script_tag ) {
|
267 |
-
if ( count( $this->files_to_minify ) <= 0 )
|
268 |
return;
|
|
|
269 |
$do_flush_collected = apply_filters( 'w3tc_minify_js_do_flush_collected',
|
270 |
-
true, $last_script_tag, $this );
|
271 |
-
if ( !$do_flush_collected )
|
272 |
return;
|
273 |
-
|
274 |
-
// find embed position
|
275 |
-
$embed_pos = $this->embed_pos;
|
276 |
|
277 |
// build minified script tag
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
278 |
$data = array(
|
279 |
-
'files_to_minify' => $this->files_to_minify,
|
280 |
-
'embed_pos' => $embed_pos,
|
281 |
-
'embed_type' => $
|
282 |
'buffer' => $this->buffer
|
283 |
);
|
284 |
|
@@ -309,9 +325,17 @@ class Minify_AutoJs {
|
|
309 |
// replace
|
310 |
$this->buffer = substr_replace( $this->buffer,
|
311 |
$data['script_to_embed_body'], $data['embed_pos'], 0 );
|
|
|
|
|
|
|
|
|
|
|
|
|
312 |
}
|
313 |
|
314 |
-
$this->files_to_minify = array(
|
315 |
-
|
|
|
|
|
316 |
}
|
317 |
}
|
43 |
private $debug_minified_urls = array();
|
44 |
|
45 |
/**
|
46 |
+
* Current list of script files to minify
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
47 |
*/
|
48 |
private $files_to_minify;
|
49 |
|
54 |
*/
|
55 |
private $group_type = 'head';
|
56 |
|
|
|
|
|
|
|
|
|
|
|
|
|
57 |
private $debug = false;
|
58 |
|
59 |
/**
|
105 |
$script_tags );
|
106 |
|
107 |
// pass scripts
|
108 |
+
$this->files_to_minify = array(
|
109 |
+
'sync' => array(
|
110 |
+
'embed_pos' => 0,
|
111 |
+
'files' => array()
|
112 |
+
),
|
113 |
+
'async' => array(
|
114 |
+
'embed_pos' => 0,
|
115 |
+
'files' => array()
|
116 |
+
),
|
117 |
+
'defer' => array(
|
118 |
+
'embed_pos' => 0,
|
119 |
+
'files' => array()
|
120 |
+
)
|
121 |
+
);
|
122 |
|
123 |
for ( $n = 0; $n < count( $script_tags ); $n++ ) {
|
124 |
$this->process_script_tag( $script_tags[$n], $n );
|
125 |
}
|
126 |
|
127 |
+
$this->flush_collected( 'sync', '' );
|
128 |
+
$this->flush_collected( 'async', '' );
|
129 |
+
$this->flush_collected( 'defer', '' );
|
130 |
|
131 |
return $this->buffer;
|
132 |
}
|
190 |
Minify_Core::log( 'its not src=, flushing' );
|
191 |
}
|
192 |
|
193 |
+
$this->flush_collected( 'sync', $script_tag );
|
194 |
|
195 |
if ( preg_match( '~</head>~is', $script_tag, $match ) )
|
196 |
$this->group_type = 'body';
|
209 |
|
210 |
$step1 = !empty( $step1_result );
|
211 |
$step2 = !in_array( $file, $this->ignore_js_files );
|
|
|
212 |
|
213 |
+
$do_tag_minification = $step1 && $step2;
|
214 |
$do_tag_minification = apply_filters( 'w3tc_minify_js_do_tag_minification',
|
215 |
$do_tag_minification, $script_tag, $file );
|
216 |
|
242 |
strlen( $script_tag ) );
|
243 |
}
|
244 |
|
245 |
+
$this->flush_collected( 'sync', $script_tag );
|
246 |
return;
|
247 |
}
|
248 |
|
250 |
$this->buffer = substr_replace( $this->buffer, '',
|
251 |
$tag_pos, strlen( $script_tag ) );
|
252 |
|
253 |
+
$m = null;
|
254 |
+
if ( !preg_match( '~\s+(async|defer)[> ]~is', $script_tag, $m ) ) {
|
255 |
+
$sync_type = 'sync';
|
256 |
+
|
257 |
+
// for head group - put minified file at the place of first script
|
258 |
+
// for body - put at the place of last script, to make as more DOM
|
259 |
+
// objects available as possible
|
260 |
+
if ( count( $this->files_to_minify[$sync_type]['files'] ) <= 0 ||
|
261 |
+
$this->group_type == 'body' ) {
|
262 |
+
$this->files_to_minify[$sync_type]['embed_pos'] = $tag_pos;
|
263 |
+
}
|
264 |
+
} else {
|
265 |
+
$sync_type = strtolower( $m[1] );
|
266 |
+
$this->files_to_minify[$sync_type]['embed_pos'] = $tag_pos;
|
267 |
+
}
|
268 |
+
|
269 |
+
$this->files_to_minify[$sync_type]['files'][] = $file;
|
270 |
}
|
271 |
|
272 |
/**
|
273 |
* Minifies collected scripts
|
274 |
*/
|
275 |
+
private function flush_collected( $sync_type, $last_script_tag ) {
|
276 |
+
if ( count( $this->files_to_minify[$sync_type]['files'] ) <= 0 ) {
|
277 |
return;
|
278 |
+
}
|
279 |
$do_flush_collected = apply_filters( 'w3tc_minify_js_do_flush_collected',
|
280 |
+
true, $last_script_tag, $this, $sync_type );
|
281 |
+
if ( !$do_flush_collected ) {
|
282 |
return;
|
283 |
+
}
|
|
|
|
|
284 |
|
285 |
// build minified script tag
|
286 |
+
if ( $sync_type == 'sync' ) {
|
287 |
+
$embed_type = $this->embed_type[$this->group_type];
|
288 |
+
} elseif ( $sync_type == 'async' ) {
|
289 |
+
$embed_type = 'nb-async';
|
290 |
+
} elseif ( $sync_type == 'defer' ) {
|
291 |
+
$embed_type = 'nb-defer';
|
292 |
+
}
|
293 |
+
|
294 |
$data = array(
|
295 |
+
'files_to_minify' => $this->files_to_minify[$sync_type]['files'],
|
296 |
+
'embed_pos' => $this->files_to_minify[$sync_type]['embed_pos'],
|
297 |
+
'embed_type' => $embed_type,
|
298 |
'buffer' => $this->buffer
|
299 |
);
|
300 |
|
325 |
// replace
|
326 |
$this->buffer = substr_replace( $this->buffer,
|
327 |
$data['script_to_embed_body'], $data['embed_pos'], 0 );
|
328 |
+
|
329 |
+
foreach ( $this->files_to_minify as $key => $i ) {
|
330 |
+
if ( $key != $sync_type && $i['embed_pos'] >= $data['embed_pos'] ) {
|
331 |
+
$this->files_to_minify[$key]['embed_pos'] += strlen( $data['script_to_embed_body'] );
|
332 |
+
}
|
333 |
+
}
|
334 |
}
|
335 |
|
336 |
+
$this->files_to_minify[$sync_type] = array(
|
337 |
+
'embed_pos' => 0,
|
338 |
+
'files' => array()
|
339 |
+
);
|
340 |
}
|
341 |
}
|
Minify_Plugin.php
CHANGED
@@ -1106,19 +1106,22 @@ class _W3_MinifyHelpers {
|
|
1106 |
$script .= "<script>w3tc_load_js('" .
|
1107 |
$url . "');</script>";
|
1108 |
|
1109 |
-
}
|
1110 |
-
|
1111 |
-
|
1112 |
-
|
1113 |
-
|
1114 |
-
|
1115 |
-
|
1116 |
-
|
1117 |
-
|
1118 |
-
|
1119 |
-
|
1120 |
-
|
1121 |
-
|
|
|
|
|
|
|
1122 |
}
|
1123 |
|
1124 |
return $script . "\r\n";
|
1106 |
$script .= "<script>w3tc_load_js('" .
|
1107 |
$url . "');</script>";
|
1108 |
|
1109 |
+
} elseif ( $embed_type == 'nb-async' ) {
|
1110 |
+
$script = '<script async src="' .
|
1111 |
+
str_replace( '&', '&', $url ) . '"></script>';
|
1112 |
+
} elseif ( $embed_type == 'nb-defer' ) {
|
1113 |
+
$script = '<script defer src="' .
|
1114 |
+
str_replace( '&', '&', $url ) . '"></script>';
|
1115 |
+
} elseif ( $embed_type == 'extsrc' ) {
|
1116 |
+
$script = '<script extsrc="' .
|
1117 |
+
str_replace( '&', '&', $url ) . '"></script>';
|
1118 |
+
} elseif ( $embed_type == 'asyncsrc' ) {
|
1119 |
+
$script = '<script asyncsrc="' .
|
1120 |
+
str_replace( '&', '&', $url ) . '"></script>';
|
1121 |
+
} else {
|
1122 |
+
$script = '<script src="' .
|
1123 |
+
str_replace( '&', '&', $url ) . '"></script>';
|
1124 |
+
}
|
1125 |
}
|
1126 |
|
1127 |
return $script . "\r\n";
|
PgCache_ContentGrabber.php
CHANGED
@@ -198,7 +198,7 @@ class PgCache_ContentGrabber {
|
|
198 |
}
|
199 |
|
200 |
// TODO: call modifies object state, rename method at least
|
201 |
-
$this->_caching = $this->
|
202 |
global $w3_late_init;
|
203 |
|
204 |
if ( $this->_debug ) {
|
@@ -423,7 +423,7 @@ class PgCache_ContentGrabber {
|
|
423 |
$response_headers = $this->_get_response_headers();
|
424 |
|
425 |
// TODO: call modifies object state, rename method at least
|
426 |
-
$original_can_cache = $this->
|
427 |
$can_cache = apply_filters( 'w3tc_can_cache', $original_can_cache, $this, $buffer );
|
428 |
if ( $can_cache != $original_can_cache ) {
|
429 |
$this->cache_reject_reason = 'Third-party plugin has modified caching activity';
|
@@ -508,7 +508,7 @@ class PgCache_ContentGrabber {
|
|
508 |
*
|
509 |
* @return boolean
|
510 |
*/
|
511 |
-
private function
|
512 |
/**
|
513 |
* Don't cache in console mode
|
514 |
*/
|
@@ -637,7 +637,7 @@ class PgCache_ContentGrabber {
|
|
637 |
* @param string $buffer
|
638 |
* @return boolean
|
639 |
*/
|
640 |
-
private function
|
641 |
/**
|
642 |
* Skip if caching is disabled
|
643 |
*/
|
@@ -775,6 +775,12 @@ class PgCache_ContentGrabber {
|
|
775 |
}
|
776 |
}
|
777 |
|
|
|
|
|
|
|
|
|
|
|
|
|
778 |
return true;
|
779 |
}
|
780 |
|
198 |
}
|
199 |
|
200 |
// TODO: call modifies object state, rename method at least
|
201 |
+
$this->_caching = $this->_can_read_cache();
|
202 |
global $w3_late_init;
|
203 |
|
204 |
if ( $this->_debug ) {
|
423 |
$response_headers = $this->_get_response_headers();
|
424 |
|
425 |
// TODO: call modifies object state, rename method at least
|
426 |
+
$original_can_cache = $this->_can_write_cache( $buffer, $response_headers );
|
427 |
$can_cache = apply_filters( 'w3tc_can_cache', $original_can_cache, $this, $buffer );
|
428 |
if ( $can_cache != $original_can_cache ) {
|
429 |
$this->cache_reject_reason = 'Third-party plugin has modified caching activity';
|
508 |
*
|
509 |
* @return boolean
|
510 |
*/
|
511 |
+
private function _can_read_cache() {
|
512 |
/**
|
513 |
* Don't cache in console mode
|
514 |
*/
|
637 |
* @param string $buffer
|
638 |
* @return boolean
|
639 |
*/
|
640 |
+
private function _can_write_cache( $buffer, $response_headers ) {
|
641 |
/**
|
642 |
* Skip if caching is disabled
|
643 |
*/
|
775 |
}
|
776 |
}
|
777 |
|
778 |
+
if ( isset( $_SERVER['REQUEST_METHOD'] ) && $_SERVER['REQUEST_METHOD'] == 'HEAD' ) {
|
779 |
+
$this->cache_reject_reason = 'HEAD request';
|
780 |
+
$this->process_status = 'miss_request_method';
|
781 |
+
return;
|
782 |
+
}
|
783 |
+
|
784 |
return true;
|
785 |
}
|
786 |
|
PgCache_Page.php
CHANGED
@@ -4,6 +4,14 @@ namespace W3TC;
|
|
4 |
|
5 |
|
6 |
class PgCache_Page extends Base_Page_Settings {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7 |
/**
|
8 |
* Current page
|
9 |
*
|
4 |
|
5 |
|
6 |
class PgCache_Page extends Base_Page_Settings {
|
7 |
+
static public function admin_print_scripts_w3tc_pgcache() {
|
8 |
+
wp_enqueue_script( 'w3tc-options-validator',
|
9 |
+
plugins_url( 'pub/js/options-validator.js', W3TC_FILE ),
|
10 |
+
array(), W3TC_VERSION );
|
11 |
+
}
|
12 |
+
|
13 |
+
|
14 |
+
|
15 |
/**
|
16 |
* Current page
|
17 |
*
|
PgCache_Plugin_Admin.php
CHANGED
@@ -36,8 +36,14 @@ class PgCache_Plugin_Admin {
|
|
36 |
$this, 'w3tc_usage_statistics_summary_from_history' ), 10, 2 );
|
37 |
}
|
38 |
|
39 |
-
// cookie groups
|
40 |
add_filter( 'w3tc_admin_menu', array( $this, 'w3tc_admin_menu' ) );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
41 |
add_action( 'admin_init_w3tc_pgcache_cookiegroups', array(
|
42 |
'\W3TC\PgCache_Page_CookieGroups',
|
43 |
'admin_init_w3tc_pgcache_cookiegroups'
|
36 |
$this, 'w3tc_usage_statistics_summary_from_history' ), 10, 2 );
|
37 |
}
|
38 |
|
|
|
39 |
add_filter( 'w3tc_admin_menu', array( $this, 'w3tc_admin_menu' ) );
|
40 |
+
|
41 |
+
add_action( 'admin_print_scripts-performance_page_w3tc_pgcache', array(
|
42 |
+
'\W3TC\PgCache_Page',
|
43 |
+
'admin_print_scripts_w3tc_pgcache'
|
44 |
+
) );
|
45 |
+
|
46 |
+
// cookie groups
|
47 |
add_action( 'admin_init_w3tc_pgcache_cookiegroups', array(
|
48 |
'\W3TC\PgCache_Page_CookieGroups',
|
49 |
'admin_init_w3tc_pgcache_cookiegroups'
|
Root_Loader.php
CHANGED
@@ -32,7 +32,7 @@ class Root_Loader {
|
|
32 |
if ( $c->get_boolean( 'cdnfsd.enabled' ) )
|
33 |
$plugins[] = new Cdnfsd_Plugin();
|
34 |
if ( $c->get_boolean( 'lazyload.enabled' ) )
|
35 |
-
$plugins[] = new
|
36 |
if ( $c->get_boolean( 'browsercache.enabled' ) )
|
37 |
$plugins[] = new BrowserCache_Plugin();
|
38 |
if ( $c->get_boolean( 'minify.enabled' ) )
|
@@ -46,7 +46,7 @@ class Root_Loader {
|
|
46 |
$plugins[] = new Generic_Plugin_Admin();
|
47 |
$plugins[] = new BrowserCache_Plugin_Admin();
|
48 |
$plugins[] = new DbCache_Plugin_Admin();
|
49 |
-
$plugins[] = new
|
50 |
$plugins[] = new ObjectCache_Plugin_Admin();
|
51 |
$plugins[] = new PgCache_Plugin_Admin();
|
52 |
$plugins[] = new Minify_Plugin_Admin();
|
32 |
if ( $c->get_boolean( 'cdnfsd.enabled' ) )
|
33 |
$plugins[] = new Cdnfsd_Plugin();
|
34 |
if ( $c->get_boolean( 'lazyload.enabled' ) )
|
35 |
+
$plugins[] = new UserExperience_LazyLoad_Plugin();
|
36 |
if ( $c->get_boolean( 'browsercache.enabled' ) )
|
37 |
$plugins[] = new BrowserCache_Plugin();
|
38 |
if ( $c->get_boolean( 'minify.enabled' ) )
|
46 |
$plugins[] = new Generic_Plugin_Admin();
|
47 |
$plugins[] = new BrowserCache_Plugin_Admin();
|
48 |
$plugins[] = new DbCache_Plugin_Admin();
|
49 |
+
$plugins[] = new UserExperience_Plugin_Admin();
|
50 |
$plugins[] = new ObjectCache_Plugin_Admin();
|
51 |
$plugins[] = new PgCache_Plugin_Admin();
|
52 |
$plugins[] = new Minify_Plugin_Admin();
|
UsageStatistics_Page.php
CHANGED
@@ -50,7 +50,7 @@ class UsageStatistics_Page {
|
|
50 |
|
51 |
$reader = new UsageStatistics_Source_DbQueriesLog( $timestamp_start,
|
52 |
$sort_column );
|
53 |
-
$items = $reader->
|
54 |
|
55 |
$result = array(
|
56 |
'date_min' =>
|
@@ -80,7 +80,7 @@ class UsageStatistics_Page {
|
|
80 |
|
81 |
$reader = new UsageStatistics_Source_ObjectCacheLog( $timestamp_start,
|
82 |
$sort_column );
|
83 |
-
$items = $reader->
|
84 |
|
85 |
$result = array(
|
86 |
'date_min' =>
|
@@ -110,7 +110,7 @@ class UsageStatistics_Page {
|
|
110 |
|
111 |
$reader = new UsageStatistics_Source_PageCacheLog( $timestamp_start,
|
112 |
$_REQUEST['status'], $sort_column );
|
113 |
-
$items = $reader->
|
114 |
|
115 |
$result = array(
|
116 |
'date_min' =>
|
50 |
|
51 |
$reader = new UsageStatistics_Source_DbQueriesLog( $timestamp_start,
|
52 |
$sort_column );
|
53 |
+
$items = $reader->list_entries();
|
54 |
|
55 |
$result = array(
|
56 |
'date_min' =>
|
80 |
|
81 |
$reader = new UsageStatistics_Source_ObjectCacheLog( $timestamp_start,
|
82 |
$sort_column );
|
83 |
+
$items = $reader->list_entries();
|
84 |
|
85 |
$result = array(
|
86 |
'date_min' =>
|
110 |
|
111 |
$reader = new UsageStatistics_Source_PageCacheLog( $timestamp_start,
|
112 |
$_REQUEST['status'], $sort_column );
|
113 |
+
$items = $reader->list_entries();
|
114 |
|
115 |
$result = array(
|
116 |
'date_min' =>
|
UsageStatistics_Source_DbQueriesLog.php
CHANGED
@@ -26,7 +26,7 @@ class UsageStatistics_Source_DbQueriesLog {
|
|
26 |
/**
|
27 |
* Lists entries from log
|
28 |
**/
|
29 |
-
public function
|
30 |
$log_filename = Util_Debug::log_filename( 'dbcache-queries' );
|
31 |
$h = @fopen( $log_filename, 'rb' );
|
32 |
if ( !$h ) {
|
26 |
/**
|
27 |
* Lists entries from log
|
28 |
**/
|
29 |
+
public function list_entries() {
|
30 |
$log_filename = Util_Debug::log_filename( 'dbcache-queries' );
|
31 |
$h = @fopen( $log_filename, 'rb' );
|
32 |
if ( !$h ) {
|
UsageStatistics_Source_ObjectCacheLog.php
CHANGED
@@ -26,7 +26,7 @@ class UsageStatistics_Source_ObjectCacheLog {
|
|
26 |
/**
|
27 |
* Lists entries from log
|
28 |
**/
|
29 |
-
public function
|
30 |
$log_filename = Util_Debug::log_filename( 'objectcache-calls' );
|
31 |
$h = @fopen( $log_filename, 'rb' );
|
32 |
if ( !$h ) {
|
26 |
/**
|
27 |
* Lists entries from log
|
28 |
**/
|
29 |
+
public function list_entries() {
|
30 |
$log_filename = Util_Debug::log_filename( 'objectcache-calls' );
|
31 |
$h = @fopen( $log_filename, 'rb' );
|
32 |
if ( !$h ) {
|
UsageStatistics_Source_PageCacheLog.php
CHANGED
@@ -28,7 +28,7 @@ class UsageStatistics_Source_PageCacheLog {
|
|
28 |
/**
|
29 |
* Lists entries from log with specified cache reject reason code
|
30 |
**/
|
31 |
-
public function
|
32 |
$log_filename = Util_Debug::log_filename( 'pagecache' );
|
33 |
$h = @fopen( $log_filename, 'rb' );
|
34 |
if ( !$h ) {
|
28 |
/**
|
29 |
* Lists entries from log with specified cache reject reason code
|
30 |
**/
|
31 |
+
public function list_entries() {
|
32 |
$log_filename = Util_Debug::log_filename( 'pagecache' );
|
33 |
$h = @fopen( $log_filename, 'rb' );
|
34 |
if ( !$h ) {
|
UsageStatistics_Widget.php
CHANGED
@@ -19,16 +19,7 @@ class UsageStatistics_Widget {
|
|
19 |
|
20 |
|
21 |
public function init() {
|
22 |
-
|
23 |
-
$this,
|
24 |
-
'w3tc_widget_setup'
|
25 |
-
), 1000 );
|
26 |
-
}
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
public function w3tc_widget_setup() {
|
31 |
-
Util_Widget::add( 'w3tc_usage_statistics',
|
32 |
'<div class="w3tc-widget-w3tc-logo"></div>' .
|
33 |
'<div class="w3tc-widget-text">' .
|
34 |
__( 'Caching Statistics', 'w3-total-cache' ) .
|
19 |
|
20 |
|
21 |
public function init() {
|
22 |
+
Util_Widget::add2( 'w3tc_usage_statistics', 1000,
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
23 |
'<div class="w3tc-widget-w3tc-logo"></div>' .
|
24 |
'<div class="w3tc-widget-text">' .
|
25 |
__( 'Caching Statistics', 'w3-total-cache' ) .
|
UserExperience_Emoji_Extension.php
ADDED
@@ -0,0 +1,54 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace W3TC;
|
3 |
+
|
4 |
+
class UserExperience_Emoji_Extension {
|
5 |
+
public function run() {
|
6 |
+
remove_action( 'wp_head', 'print_emoji_detection_script', 7 );
|
7 |
+
remove_action( 'wp_print_styles', 'print_emoji_styles' );
|
8 |
+
remove_filter( 'wp_mail', 'wp_staticize_emoji_for_email' );
|
9 |
+
|
10 |
+
remove_filter( 'the_content_feed', 'wp_staticize_emoji' );
|
11 |
+
remove_filter( 'comment_text_rss', 'wp_staticize_emoji' );
|
12 |
+
|
13 |
+
remove_action( 'admin_print_scripts', 'print_emoji_detection_script' );
|
14 |
+
remove_action( 'admin_print_styles', 'print_emoji_styles' );
|
15 |
+
|
16 |
+
add_filter( 'tiny_mce_plugins', array( $this, 'tiny_mce_plugins' ) );
|
17 |
+
add_filter( 'wp_resource_hints',
|
18 |
+
array( $this, 'wp_resource_hints' ), 10, 2 );
|
19 |
+
}
|
20 |
+
|
21 |
+
|
22 |
+
|
23 |
+
public function tiny_mce_plugins( $plugins ) {
|
24 |
+
if ( !is_array( $plugins ) ) {
|
25 |
+
return array();
|
26 |
+
}
|
27 |
+
|
28 |
+
return array_filter( $plugins,
|
29 |
+
function( $v ) {
|
30 |
+
return $v != 'wpemoji';
|
31 |
+
}
|
32 |
+
);
|
33 |
+
}
|
34 |
+
|
35 |
+
|
36 |
+
|
37 |
+
public function wp_resource_hints( $urls, $relation_type ) {
|
38 |
+
if ( !is_array( $urls ) || $relation_type != 'dns-prefetch' ) {
|
39 |
+
return $urls;
|
40 |
+
}
|
41 |
+
|
42 |
+
// remove s.w.org dns-prefetch used by emojis
|
43 |
+
return array_filter( $urls,
|
44 |
+
function( $v ) {
|
45 |
+
return ( substr( $v, 0, 16) != 'https://s.w.org/' );
|
46 |
+
}
|
47 |
+
);
|
48 |
+
}
|
49 |
+
}
|
50 |
+
|
51 |
+
|
52 |
+
|
53 |
+
$o = new UserExperience_Emoji_Extension();
|
54 |
+
$o->run();
|
LazyLoad_GeneralPage.php → UserExperience_GeneralPage.php
RENAMED
@@ -1,14 +1,12 @@
|
|
1 |
<?php
|
2 |
namespace W3TC;
|
3 |
|
4 |
-
|
5 |
-
|
6 |
-
class LazyLoad_GeneralPage {
|
7 |
/**
|
8 |
* W3TC General settings page modifications
|
9 |
*/
|
10 |
static public function admin_init_w3tc_general() {
|
11 |
-
$o = new
|
12 |
|
13 |
add_filter( 'w3tc_settings_general_anchors',
|
14 |
array( $o, 'w3tc_settings_general_anchors' ) );
|
@@ -29,6 +27,6 @@ class LazyLoad_GeneralPage {
|
|
29 |
public function w3tc_settings_general_boxarea_userexperience() {
|
30 |
$config = Dispatcher::config();
|
31 |
|
32 |
-
include W3TC_DIR . '/
|
33 |
}
|
34 |
}
|
1 |
<?php
|
2 |
namespace W3TC;
|
3 |
|
4 |
+
class UserExperience_GeneralPage {
|
|
|
|
|
5 |
/**
|
6 |
* W3TC General settings page modifications
|
7 |
*/
|
8 |
static public function admin_init_w3tc_general() {
|
9 |
+
$o = new UserExperience_GeneralPage();
|
10 |
|
11 |
add_filter( 'w3tc_settings_general_anchors',
|
12 |
array( $o, 'w3tc_settings_general_anchors' ) );
|
27 |
public function w3tc_settings_general_boxarea_userexperience() {
|
28 |
$config = Dispatcher::config();
|
29 |
|
30 |
+
include W3TC_DIR . '/UserExperience_GeneralPage_View.php';
|
31 |
}
|
32 |
}
|
UserExperience_GeneralPage_View.php
ADDED
@@ -0,0 +1,44 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace W3TC;
|
3 |
+
|
4 |
+
if ( !defined( 'W3TC' ) )
|
5 |
+
die();
|
6 |
+
|
7 |
+
?>
|
8 |
+
<?php
|
9 |
+
Util_Ui::postbox_header( __( 'User Experience', 'w3-total-cache' ), '', 'userexperience' );
|
10 |
+
Util_Ui::config_overloading_button( array(
|
11 |
+
'key' => 'lazyload.configuration_overloaded'
|
12 |
+
) );
|
13 |
+
?>
|
14 |
+
|
15 |
+
<table class="form-table">
|
16 |
+
<?php
|
17 |
+
Util_Ui::config_item( array(
|
18 |
+
'key' => 'lazyload.enabled',
|
19 |
+
'control' => 'checkbox',
|
20 |
+
'checkbox_label' => __( 'Lazy Loading', 'w3-total-cache' ),
|
21 |
+
'description' => __( 'Defer loading offscreen images.',
|
22 |
+
'w3-total-cache' )
|
23 |
+
) );
|
24 |
+
?>
|
25 |
+
<?php
|
26 |
+
Util_Ui::config_item_extension_enabled( array(
|
27 |
+
'extension_id' => 'user-experience-emoji',
|
28 |
+
'checkbox_label' => __( 'Disable Emoji', 'w3-total-cache' ),
|
29 |
+
'description' => __( 'Remove emojis support from your website.',
|
30 |
+
'w3-total-cache' )
|
31 |
+
) );
|
32 |
+
?>
|
33 |
+
<?php
|
34 |
+
Util_Ui::config_item_extension_enabled( array(
|
35 |
+
'extension_id' => 'user-experience-oembed',
|
36 |
+
'checkbox_label' => __( 'Disable wp-embed script', 'w3-total-cache' ),
|
37 |
+
'description' => __( 'Remove wp-embed.js script from your website. oEmbed functionality still works but you will not be able to embed other WordPress posts on your pages.',
|
38 |
+
'w3-total-cache' )
|
39 |
+
) );
|
40 |
+
?>
|
41 |
+
</table>
|
42 |
+
|
43 |
+
<?php Util_Ui::button_config_save( 'general_userexperience' ); ?>
|
44 |
+
<?php Util_Ui::postbox_footer(); ?>
|
LazyLoad_Mutator.php → UserExperience_LazyLoad_Mutator.php
RENAMED
@@ -1,9 +1,7 @@
|
|
1 |
<?php
|
2 |
namespace W3TC;
|
3 |
|
4 |
-
|
5 |
-
|
6 |
-
class LazyLoad_Mutator {
|
7 |
private $config;
|
8 |
private $modified = false;
|
9 |
private $excludes;
|
@@ -22,7 +20,7 @@ class LazyLoad_Mutator {
|
|
22 |
$this->excludes = apply_filters( 'w3tc_lazyload_excludes',
|
23 |
$this->config->get_array( 'lazyload.exclude' ) );
|
24 |
|
25 |
-
$unmutable = new
|
26 |
$buffer = $unmutable->remove_unmutable( $buffer );
|
27 |
|
28 |
if ( $this->config->get_boolean( 'lazyload.process_img' ) ) {
|
@@ -63,7 +61,7 @@ class LazyLoad_Mutator {
|
|
63 |
return $content;
|
64 |
}
|
65 |
|
66 |
-
$m = new
|
67 |
return $m->run( $content );
|
68 |
}
|
69 |
|
1 |
<?php
|
2 |
namespace W3TC;
|
3 |
|
4 |
+
class UserExperience_LazyLoad_Mutator {
|
|
|
|
|
5 |
private $config;
|
6 |
private $modified = false;
|
7 |
private $excludes;
|
20 |
$this->excludes = apply_filters( 'w3tc_lazyload_excludes',
|
21 |
$this->config->get_array( 'lazyload.exclude' ) );
|
22 |
|
23 |
+
$unmutable = new UserExperience_LazyLoad_Mutator_Unmutable();
|
24 |
$buffer = $unmutable->remove_unmutable( $buffer );
|
25 |
|
26 |
if ( $this->config->get_boolean( 'lazyload.process_img' ) ) {
|
61 |
return $content;
|
62 |
}
|
63 |
|
64 |
+
$m = new UserExperience_LazyLoad_Mutator_Picture( $this );
|
65 |
return $m->run( $content );
|
66 |
}
|
67 |
|
LazyLoad_Mutator_Picture.php → UserExperience_LazyLoad_Mutator_Picture.php
RENAMED
@@ -1,9 +1,7 @@
|
|
1 |
<?php
|
2 |
namespace W3TC;
|
3 |
|
4 |
-
|
5 |
-
|
6 |
-
class LazyLoad_Mutator_Picture {
|
7 |
private $common;
|
8 |
|
9 |
|
1 |
<?php
|
2 |
namespace W3TC;
|
3 |
|
4 |
+
class UserExperience_LazyLoad_Mutator_Picture {
|
|
|
|
|
5 |
private $common;
|
6 |
|
7 |
|
LazyLoad_Mutator_Unmutable.php → UserExperience_LazyLoad_Mutator_Unmutable.php
RENAMED
@@ -1,9 +1,7 @@
|
|
1 |
<?php
|
2 |
namespace W3TC;
|
3 |
|
4 |
-
|
5 |
-
|
6 |
-
class LazyLoad_Mutator_Unmutable {
|
7 |
private $placeholders = array();
|
8 |
|
9 |
|
1 |
<?php
|
2 |
namespace W3TC;
|
3 |
|
4 |
+
class UserExperience_LazyLoad_Mutator_Unmutable {
|
|
|
|
|
5 |
private $placeholders = array();
|
6 |
|
7 |
|
UserExperience_LazyLoad_Page_View.php
ADDED
@@ -0,0 +1,53 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace W3TC;
|
3 |
+
|
4 |
+
if ( !defined( 'W3TC' ) )
|
5 |
+
die();
|
6 |
+
|
7 |
+
?>
|
8 |
+
<?php Util_Ui::postbox_header( __( 'Lazy Loading', 'w3-total-cache' ), '', 'application' ); ?>
|
9 |
+
<table class="form-table">
|
10 |
+
<?php
|
11 |
+
Util_Ui::config_item( array(
|
12 |
+
'key' => 'lazyload.process_img',
|
13 |
+
'control' => 'checkbox',
|
14 |
+
'checkbox_label' => __( 'Process HTML image tags', 'w3-total-cache' ),
|
15 |
+
'description' => __( 'Process <code>img</code> tags',
|
16 |
+
'w3-total-cache' )
|
17 |
+
) );
|
18 |
+
|
19 |
+
Util_Ui::config_item( array(
|
20 |
+
'key' => 'lazyload.process_background',
|
21 |
+
'control' => 'checkbox',
|
22 |
+
'checkbox_label' => __( 'Process background images', 'w3-total-cache' ),
|
23 |
+
'description' => __( 'Process <code>background</code> styles',
|
24 |
+
'w3-total-cache' )
|
25 |
+
) );
|
26 |
+
|
27 |
+
Util_Ui::config_item( array(
|
28 |
+
'key' => 'lazyload.exclude',
|
29 |
+
'label' => 'Exclude words:',
|
30 |
+
'control' => 'textarea',
|
31 |
+
'description' => __( 'Exclude tags containing words',
|
32 |
+
'w3-total-cache' )
|
33 |
+
) );
|
34 |
+
|
35 |
+
Util_Ui::config_item( array(
|
36 |
+
'key' => 'lazyload.embed_method',
|
37 |
+
'label' => __( 'Script Embed method:', 'w3-total-cache' ),
|
38 |
+
'control' => 'selectbox',
|
39 |
+
'selectbox_values' => array(
|
40 |
+
'async_head' => 'async',
|
41 |
+
'sync_head' => 'sync (to head)',
|
42 |
+
'inline_footer' => 'inline'
|
43 |
+
),
|
44 |
+
'description' => 'Use <code>inline</code> method only when your website has just a few pages'
|
45 |
+
)
|
46 |
+
);
|
47 |
+
?>
|
48 |
+
</table>
|
49 |
+
<p class="submit">
|
50 |
+
<?php Util_Ui::button_config_save( 'lazyload' ); ?>
|
51 |
+
</p>
|
52 |
+
|
53 |
+
<?php Util_Ui::postbox_footer(); ?>
|
LazyLoad_Plugin.php → UserExperience_LazyLoad_Plugin.php
RENAMED
@@ -1,9 +1,7 @@
|
|
1 |
<?php
|
2 |
namespace W3TC;
|
3 |
|
4 |
-
|
5 |
-
|
6 |
-
class LazyLoad_Plugin {
|
7 |
private $config;
|
8 |
private $posts_by_url = array();
|
9 |
|
@@ -57,7 +55,7 @@ class LazyLoad_Plugin {
|
|
57 |
return $buffer;
|
58 |
}
|
59 |
|
60 |
-
$mutator = new
|
61 |
$buffer = $mutator->run( $buffer );
|
62 |
|
63 |
// embed lazyload script
|
1 |
<?php
|
2 |
namespace W3TC;
|
3 |
|
4 |
+
class UserExperience_LazyLoad_Plugin {
|
|
|
|
|
5 |
private $config;
|
6 |
private $posts_by_url = array();
|
7 |
|
55 |
return $buffer;
|
56 |
}
|
57 |
|
58 |
+
$mutator = new UserExperience_LazyLoad_Mutator( $this->config, $this->posts_by_url );
|
59 |
$buffer = $mutator->run( $buffer );
|
60 |
|
61 |
// embed lazyload script
|
UserExperience_OEmbed_Extension.php
ADDED
@@ -0,0 +1,19 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace W3TC;
|
3 |
+
|
4 |
+
class UserExperience_OEmbed_Extension {
|
5 |
+
public function run() {
|
6 |
+
add_action( 'wp_footer', array( $this, 'wp_footer' ) );
|
7 |
+
}
|
8 |
+
|
9 |
+
|
10 |
+
|
11 |
+
public function wp_footer() {
|
12 |
+
wp_deregister_script( 'wp-embed' );
|
13 |
+
}
|
14 |
+
}
|
15 |
+
|
16 |
+
|
17 |
+
|
18 |
+
$o = new UserExperience_OEmbed_Extension();
|
19 |
+
$o->run();
|
LazyLoad_Page.php → UserExperience_Page.php
RENAMED
@@ -1,11 +1,9 @@
|
|
1 |
<?php
|
2 |
namespace W3TC;
|
3 |
|
4 |
-
|
5 |
-
|
6 |
-
class LazyLoad_Page {
|
7 |
public function render_content() {
|
8 |
$c = Dispatcher::config();
|
9 |
-
include W3TC_DIR . '/
|
10 |
}
|
11 |
}
|
1 |
<?php
|
2 |
namespace W3TC;
|
3 |
|
4 |
+
class UserExperience_Page {
|
|
|
|
|
5 |
public function render_content() {
|
6 |
$c = Dispatcher::config();
|
7 |
+
include W3TC_DIR . '/UserExperience_Page_View.php';
|
8 |
}
|
9 |
}
|
UserExperience_Page_View.php
ADDED
@@ -0,0 +1,23 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace W3TC;
|
3 |
+
|
4 |
+
if ( !defined( 'W3TC' ) )
|
5 |
+
die();
|
6 |
+
|
7 |
+
?>
|
8 |
+
<p>
|
9 |
+
Lazy loading is currently
|
10 |
+
<?php if ( $c->get_boolean( 'lazyload.enabled' ) ): ?>
|
11 |
+
<span class="w3tc-enabled">enabled</span>
|
12 |
+
<?php else: ?>
|
13 |
+
<span class="w3tc-disabled">disabled</span>
|
14 |
+
<?php endif ?>
|
15 |
+
.
|
16 |
+
<p>
|
17 |
+
|
18 |
+
<form action="admin.php?page=w3tc_userexperience" method="post">
|
19 |
+
<div class="metabox-holder">
|
20 |
+
<?php /* decouple it when too much */ ?>
|
21 |
+
<?php include W3TC_DIR . '/UserExperience_LazyLoad_Page_View.php' ?>
|
22 |
+
</div>
|
23 |
+
</form>
|
UserExperience_Plugin_Admin.php
ADDED
@@ -0,0 +1,56 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
namespace W3TC;
|
3 |
+
|
4 |
+
class UserExperience_Plugin_Admin {
|
5 |
+
function run() {
|
6 |
+
add_filter( 'w3tc_admin_menu', array( $this, 'w3tc_admin_menu' ) );
|
7 |
+
add_action( 'w3tc_settings_page-w3tc_userexperience',
|
8 |
+
array( $this, 'w3tc_settings_page_w3tc_userexperience' ) );
|
9 |
+
add_action( 'admin_init_w3tc_general',
|
10 |
+
array( '\W3TC\UserExperience_GeneralPage', 'admin_init_w3tc_general' ) );
|
11 |
+
add_filter( 'w3tc_extensions', array(
|
12 |
+
'\W3TC\UserExperience_Plugin_Admin',
|
13 |
+
'w3tc_extensions' ),
|
14 |
+
10, 2 );
|
15 |
+
|
16 |
+
}
|
17 |
+
|
18 |
+
|
19 |
+
|
20 |
+
public function w3tc_admin_menu( $menu ) {
|
21 |
+
$c = Dispatcher::config();
|
22 |
+
|
23 |
+
$menu['w3tc_userexperience'] = array(
|
24 |
+
'page_title' => __( 'User Experience', 'w3-total-cache' ),
|
25 |
+
'menu_text' => __( 'User Experience', 'w3-total-cache' ),
|
26 |
+
'visible_always' => false,
|
27 |
+
'order' => 1200
|
28 |
+
);
|
29 |
+
|
30 |
+
return $menu;
|
31 |
+
}
|
32 |
+
|
33 |
+
|
34 |
+
|
35 |
+
static public function w3tc_extensions( $extensions, $config ) {
|
36 |
+
$extensions['user-experience-emoji'] = array(
|
37 |
+
'public' => false,
|
38 |
+
'extension_id' => 'user-experience-emoji',
|
39 |
+
'path' => 'w3-total-cache/UserExperience_Emoji_Extension.php'
|
40 |
+
);
|
41 |
+
$extensions['user-experience-oembed'] = array(
|
42 |
+
'public' => false,
|
43 |
+
'extension_id' => 'user-experience-oembed',
|
44 |
+
'path' => 'w3-total-cache/UserExperience_OEmbed_Extension.php'
|
45 |
+
);
|
46 |
+
|
47 |
+
return $extensions;
|
48 |
+
}
|
49 |
+
|
50 |
+
|
51 |
+
|
52 |
+
public function w3tc_settings_page_w3tc_userexperience() {
|
53 |
+
$v = new UserExperience_Page();
|
54 |
+
$v->render_content();
|
55 |
+
}
|
56 |
+
}
|
Util_Environment.php
CHANGED
@@ -1038,7 +1038,7 @@ class Util_Environment {
|
|
1038 |
return $post_ID;
|
1039 |
} elseif ( $comment_post_ID ) {
|
1040 |
return $comment_post_ID;
|
1041 |
-
} elseif ( ( is_single() || is_page() ) && isset( $posts[0]->ID ) ) {
|
1042 |
return $posts[0]->ID;
|
1043 |
} elseif ( isset( $posts->ID ) ) {
|
1044 |
return $posts->ID;
|
1038 |
return $post_ID;
|
1039 |
} elseif ( $comment_post_ID ) {
|
1040 |
return $comment_post_ID;
|
1041 |
+
} elseif ( ( is_single() || is_page() ) && is_array( $posts ) && isset( $posts[0]->ID ) ) {
|
1042 |
return $posts[0]->ID;
|
1043 |
} elseif ( isset( $posts->ID ) ) {
|
1044 |
return $posts->ID;
|
Util_Ui.php
CHANGED
@@ -491,7 +491,7 @@ class Util_Ui {
|
|
491 |
echo '</label>' . $postfix . "\n";
|
492 |
if ( $pro_feature ) {
|
493 |
Util_Ui::pro_wrap_description( $label_or_array['pro_excerpt'],
|
494 |
-
$label_or_array['pro_description'] );
|
495 |
|
496 |
Util_Ui::pro_wrap_maybe_end( $name . '__' . $key );
|
497 |
}
|
@@ -750,6 +750,26 @@ class Util_Ui {
|
|
750 |
|
751 |
|
752 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
753 |
static public function config_item_pro( $a ) {
|
754 |
$a = Util_Ui::config_item_preprocess( $a );
|
755 |
|
@@ -771,7 +791,7 @@ class Util_Ui {
|
|
771 |
echo $a['control_after'];
|
772 |
}
|
773 |
|
774 |
-
Util_Ui::pro_wrap_description( $a['excerpt'], $a['description'] );
|
775 |
Util_Ui::pro_wrap_maybe_end( $a['control_name'] );
|
776 |
|
777 |
if ( $a['label_class'] != 'w3tc_no_trtd' ) {
|
@@ -889,7 +909,7 @@ class Util_Ui {
|
|
889 |
|
890 |
|
891 |
|
892 |
-
static public function pro_wrap_description( $excerpt, $description ) {
|
893 |
echo '<p class="description w3tc-gopro-excerpt">' . $excerpt . '</p>';
|
894 |
|
895 |
if ( !empty( $description ) ) {
|
@@ -901,7 +921,7 @@ class Util_Ui {
|
|
901 |
);
|
902 |
|
903 |
echo '<div class="w3tc-gopro-description">' . implode( "\n", $d ) . '</div>';
|
904 |
-
echo '<a href="#" class="w3tc-gopro-more">Show More <span class="dashicons dashicons-arrow-down-alt2"></span></a>';
|
905 |
}
|
906 |
}
|
907 |
|
491 |
echo '</label>' . $postfix . "\n";
|
492 |
if ( $pro_feature ) {
|
493 |
Util_Ui::pro_wrap_description( $label_or_array['pro_excerpt'],
|
494 |
+
$label_or_array['pro_description'], $name . '__' . $key );
|
495 |
|
496 |
Util_Ui::pro_wrap_maybe_end( $name . '__' . $key );
|
497 |
}
|
750 |
|
751 |
|
752 |
|
753 |
+
static public function config_item_extension_enabled( $a ) {
|
754 |
+
echo "<tr><th class=''></th>\n<td>\n";
|
755 |
+
|
756 |
+
$c = Dispatcher::config();
|
757 |
+
Util_Ui::checkbox2( array(
|
758 |
+
'name' => 'extension__' . Util_Ui::config_key_to_http_name( $a['extension_id'] ),
|
759 |
+
'value' => $c->is_extension_active_frontend( $a['extension_id'] ),
|
760 |
+
'label' => $a['checkbox_label']
|
761 |
+
) );
|
762 |
+
|
763 |
+
if ( isset( $a['description'] ) ) {
|
764 |
+
echo '<p class="description">' . $a['description'] . '</p>';
|
765 |
+
}
|
766 |
+
|
767 |
+
echo "</td>";
|
768 |
+
echo "</tr>\n";
|
769 |
+
}
|
770 |
+
|
771 |
+
|
772 |
+
|
773 |
static public function config_item_pro( $a ) {
|
774 |
$a = Util_Ui::config_item_preprocess( $a );
|
775 |
|
791 |
echo $a['control_after'];
|
792 |
}
|
793 |
|
794 |
+
Util_Ui::pro_wrap_description( $a['excerpt'], $a['description'], $a['control_name'] );
|
795 |
Util_Ui::pro_wrap_maybe_end( $a['control_name'] );
|
796 |
|
797 |
if ( $a['label_class'] != 'w3tc_no_trtd' ) {
|
909 |
|
910 |
|
911 |
|
912 |
+
static public function pro_wrap_description( $excerpt, $description, $data_href ) {
|
913 |
echo '<p class="description w3tc-gopro-excerpt">' . $excerpt . '</p>';
|
914 |
|
915 |
if ( !empty( $description ) ) {
|
921 |
);
|
922 |
|
923 |
echo '<div class="w3tc-gopro-description">' . implode( "\n", $d ) . '</div>';
|
924 |
+
echo '<a href="#" class="w3tc-gopro-more" data-href="w3tc-gopro-more-' . $data_href . '">Show More <span class="dashicons dashicons-arrow-down-alt2"></span></a>';
|
925 |
}
|
926 |
}
|
927 |
|
Util_Widget.php
CHANGED
@@ -2,6 +2,8 @@
|
|
2 |
namespace W3TC;
|
3 |
|
4 |
class Util_Widget {
|
|
|
|
|
5 |
/**
|
6 |
* Registers dashboard widgets.
|
7 |
*
|
@@ -48,11 +50,32 @@ class Util_Widget {
|
|
48 |
do_action( 'do_meta_boxes', $screen->id, 'side', '' );
|
49 |
}
|
50 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
51 |
/**
|
52 |
* Registers widget
|
53 |
*/
|
54 |
static public function add( $widget_id, $widget_name, $callback,
|
55 |
-
|
|
|
56 |
$screen = get_current_screen();
|
57 |
global $w3tc_dashboard_control_callbacks;
|
58 |
|
@@ -103,7 +126,6 @@ class Util_Widget {
|
|
103 |
add_meta_box( $widget_id, $widget_name, $callback, $screen, $location, $priority );
|
104 |
}
|
105 |
|
106 |
-
|
107 |
/* Dashboard Widgets Controls */
|
108 |
static public function _dashboard_control_callback( $dashboard, $meta_box ) {
|
109 |
echo '<form action="" method="post" class="dashboard-widget-control-form">';
|
@@ -114,6 +136,10 @@ class Util_Widget {
|
|
114 |
echo '</form>';
|
115 |
}
|
116 |
|
|
|
|
|
|
|
|
|
117 |
/**
|
118 |
* Calls widget control callback.
|
119 |
*
|
@@ -129,3 +155,26 @@ class Util_Widget {
|
|
129 |
}
|
130 |
}
|
131 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
namespace W3TC;
|
3 |
|
4 |
class Util_Widget {
|
5 |
+
static $w3tc_dashboard_widgets = array();
|
6 |
+
|
7 |
/**
|
8 |
* Registers dashboard widgets.
|
9 |
*
|
50 |
do_action( 'do_meta_boxes', $screen->id, 'side', '' );
|
51 |
}
|
52 |
|
53 |
+
static public function add2( $widget_id, $priority, $widget_name, $callback,
|
54 |
+
$control_callback = null, $location = 'normal', $header_text = null,
|
55 |
+
$header_class = '') {
|
56 |
+
$o = new _Util_Widget_Postponed( array(
|
57 |
+
'widget_id' => $widget_id,
|
58 |
+
'widget_name' => $widget_name,
|
59 |
+
'callback' => $callback,
|
60 |
+
'control_callback' => $control_callback,
|
61 |
+
'location' => $location,
|
62 |
+
'header_text' => $header_text,
|
63 |
+
'header_class' => $header_class
|
64 |
+
) );
|
65 |
+
|
66 |
+
add_action( 'w3tc_widget_setup',
|
67 |
+
array( $o, 'wp_dashboard_setup' ), $priority );
|
68 |
+
add_action( 'w3tc_network_dashboard_setup',
|
69 |
+
array( $o, 'wp_dashboard_setup' ), $priority );
|
70 |
+
self::$w3tc_dashboard_widgets[$widget_id] = '*';
|
71 |
+
}
|
72 |
+
|
73 |
/**
|
74 |
* Registers widget
|
75 |
*/
|
76 |
static public function add( $widget_id, $widget_name, $callback,
|
77 |
+
$control_callback = null, $location = 'normal', $header_text = null,
|
78 |
+
$header_class = '') {
|
79 |
$screen = get_current_screen();
|
80 |
global $w3tc_dashboard_control_callbacks;
|
81 |
|
126 |
add_meta_box( $widget_id, $widget_name, $callback, $screen, $location, $priority );
|
127 |
}
|
128 |
|
|
|
129 |
/* Dashboard Widgets Controls */
|
130 |
static public function _dashboard_control_callback( $dashboard, $meta_box ) {
|
131 |
echo '<form action="" method="post" class="dashboard-widget-control-form">';
|
136 |
echo '</form>';
|
137 |
}
|
138 |
|
139 |
+
static public function list_widgets() {
|
140 |
+
return implode(',', array_keys(self::$w3tc_dashboard_widgets));
|
141 |
+
}
|
142 |
+
|
143 |
/**
|
144 |
* Calls widget control callback.
|
145 |
*
|
155 |
}
|
156 |
}
|
157 |
}
|
158 |
+
|
159 |
+
|
160 |
+
|
161 |
+
class _Util_Widget_Postponed {
|
162 |
+
private $data = array();
|
163 |
+
|
164 |
+
public function __construct( $data ) {
|
165 |
+
$this->data = $data;
|
166 |
+
}
|
167 |
+
|
168 |
+
|
169 |
+
public function wp_dashboard_setup() {
|
170 |
+
Util_Widget::add(
|
171 |
+
$this->data['widget_id'],
|
172 |
+
$this->data['widget_name'],
|
173 |
+
$this->data['callback'],
|
174 |
+
$this->data['control_callback'],
|
175 |
+
$this->data['location'],
|
176 |
+
$this->data['header_text'],
|
177 |
+
$this->data['header_class']
|
178 |
+
);
|
179 |
+
}
|
180 |
+
}
|
inc/options/browsercache.php
CHANGED
File without changes
|
inc/options/extensions/list.php
CHANGED
@@ -57,6 +57,10 @@ $cb_id = 0;
|
|
57 |
foreach ( $extension_keys as $extension ):
|
58 |
$meta = $extensions[$extension];
|
59 |
$meta = $this->default_meta( $meta );
|
|
|
|
|
|
|
|
|
60 |
$cb_id++;
|
61 |
?>
|
62 |
<?php do_action( "w3tc_extension_before_row-{$extension}" ) ?>
|
@@ -114,7 +118,7 @@ if ( $links ) {
|
|
114 |
<p>
|
115 |
<?php if ( isset( $meta['pro_feature'] ) && $meta['pro_feature'] ): ?>
|
116 |
<?php Util_Ui::pro_wrap_maybe_start() ?>
|
117 |
-
<?php Util_Ui::pro_wrap_description( $meta['pro_excerpt'], $meta['pro_description'] ) ?>
|
118 |
<?php Util_Ui::pro_wrap_maybe_end( "extension_$extension" ) ?>
|
119 |
<?php else: ?>
|
120 |
<?php _e( $meta['description'] ) ?>
|
57 |
foreach ( $extension_keys as $extension ):
|
58 |
$meta = $extensions[$extension];
|
59 |
$meta = $this->default_meta( $meta );
|
60 |
+
if (!$meta['public']) {
|
61 |
+
continue;
|
62 |
+
}
|
63 |
+
|
64 |
$cb_id++;
|
65 |
?>
|
66 |
<?php do_action( "w3tc_extension_before_row-{$extension}" ) ?>
|
118 |
<p>
|
119 |
<?php if ( isset( $meta['pro_feature'] ) && $meta['pro_feature'] ): ?>
|
120 |
<?php Util_Ui::pro_wrap_maybe_start() ?>
|
121 |
+
<?php Util_Ui::pro_wrap_description( $meta['pro_excerpt'], $meta['pro_description'], 'extension-' .$extension ) ?>
|
122 |
<?php Util_Ui::pro_wrap_maybe_end( "extension_$extension" ) ?>
|
123 |
<?php else: ?>
|
124 |
<?php _e( $meta['description'] ) ?>
|
inc/options/general.php
CHANGED
@@ -548,7 +548,8 @@ Util_Ui::config_item( array(
|
|
548 |
__( 'Purge Logs provide information on when your cache has been purged and what triggered it.', 'w3-total-cache' ),
|
549 |
array(
|
550 |
__( 'If you are troubleshooting a complex issue in which you are not sure why your cache is being cleared, Purge Logs can tell you why', 'w3-total-cache' )
|
551 |
-
)
|
|
|
552 |
);
|
553 |
?>
|
554 |
<?php \W3TC\Util_Ui::pro_wrap_maybe_end( 'debug_purge' ) ?>
|
548 |
__( 'Purge Logs provide information on when your cache has been purged and what triggered it.', 'w3-total-cache' ),
|
549 |
array(
|
550 |
__( 'If you are troubleshooting a complex issue in which you are not sure why your cache is being cleared, Purge Logs can tell you why', 'w3-total-cache' )
|
551 |
+
),
|
552 |
+
'general-purge-log'
|
553 |
);
|
554 |
?>
|
555 |
<?php \W3TC\Util_Ui::pro_wrap_maybe_end( 'debug_purge' ) ?>
|
inc/options/pgcache.php
CHANGED
@@ -394,6 +394,7 @@ if ( $this->_config->get_string( 'pgcache.engine' ) == 'memcached' ||
|
|
394 |
<th><label for="pgcache_reject_uri"><?php Util_Ui::e_config_label( 'pgcache.reject.uri' ) ?></label></th>
|
395 |
<td>
|
396 |
<textarea id="pgcache_reject_uri" name="pgcache__reject__uri"
|
|
|
397 |
<?php Util_Ui::sealing_disabled( 'pgcache.' ) ?>
|
398 |
cols="40" rows="5"><?php echo esc_textarea( implode( "\r\n", $this->_config->get_array( 'pgcache.reject.uri' ) ) ); ?></textarea>
|
399 |
<p class="description">
|
@@ -447,6 +448,7 @@ if ( $this->_config->get_string( 'pgcache.engine' ) == 'memcached' ||
|
|
447 |
<th><label for="pgcache_accept_files"><?php Util_Ui::e_config_label( 'pgcache.accept.files' ) ?></label></th>
|
448 |
<td>
|
449 |
<textarea id="pgcache_accept_files" name="pgcache__accept__files"
|
|
|
450 |
<?php Util_Ui::sealing_disabled( 'pgcache.' ) ?>
|
451 |
cols="40" rows="5"><?php echo esc_textarea( implode( "\r\n", $this->_config->get_array( 'pgcache.accept.files' ) ) ); ?></textarea>
|
452 |
<p class="description"><?php echo sprintf( __( 'Cache the specified pages / directories even if listed in the "never cache the following pages" field. Supports regular expression (See <a href="%s"><acronym title="Frequently Asked Questions">FAQ</acronym></a>)', 'w3-total-cache' ), network_admin_url( 'admin.php?page=w3tc_faq' ) ); ?></p>
|
@@ -457,6 +459,7 @@ if ( $this->_config->get_string( 'pgcache.engine' ) == 'memcached' ||
|
|
457 |
<th><label for="pgcache_accept_uri"><?php Util_Ui::e_config_label( 'pgcache.accept.uri' ) ?></label></th>
|
458 |
<td>
|
459 |
<textarea id="pgcache_accept_uri" name="pgcache__accept__uri"
|
|
|
460 |
<?php Util_Ui::sealing_disabled( 'pgcache.' ) ?>
|
461 |
cols="40" rows="5"><?php echo esc_textarea( implode( "\r\n", $this->_config->get_array( 'pgcache.accept.uri' ) ) ); ?></textarea>
|
462 |
<p class="description"><?php _e( 'Cache the specified pages even if they don\'t have tailing slash.', 'w3-total-cache' ); ?></p>
|
394 |
<th><label for="pgcache_reject_uri"><?php Util_Ui::e_config_label( 'pgcache.reject.uri' ) ?></label></th>
|
395 |
<td>
|
396 |
<textarea id="pgcache_reject_uri" name="pgcache__reject__uri"
|
397 |
+
w3tc-data-validator="regexps"
|
398 |
<?php Util_Ui::sealing_disabled( 'pgcache.' ) ?>
|
399 |
cols="40" rows="5"><?php echo esc_textarea( implode( "\r\n", $this->_config->get_array( 'pgcache.reject.uri' ) ) ); ?></textarea>
|
400 |
<p class="description">
|
448 |
<th><label for="pgcache_accept_files"><?php Util_Ui::e_config_label( 'pgcache.accept.files' ) ?></label></th>
|
449 |
<td>
|
450 |
<textarea id="pgcache_accept_files" name="pgcache__accept__files"
|
451 |
+
w3tc-data-validator="regexps"
|
452 |
<?php Util_Ui::sealing_disabled( 'pgcache.' ) ?>
|
453 |
cols="40" rows="5"><?php echo esc_textarea( implode( "\r\n", $this->_config->get_array( 'pgcache.accept.files' ) ) ); ?></textarea>
|
454 |
<p class="description"><?php echo sprintf( __( 'Cache the specified pages / directories even if listed in the "never cache the following pages" field. Supports regular expression (See <a href="%s"><acronym title="Frequently Asked Questions">FAQ</acronym></a>)', 'w3-total-cache' ), network_admin_url( 'admin.php?page=w3tc_faq' ) ); ?></p>
|
459 |
<th><label for="pgcache_accept_uri"><?php Util_Ui::e_config_label( 'pgcache.accept.uri' ) ?></label></th>
|
460 |
<td>
|
461 |
<textarea id="pgcache_accept_uri" name="pgcache__accept__uri"
|
462 |
+
w3tc-data-validator="regexps"
|
463 |
<?php Util_Ui::sealing_disabled( 'pgcache.' ) ?>
|
464 |
cols="40" rows="5"><?php echo esc_textarea( implode( "\r\n", $this->_config->get_array( 'pgcache.accept.uri' ) ) ); ?></textarea>
|
465 |
<p class="description"><?php _e( 'Cache the specified pages even if they don\'t have tailing slash.', 'w3-total-cache' ); ?></p>
|
lib/OAuth/W3tcOAuth.php
CHANGED
@@ -92,17 +92,7 @@ abstract class W3tcOAuthSignatureMethod {
|
|
92 |
return false;
|
93 |
}
|
94 |
|
95 |
-
|
96 |
-
return false;
|
97 |
-
}
|
98 |
-
|
99 |
-
// Avoid a timing leak with a (hopefully) time insensitive compare
|
100 |
-
$result = 0;
|
101 |
-
for ($i = 0; $i < strlen($signature); $i++) {
|
102 |
-
$result |= ord($built{$i}) ^ ord($signature{$i});
|
103 |
-
}
|
104 |
-
|
105 |
-
return $result == 0;
|
106 |
}
|
107 |
}
|
108 |
|
92 |
return false;
|
93 |
}
|
94 |
|
95 |
+
return $built == $signature;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
96 |
}
|
97 |
}
|
98 |
|
pub/img/W3TC_dashboard_logo_title-retina.png
CHANGED
File without changes
|
pub/img/W3TC_dashboard_logo_title.png
CHANGED
File without changes
|
pub/img/cdn-highwinds-logo.png
CHANGED
File without changes
|
pub/img/google-logo.png
CHANGED
File without changes
|
pub/img/overlay/ceo.png
CHANGED
File without changes
|
pub/img/overlay/gray-check.png
CHANGED
File without changes
|
pub/img/overlay/list-check.png
CHANGED
File without changes
|
pub/img/overlay/lite-gray-check.png
CHANGED
File without changes
|
pub/img/overlay/lock.png
CHANGED
File without changes
|
pub/img/overlay/overlay-close.png
CHANGED
File without changes
|
pub/img/overlay/overlay-down-arrow.png
CHANGED
File without changes
|
pub/img/overlay/overlay-logo.png
CHANGED
File without changes
|
pub/img/overlay/save-close.png
CHANGED
File without changes
|
pub/img/overlay/select-arrow.png
CHANGED
File without changes
|
pub/img/overlay/twitter-bird-dark-bgs.png
CHANGED
File without changes
|
pub/img/overlay/wordpress-logo-simplified-rgb.png
CHANGED
File without changes
|
pub/img/w3tc_google-logo-retina.png
CHANGED
File without changes
|
pub/img/w3tc_google-logo.png
CHANGED
File without changes
|
pub/img/w3tc_maxcdn-logo-retina.png
CHANGED
File without changes
|
pub/img/w3tc_maxcdn-logo.png
CHANGED
File without changes
|
pub/img/w3tc_netdna-logo-retina.png
CHANGED
File without changes
|
pub/img/w3tc_netdna-logo.png
CHANGED
File without changes
|
pub/img/w3tc_newrelic-logo-retina.png
CHANGED
File without changes
|
pub/img/w3tc_newrelic-logo.png
CHANGED
File without changes
|
pub/img/w3tc_swarmify-logo-retina.png
CHANGED
File without changes
|
pub/img/w3tc_swarmify-logo.png
CHANGED
File without changes
|
pub/img/w3tc_w3edge-logo-retina.png
CHANGED
File without changes
|
pub/img/w3tc_w3edge-logo.png
CHANGED
File without changes
|
pub/img/w3tc_w3tc-logo-retina.png
CHANGED
File without changes
|
pub/js/options-validator.js
ADDED
@@ -0,0 +1,22 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
jQuery(document).ready(function() {
|
2 |
+
jQuery('textarea[w3tc-data-validator="regexps"]').change(function() {
|
3 |
+
var v = jQuery(this).val();
|
4 |
+
var items = v.split("\n");
|
5 |
+
|
6 |
+
for (var n = 0; n < items.length; n++) {
|
7 |
+
var regexp = items[n].trim();
|
8 |
+
if (regexp.length > 0) {
|
9 |
+
try {
|
10 |
+
new RegExp(regexp);
|
11 |
+
} catch(e) {
|
12 |
+
var error = 'Contains invalid regexp ' + regexp +', please fix';
|
13 |
+
console.log(error);
|
14 |
+
jQuery(this)[0].setCustomValidity(error);
|
15 |
+
return;
|
16 |
+
}
|
17 |
+
}
|
18 |
+
}
|
19 |
+
|
20 |
+
jQuery(this)[0].setCustomValidity('');
|
21 |
+
});
|
22 |
+
});
|
pub/js/options.js
CHANGED
@@ -1465,6 +1465,12 @@ jQuery(function() {
|
|
1465 |
jQuery(this).html('Show More <span class="dashicons dashicons-arrow-down-alt2"></span>');
|
1466 |
jQuery(this).parent().find('.w3tc-gopro-description').css('max-height', '');
|
1467 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
1468 |
});
|
1469 |
|
1470 |
// google analytics events
|
1465 |
jQuery(this).html('Show More <span class="dashicons dashicons-arrow-down-alt2"></span>');
|
1466 |
jQuery(this).parent().find('.w3tc-gopro-description').css('max-height', '');
|
1467 |
}
|
1468 |
+
|
1469 |
+
if (window.w3tc_ga) {
|
1470 |
+
w3tc_ga('send', 'event', 'anchor', 'click',
|
1471 |
+
jQuery(this).attr('data-href'));
|
1472 |
+
}
|
1473 |
+
|
1474 |
});
|
1475 |
|
1476 |
// google analytics events
|
readme.txt
CHANGED
@@ -3,7 +3,7 @@ Contributors: boldgrid, fredericktownes, maxicusc, gidomanders, bwmarkle, harryj
|
|
3 |
Tags: seo, cache, optimize, pagespeed, performance, caching, compression, maxcdn, nginx, varnish, redis, new relic, aws, amazon web services, s3, cloudfront, rackspace, cloudflare, azure, apache
|
4 |
Requires at least: 3.2
|
5 |
Tested up to: 5.4
|
6 |
-
Stable tag: 0.13.
|
7 |
License: GPLv2 or later
|
8 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
9 |
|
@@ -275,6 +275,11 @@ Please reach out to all of these people and support their projects if you're so
|
|
275 |
|
276 |
== Changelog ==
|
277 |
|
|
|
|
|
|
|
|
|
|
|
278 |
= 0.13.1 =
|
279 |
* Fixed php warnings in PgCache_ContentGrabber.php
|
280 |
|
3 |
Tags: seo, cache, optimize, pagespeed, performance, caching, compression, maxcdn, nginx, varnish, redis, new relic, aws, amazon web services, s3, cloudfront, rackspace, cloudflare, azure, apache
|
4 |
Requires at least: 3.2
|
5 |
Tested up to: 5.4
|
6 |
+
Stable tag: 0.13.2
|
7 |
License: GPLv2 or later
|
8 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
9 |
|
275 |
|
276 |
== Changelog ==
|
277 |
|
278 |
+
|
279 |
+
= 0.13.2 =
|
280 |
+
* Fix: Dont store content of HEAD requests.
|
281 |
+
* Updated informational URL on page cache static page comments.
|
282 |
+
|
283 |
= 0.13.1 =
|
284 |
* Fixed php warnings in PgCache_ContentGrabber.php
|
285 |
|
w3-total-cache-api.php
CHANGED
@@ -5,7 +5,7 @@ if ( !defined( 'ABSPATH' ) ) {
|
|
5 |
}
|
6 |
|
7 |
define( 'W3TC', true );
|
8 |
-
define( 'W3TC_VERSION', '0.13.
|
9 |
define( 'W3TC_POWERED_BY', 'W3 Total Cache' );
|
10 |
define( 'W3TC_EMAIL', 'w3tc@w3-edge.com' );
|
11 |
define( 'W3TC_TEXT_DOMAIN', 'w3-total-cache' );
|
5 |
}
|
6 |
|
7 |
define( 'W3TC', true );
|
8 |
+
define( 'W3TC_VERSION', '0.13.2' );
|
9 |
define( 'W3TC_POWERED_BY', 'W3 Total Cache' );
|
10 |
define( 'W3TC_EMAIL', 'w3tc@w3-edge.com' );
|
11 |
define( 'W3TC_TEXT_DOMAIN', 'w3-total-cache' );
|
w3-total-cache.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/*
|
3 |
Plugin Name: W3 Total Cache
|
4 |
Description: The highest rated and most complete WordPress performance plugin. Dramatically improve the speed and user experience of your site. Add browser, page, object and database caching as well as minify and content delivery network (CDN) to WordPress.
|
5 |
-
Version: 0.13.
|
6 |
Plugin URI: https://www.boldgrid.com/totalcache/
|
7 |
Author: BoldGrid
|
8 |
Author URI: https://www.boldgrid.com/
|
2 |
/*
|
3 |
Plugin Name: W3 Total Cache
|
4 |
Description: The highest rated and most complete WordPress performance plugin. Dramatically improve the speed and user experience of your site. Add browser, page, object and database caching as well as minify and content delivery network (CDN) to WordPress.
|
5 |
+
Version: 0.13.2
|
6 |
Plugin URI: https://www.boldgrid.com/totalcache/
|
7 |
Author: BoldGrid
|
8 |
Author URI: https://www.boldgrid.com/
|