W3 Total Cache - Version 2.2.3

Version Description

  • Fix: Redis Cache: Removed exception on warnings
  • Fix: Compatibility check for WP_CACHE
  • Fix: Flush all cache cache except Cloudflare button
  • Fix: License terms update notice escaping
  • Fix: Feature Showcase: Image Service activate button
  • Security: Updated guzzlehttp/guzzle to 6.5.8
Download this release

Release Info

Developer joemoto
Plugin Icon 128x128 W3 Total Cache
Version 2.2.3
Comparing to
See all releases

Code changes from version 2.2.2 to 2.2.3

Cache_Redis.php CHANGED
@@ -496,69 +496,24 @@ class Cache_Redis extends Cache_Base {
496
  } else {
497
  list( $ip, $port ) = Util_Content::endpoint_to_host_port( $server, null );
498
 
499
- $context = array();
500
-
501
- if ( substr( $server, 0, 4 ) === 'tls:' && ! $this->_verify_tls_certificates ) {
502
- $context['stream'] = array(
503
- 'verify_peer' => false,
504
- 'verify_peer_name' => false,
505
- );
506
- }
507
-
508
- // Catch PHP errors.
509
- set_error_handler( // phpcs:ignore
510
- function( $errno, $errstr, $errfile, $errline ) {
511
- // Error was suppressed with the @-operator.
512
- if ( 0 === error_reporting() ) { // phpcs:ignore
513
- return false;
514
- }
515
-
516
- throw new \ErrorException( $errstr, 0, $errno, $errfile, $errline );
517
- }
518
- );
519
-
520
  if ( $this->_persistent ) {
521
- try {
522
- $accessor->pconnect(
523
- $ip,
524
- $port,
525
- $this->_timeout,
526
- $this->_instance_id . '_' . $this->_dbid,
527
- $this->_retry_interval,
528
- $this->_read_timeout,
529
- $context
530
- );
531
- } catch ( \ErrorException $e ) {
532
- $accessor->pconnect(
533
- $ip,
534
- $port,
535
- $this->_timeout,
536
- $this->_instance_id . '_' . $this->_dbid,
537
- $this->_retry_interval,
538
- $this->_read_timeout
539
- );
540
- }
541
  } else {
542
- try {
543
- $accessor->connect(
544
- $ip,
545
- $port,
546
- $this->_timeout,
547
- null,
548
- $this->_retry_interval,
549
- $this->_read_timeout,
550
- $context
551
- );
552
- } catch ( \ErrorException $e ) {
553
- $accessor->connect(
554
- $ip,
555
- $port,
556
- $this->_timeout,
557
- null,
558
- $this->_retry_interval,
559
- $this->_read_timeout
560
- );
561
- }
562
  }
563
 
564
  restore_error_handler();
496
  } else {
497
  list( $ip, $port ) = Util_Content::endpoint_to_host_port( $server, null );
498
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
499
  if ( $this->_persistent ) {
500
+ $accessor->pconnect(
501
+ $ip,
502
+ $port,
503
+ $this->_timeout,
504
+ $this->_instance_id . '_' . $this->_dbid,
505
+ $this->_retry_interval,
506
+ $this->_read_timeout
507
+ );
 
 
 
 
 
 
 
 
 
 
 
 
508
  } else {
509
+ $accessor->connect(
510
+ $ip,
511
+ $port,
512
+ $this->_timeout,
513
+ null,
514
+ $this->_retry_interval,
515
+ $this->_read_timeout
516
+ );
 
 
 
 
 
 
 
 
 
 
 
 
517
  }
518
 
519
  restore_error_handler();
FeatureShowcase_Plugin_Admin.php CHANGED
@@ -207,10 +207,10 @@ class FeatureShowcase_Plugin_Admin {
207
  $is_imageservice_active = isset( $extensions['imageservice'] );
208
  $imageservice_button_text = $is_imageservice_active ?
209
  ( is_network_admin() ? __( 'Available in sites', 'w3-total-cache' ) : __( 'Settings', 'w3-total-cache' ) ) :
210
- ( is_network_admin() ? __( 'Activate', 'w3-total-cache' ) : '' );
211
  $imageservice_button_link = $is_imageservice_active ?
212
  ( is_network_admin() ? 'network/sites.php' : 'upload.php?page=w3tc_extension_page_imageservice' ) :
213
- ( is_network_admin() ? 'admin.php?page=w3tc_extensions&action=activate&extension=imageservice' : '' );
214
 
215
  global $wp_version;
216
 
207
  $is_imageservice_active = isset( $extensions['imageservice'] );
208
  $imageservice_button_text = $is_imageservice_active ?
209
  ( is_network_admin() ? __( 'Available in sites', 'w3-total-cache' ) : __( 'Settings', 'w3-total-cache' ) ) :
210
+ ( is_network_admin() || ! is_multisite() ? __( 'Activate', 'w3-total-cache' ) : '' );
211
  $imageservice_button_link = $is_imageservice_active ?
212
  ( is_network_admin() ? 'network/sites.php' : 'upload.php?page=w3tc_extension_page_imageservice' ) :
213
+ ( is_network_admin() || ! is_multisite() ? 'admin.php?page=w3tc_extensions&action=activate&extension=imageservice' : '' );
214
 
215
  global $wp_version;
216
 
Licensing_Plugin_Admin.php CHANGED
@@ -275,17 +275,15 @@ class Licensing_Plugin_Admin {
275
  if ( 'accept' !== $terms && 'decline' !== $terms && 'postpone' !== $terms ) {
276
  if ( $state_master->get_integer( 'common.install' ) < 1542029724 ) {
277
  /* installed before 2018-11-12 */
278
- $notes['licensing_terms'] = wp_kses(
279
- sprintf(
280
- // translators: 1 opening HTML a tag to W3TC Terms page, 2 closing HTML a tag.
281
- __(
282
- 'Our terms of use and privacy policies have been updated. Please %1$sreview%2$s and accept them.',
283
- 'w3-total-cache'
284
- ),
285
- '<a href="' . esc_url( W3TC_TERMS_URL ) . '" target="blank">',
286
- '</a>'
287
- ) . $buttons
288
- );
289
  } else {
290
  $notes['licensing_terms'] = sprintf(
291
  // translators: 1: HTML break tag, 2: Anchor/link open tag, 3: Anchor/link close tag.
275
  if ( 'accept' !== $terms && 'decline' !== $terms && 'postpone' !== $terms ) {
276
  if ( $state_master->get_integer( 'common.install' ) < 1542029724 ) {
277
  /* installed before 2018-11-12 */
278
+ $notes['licensing_terms'] = sprintf(
279
+ // translators: 1 opening HTML a tag to W3TC Terms page, 2 closing HTML a tag.
280
+ esc_html__(
281
+ 'Our terms of use and privacy policies have been updated. Please %1$sreview%2$s and accept them.',
282
+ 'w3-total-cache'
283
+ ),
284
+ '<a target="_blank" href="' . esc_url( W3TC_TERMS_URL ) . '">',
285
+ '</a>'
286
+ ) . $buttons;
 
 
287
  } else {
288
  $notes['licensing_terms'] = sprintf(
289
  // translators: 1: HTML break tag, 2: Anchor/link open tag, 3: Anchor/link close tag.
inc/lightbox/self_test.php CHANGED
@@ -507,9 +507,9 @@ if ( ! defined( 'W3TC' ) ) {
507
 
508
  <li>
509
  <?php esc_html_e( 'WP_CACHE define:', 'w3-total-cache' ); ?>
510
- <?php if ( defined( 'WP_CACHE' ) && WP_CACHE === 'true' ) : ?>
511
  <span style="background-color: #33cc33"><?php esc_html_e( 'Defined (true)', 'w3-total-cache' ); ?></span>
512
- <?php elseif ( defined( 'WP_CACHE' ) && WP_CACHE === 'false' ) : ?>
513
  <span style="background-color: #FF0000"><?php esc_html_e( 'Defined (false)', 'w3-total-cache' ); ?></span>
514
  <?php else : ?>
515
  <span style="background-color: #FF0000"><?php esc_html_e( 'Not defined', 'w3-total-cache' ); ?></span>
507
 
508
  <li>
509
  <?php esc_html_e( 'WP_CACHE define:', 'w3-total-cache' ); ?>
510
+ <?php if ( defined( 'WP_CACHE' ) && WP_CACHE ) : ?>
511
  <span style="background-color: #33cc33"><?php esc_html_e( 'Defined (true)', 'w3-total-cache' ); ?></span>
512
+ <?php elseif ( defined( 'WP_CACHE' ) && ! WP_CACHE ) : ?>
513
  <span style="background-color: #FF0000"><?php esc_html_e( 'Defined (false)', 'w3-total-cache' ); ?></span>
514
  <?php else : ?>
515
  <span style="background-color: #FF0000"><?php esc_html_e( 'Not defined', 'w3-total-cache' ); ?></span>
inc/options/dashboard.php CHANGED
@@ -71,7 +71,19 @@ if ( Util_Environment::is_w3tc_pro( Dispatcher::config() ) ) {
71
  <input type="submit" name="w3tc_flush_browser_cache" value="<?php esc_html_e( 'update Media Query String', 'w3-total-cache' ); ?>" <?php disabled( ! ( $browsercache_enabled && $browsercache_update_media_qs ) ); ?> class="button" />
72
  <?php
73
  $string = esc_html__( 'or', 'w3-total-cache' );
74
- echo esc_html( implode( " $string ", apply_filters( 'w3tc_dashboard_actions', array() ) ) );
 
 
 
 
 
 
 
 
 
 
 
 
75
  ?>
76
  .
77
  </p>
71
  <input type="submit" name="w3tc_flush_browser_cache" value="<?php esc_html_e( 'update Media Query String', 'w3-total-cache' ); ?>" <?php disabled( ! ( $browsercache_enabled && $browsercache_update_media_qs ) ); ?> class="button" />
72
  <?php
73
  $string = esc_html__( 'or', 'w3-total-cache' );
74
+ echo wp_kses(
75
+ implode( " $string ", apply_filters( 'w3tc_dashboard_actions', array() ) ),
76
+ array(
77
+ 'input' => array(
78
+ 'class' => array(),
79
+ 'disabled' => array(),
80
+ 'id' => array(),
81
+ 'name' => array(),
82
+ 'type' => array(),
83
+ 'value' => array(),
84
+ ),
85
+ )
86
+ );
87
  ?>
88
  .
89
  </p>
inc/options/parts/redis.php CHANGED
@@ -30,7 +30,7 @@ if ( ! defined( 'W3TC' ) ) {
30
  <p class="description"><?php esc_html_e( 'Multiple servers may be used and seperated by a comma; e.g. 192.168.1.100:11211, domain.com:22122. To use TLS, prefix server with tls://', 'w3-total-cache' ); ?></p>
31
  </td>
32
  </tr>
33
- <tr>
34
  <th><label><?php esc_html_e( 'Verify TLS Certificates:', 'w3-total-cache' ); ?></label></th>
35
  <td>
36
  <?php $this->checkbox( $module . '.redis.verify_tls_certificates' ); ?> <?php echo wp_kses( Util_ConfigLabel::get( 'redis.verify_tls_certificates' ), array( 'acronym' => array( 'title' => array() ) ) ); ?></label>
30
  <p class="description"><?php esc_html_e( 'Multiple servers may be used and seperated by a comma; e.g. 192.168.1.100:11211, domain.com:22122. To use TLS, prefix server with tls://', 'w3-total-cache' ); ?></p>
31
  </td>
32
  </tr>
33
+ <tr class="hidden">
34
  <th><label><?php esc_html_e( 'Verify TLS Certificates:', 'w3-total-cache' ); ?></label></th>
35
  <td>
36
  <?php $this->checkbox( $module . '.redis.verify_tls_certificates' ); ?> <?php echo wp_kses( Util_ConfigLabel::get( 'redis.verify_tls_certificates' ), array( 'acronym' => array( 'title' => array() ) ) ); ?></label>
readme.txt CHANGED
@@ -3,7 +3,7 @@ Contributors: boldgrid, fredericktownes, maxicusc, gidomanders, bwmarkle, harryj
3
  Tags: seo, cache, CDN, pagespeed, caching, performance, compression, optimize, cloudflare, nginx, apache, varnish, redis, aws, amazon web services, s3, cloudfront, azure
4
  Requires at least: 3.8
5
  Tested up to: 6.0
6
- Stable tag: 2.2.2
7
  License: GPLv2 or later
8
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
9
 
@@ -285,6 +285,14 @@ Please reach out to all of these people and support their projects if you're so
285
 
286
  == Changelog ==
287
 
 
 
 
 
 
 
 
 
288
  = 2.2.2 =
289
  * Security: PHPCS and WPCS updates
290
  * Security: Updated guzzlehttp/guzzle to 6.5.6
3
  Tags: seo, cache, CDN, pagespeed, caching, performance, compression, optimize, cloudflare, nginx, apache, varnish, redis, aws, amazon web services, s3, cloudfront, azure
4
  Requires at least: 3.8
5
  Tested up to: 6.0
6
+ Stable tag: 2.2.3
7
  License: GPLv2 or later
8
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
9
 
285
 
286
  == Changelog ==
287
 
288
+ = 2.2.3 =
289
+ * Fix: Redis Cache: Removed exception on warnings
290
+ * Fix: Compatibility check for WP_CACHE
291
+ * Fix: Flush all cache cache except Cloudflare button
292
+ * Fix: License terms update notice escaping
293
+ * Fix: Feature Showcase: Image Service activate button
294
+ * Security: Updated guzzlehttp/guzzle to 6.5.8
295
+
296
  = 2.2.2 =
297
  * Security: PHPCS and WPCS updates
298
  * Security: Updated guzzlehttp/guzzle to 6.5.6
vendor/composer/autoload_classmap.php CHANGED
@@ -866,6 +866,7 @@ return array(
866
  'GuzzleHttp\\Psr7\\StreamWrapper' => $vendorDir . '/guzzlehttp/psr7/src/StreamWrapper.php',
867
  'GuzzleHttp\\Psr7\\UploadedFile' => $vendorDir . '/guzzlehttp/psr7/src/UploadedFile.php',
868
  'GuzzleHttp\\Psr7\\Uri' => $vendorDir . '/guzzlehttp/psr7/src/Uri.php',
 
869
  'GuzzleHttp\\Psr7\\UriNormalizer' => $vendorDir . '/guzzlehttp/psr7/src/UriNormalizer.php',
870
  'GuzzleHttp\\Psr7\\UriResolver' => $vendorDir . '/guzzlehttp/psr7/src/UriResolver.php',
871
  'GuzzleHttp\\Psr7\\Utils' => $vendorDir . '/guzzlehttp/psr7/src/Utils.php',
866
  'GuzzleHttp\\Psr7\\StreamWrapper' => $vendorDir . '/guzzlehttp/psr7/src/StreamWrapper.php',
867
  'GuzzleHttp\\Psr7\\UploadedFile' => $vendorDir . '/guzzlehttp/psr7/src/UploadedFile.php',
868
  'GuzzleHttp\\Psr7\\Uri' => $vendorDir . '/guzzlehttp/psr7/src/Uri.php',
869
+ 'GuzzleHttp\\Psr7\\UriComparator' => $vendorDir . '/guzzlehttp/psr7/src/UriComparator.php',
870
  'GuzzleHttp\\Psr7\\UriNormalizer' => $vendorDir . '/guzzlehttp/psr7/src/UriNormalizer.php',
871
  'GuzzleHttp\\Psr7\\UriResolver' => $vendorDir . '/guzzlehttp/psr7/src/UriResolver.php',
872
  'GuzzleHttp\\Psr7\\Utils' => $vendorDir . '/guzzlehttp/psr7/src/Utils.php',
vendor/composer/autoload_files.php CHANGED
@@ -7,11 +7,11 @@ $baseDir = dirname($vendorDir);
7
 
8
  return array(
9
  '7b11c4dc42b3b3023073cb14e519683c' => $vendorDir . '/ralouphie/getallheaders/src/getallheaders.php',
 
10
  'a0edc8309cc5e1d60e3047b5df6b7052' => $vendorDir . '/guzzlehttp/psr7/src/functions_include.php',
11
  'e69f7f6ee287b969198c3c9d6777bd38' => $vendorDir . '/symfony/polyfill-intl-normalizer/bootstrap.php',
12
- 'c964ee0ededf28c96ebd9db5099ef910' => $vendorDir . '/guzzlehttp/promises/src/functions_include.php',
13
  'f598d06aa772fa33d905e87be6398fb1' => $vendorDir . '/symfony/polyfill-intl-idn/bootstrap.php',
14
- 'b067bc7112e384b61c701452d53a14a8' => $vendorDir . '/mtdowling/jmespath.php/src/JmesPath.php',
15
  '37a3dc5111fe8f707ab4c132ef1dbc62' => $vendorDir . '/guzzlehttp/guzzle/src/functions_include.php',
 
16
  '8a9dc1de0ca7e01f3e08231539562f61' => $vendorDir . '/aws/aws-sdk-php/src/functions.php',
17
  );
7
 
8
  return array(
9
  '7b11c4dc42b3b3023073cb14e519683c' => $vendorDir . '/ralouphie/getallheaders/src/getallheaders.php',
10
+ 'c964ee0ededf28c96ebd9db5099ef910' => $vendorDir . '/guzzlehttp/promises/src/functions_include.php',
11
  'a0edc8309cc5e1d60e3047b5df6b7052' => $vendorDir . '/guzzlehttp/psr7/src/functions_include.php',
12
  'e69f7f6ee287b969198c3c9d6777bd38' => $vendorDir . '/symfony/polyfill-intl-normalizer/bootstrap.php',
 
13
  'f598d06aa772fa33d905e87be6398fb1' => $vendorDir . '/symfony/polyfill-intl-idn/bootstrap.php',
 
14
  '37a3dc5111fe8f707ab4c132ef1dbc62' => $vendorDir . '/guzzlehttp/guzzle/src/functions_include.php',
15
+ 'b067bc7112e384b61c701452d53a14a8' => $vendorDir . '/mtdowling/jmespath.php/src/JmesPath.php',
16
  '8a9dc1de0ca7e01f3e08231539562f61' => $vendorDir . '/aws/aws-sdk-php/src/functions.php',
17
  );
vendor/composer/autoload_static.php CHANGED
@@ -8,12 +8,12 @@ class ComposerStaticInitc972e5e91f8b219f1680861ca6a05fc1
8
  {
9
  public static $files = array (
10
  '7b11c4dc42b3b3023073cb14e519683c' => __DIR__ . '/..' . '/ralouphie/getallheaders/src/getallheaders.php',
 
11
  'a0edc8309cc5e1d60e3047b5df6b7052' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/functions_include.php',
12
  'e69f7f6ee287b969198c3c9d6777bd38' => __DIR__ . '/..' . '/symfony/polyfill-intl-normalizer/bootstrap.php',
13
- 'c964ee0ededf28c96ebd9db5099ef910' => __DIR__ . '/..' . '/guzzlehttp/promises/src/functions_include.php',
14
  'f598d06aa772fa33d905e87be6398fb1' => __DIR__ . '/..' . '/symfony/polyfill-intl-idn/bootstrap.php',
15
- 'b067bc7112e384b61c701452d53a14a8' => __DIR__ . '/..' . '/mtdowling/jmespath.php/src/JmesPath.php',
16
  '37a3dc5111fe8f707ab4c132ef1dbc62' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/functions_include.php',
 
17
  '8a9dc1de0ca7e01f3e08231539562f61' => __DIR__ . '/..' . '/aws/aws-sdk-php/src/functions.php',
18
  );
19
 
@@ -939,6 +939,7 @@ class ComposerStaticInitc972e5e91f8b219f1680861ca6a05fc1
939
  'GuzzleHttp\\Psr7\\StreamWrapper' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/StreamWrapper.php',
940
  'GuzzleHttp\\Psr7\\UploadedFile' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/UploadedFile.php',
941
  'GuzzleHttp\\Psr7\\Uri' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/Uri.php',
 
942
  'GuzzleHttp\\Psr7\\UriNormalizer' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/UriNormalizer.php',
943
  'GuzzleHttp\\Psr7\\UriResolver' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/UriResolver.php',
944
  'GuzzleHttp\\Psr7\\Utils' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/Utils.php',
8
  {
9
  public static $files = array (
10
  '7b11c4dc42b3b3023073cb14e519683c' => __DIR__ . '/..' . '/ralouphie/getallheaders/src/getallheaders.php',
11
+ 'c964ee0ededf28c96ebd9db5099ef910' => __DIR__ . '/..' . '/guzzlehttp/promises/src/functions_include.php',
12
  'a0edc8309cc5e1d60e3047b5df6b7052' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/functions_include.php',
13
  'e69f7f6ee287b969198c3c9d6777bd38' => __DIR__ . '/..' . '/symfony/polyfill-intl-normalizer/bootstrap.php',
 
14
  'f598d06aa772fa33d905e87be6398fb1' => __DIR__ . '/..' . '/symfony/polyfill-intl-idn/bootstrap.php',
 
15
  '37a3dc5111fe8f707ab4c132ef1dbc62' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/functions_include.php',
16
+ 'b067bc7112e384b61c701452d53a14a8' => __DIR__ . '/..' . '/mtdowling/jmespath.php/src/JmesPath.php',
17
  '8a9dc1de0ca7e01f3e08231539562f61' => __DIR__ . '/..' . '/aws/aws-sdk-php/src/functions.php',
18
  );
19
 
939
  'GuzzleHttp\\Psr7\\StreamWrapper' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/StreamWrapper.php',
940
  'GuzzleHttp\\Psr7\\UploadedFile' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/UploadedFile.php',
941
  'GuzzleHttp\\Psr7\\Uri' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/Uri.php',
942
+ 'GuzzleHttp\\Psr7\\UriComparator' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/UriComparator.php',
943
  'GuzzleHttp\\Psr7\\UriNormalizer' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/UriNormalizer.php',
944
  'GuzzleHttp\\Psr7\\UriResolver' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/UriResolver.php',
945
  'GuzzleHttp\\Psr7\\Utils' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/Utils.php',
vendor/composer/installed.json CHANGED
@@ -88,25 +88,25 @@
88
  },
89
  {
90
  "name": "guzzlehttp/guzzle",
91
- "version": "6.5.6",
92
- "version_normalized": "6.5.6.0",
93
  "source": {
94
  "type": "git",
95
  "url": "https://github.com/guzzle/guzzle.git",
96
- "reference": "f092dd734083473658de3ee4bef093ed77d2689c"
97
  },
98
  "dist": {
99
  "type": "zip",
100
- "url": "https://api.github.com/repos/guzzle/guzzle/zipball/f092dd734083473658de3ee4bef093ed77d2689c",
101
- "reference": "f092dd734083473658de3ee4bef093ed77d2689c",
102
  "shasum": ""
103
  },
104
  "require": {
105
  "ext-json": "*",
106
  "guzzlehttp/promises": "^1.0",
107
- "guzzlehttp/psr7": "^1.6.1",
108
  "php": ">=5.5",
109
- "symfony/polyfill-intl-idn": "^1.17.0"
110
  },
111
  "require-dev": {
112
  "ext-curl": "*",
@@ -116,7 +116,7 @@
116
  "suggest": {
117
  "psr/log": "Required for using the Log middleware"
118
  },
119
- "time": "2022-05-25T13:19:12+00:00",
120
  "type": "library",
121
  "extra": {
122
  "branch-alias": {
@@ -283,17 +283,17 @@
283
  },
284
  {
285
  "name": "guzzlehttp/psr7",
286
- "version": "1.8.5",
287
- "version_normalized": "1.8.5.0",
288
  "source": {
289
  "type": "git",
290
  "url": "https://github.com/guzzle/psr7.git",
291
- "reference": "337e3ad8e5716c15f9657bd214d16cc5e69df268"
292
  },
293
  "dist": {
294
  "type": "zip",
295
- "url": "https://api.github.com/repos/guzzle/psr7/zipball/337e3ad8e5716c15f9657bd214d16cc5e69df268",
296
- "reference": "337e3ad8e5716c15f9657bd214d16cc5e69df268",
297
  "shasum": ""
298
  },
299
  "require": {
@@ -311,11 +311,11 @@
311
  "suggest": {
312
  "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses"
313
  },
314
- "time": "2022-03-20T21:51:18+00:00",
315
  "type": "library",
316
  "extra": {
317
  "branch-alias": {
318
- "dev-master": "1.7-dev"
319
  }
320
  },
321
  "installation-source": "dist",
88
  },
89
  {
90
  "name": "guzzlehttp/guzzle",
91
+ "version": "6.5.8",
92
+ "version_normalized": "6.5.8.0",
93
  "source": {
94
  "type": "git",
95
  "url": "https://github.com/guzzle/guzzle.git",
96
+ "reference": "a52f0440530b54fa079ce76e8c5d196a42cad981"
97
  },
98
  "dist": {
99
  "type": "zip",
100
+ "url": "https://api.github.com/repos/guzzle/guzzle/zipball/a52f0440530b54fa079ce76e8c5d196a42cad981",
101
+ "reference": "a52f0440530b54fa079ce76e8c5d196a42cad981",
102
  "shasum": ""
103
  },
104
  "require": {
105
  "ext-json": "*",
106
  "guzzlehttp/promises": "^1.0",
107
+ "guzzlehttp/psr7": "^1.9",
108
  "php": ">=5.5",
109
+ "symfony/polyfill-intl-idn": "^1.17"
110
  },
111
  "require-dev": {
112
  "ext-curl": "*",
116
  "suggest": {
117
  "psr/log": "Required for using the Log middleware"
118
  },
119
+ "time": "2022-06-20T22:16:07+00:00",
120
  "type": "library",
121
  "extra": {
122
  "branch-alias": {
283
  },
284
  {
285
  "name": "guzzlehttp/psr7",
286
+ "version": "1.9.0",
287
+ "version_normalized": "1.9.0.0",
288
  "source": {
289
  "type": "git",
290
  "url": "https://github.com/guzzle/psr7.git",
291
+ "reference": "e98e3e6d4f86621a9b75f623996e6bbdeb4b9318"
292
  },
293
  "dist": {
294
  "type": "zip",
295
+ "url": "https://api.github.com/repos/guzzle/psr7/zipball/e98e3e6d4f86621a9b75f623996e6bbdeb4b9318",
296
+ "reference": "e98e3e6d4f86621a9b75f623996e6bbdeb4b9318",
297
  "shasum": ""
298
  },
299
  "require": {
311
  "suggest": {
312
  "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses"
313
  },
314
+ "time": "2022-06-20T21:43:03+00:00",
315
  "type": "library",
316
  "extra": {
317
  "branch-alias": {
318
+ "dev-master": "1.9-dev"
319
  }
320
  },
321
  "installation-source": "dist",
vendor/guzzlehttp/guzzle/CHANGELOG.md CHANGED
@@ -1,5 +1,15 @@
1
  # Change Log
2
 
 
 
 
 
 
 
 
 
 
 
3
  ## 6.5.6 - 2022-05-25
4
 
5
  * Fix cross-domain cookie leakage
1
  # Change Log
2
 
3
+ ## 6.5.8 - 2022-06-20
4
+
5
+ * Fix change in port should be considered a change in origin
6
+ * Fix `CURLOPT_HTTPAUTH` option not cleared on change of origin
7
+
8
+ ## 6.5.7 - 2022-06-09
9
+
10
+ * Fix failure to strip Authorization header on HTTP downgrade
11
+ * Fix failure to strip the Cookie header on change in host or HTTP downgrade
12
+
13
  ## 6.5.6 - 2022-05-25
14
 
15
  * Fix cross-domain cookie leakage
vendor/guzzlehttp/guzzle/README.md CHANGED
@@ -1,5 +1,6 @@
1
- Guzzle, PHP HTTP client
2
- =======================
 
3
 
4
  [![Latest Version](https://img.shields.io/github/release/guzzle/guzzle.svg?style=flat-square)](https://github.com/guzzle/guzzle/releases)
5
  [![Build Status](https://img.shields.io/github/workflow/status/guzzle/guzzle/CI?label=ci%20build&style=flat-square)](https://github.com/guzzle/guzzle/actions?query=workflow%3ACI)
@@ -38,15 +39,18 @@ $promise->wait();
38
 
39
  ## Help and docs
40
 
41
- - [Documentation](http://guzzlephp.org/)
42
- - [Stack Overflow](http://stackoverflow.com/questions/tagged/guzzle)
 
 
 
43
  - [Gitter](https://gitter.im/guzzle/guzzle)
44
 
45
 
46
  ## Installing Guzzle
47
 
48
  The recommended way to install Guzzle is through
49
- [Composer](http://getcomposer.org).
50
 
51
  ```bash
52
  # Install Composer
@@ -87,7 +91,7 @@ composer update
87
  [guzzle-5-repo]: https://github.com/guzzle/guzzle/tree/5.3
88
  [guzzle-6-repo]: https://github.com/guzzle/guzzle/tree/6.5
89
  [guzzle-7-repo]: https://github.com/guzzle/guzzle
90
- [guzzle-3-docs]: http://guzzle3.readthedocs.org
91
- [guzzle-5-docs]: http://docs.guzzlephp.org/en/5.3/
92
- [guzzle-6-docs]: http://docs.guzzlephp.org/en/6.5/
93
- [guzzle-7-docs]: http://docs.guzzlephp.org/en/latest/
1
+ ![Guzzle](.github/logo.png?raw=true)
2
+
3
+ # Guzzle, PHP HTTP client
4
 
5
  [![Latest Version](https://img.shields.io/github/release/guzzle/guzzle.svg?style=flat-square)](https://github.com/guzzle/guzzle/releases)
6
  [![Build Status](https://img.shields.io/github/workflow/status/guzzle/guzzle/CI?label=ci%20build&style=flat-square)](https://github.com/guzzle/guzzle/actions?query=workflow%3ACI)
39
 
40
  ## Help and docs
41
 
42
+ We use GitHub issues only to discuss bugs and new features. For support please refer to:
43
+
44
+ - [Documentation](https://docs.guzzlephp.org)
45
+ - [Stack Overflow](https://stackoverflow.com/questions/tagged/guzzle)
46
+ - [#guzzle](https://app.slack.com/client/T0D2S9JCT/CE6UAAKL4) channel on [PHP-HTTP Slack](https://slack.httplug.io/)
47
  - [Gitter](https://gitter.im/guzzle/guzzle)
48
 
49
 
50
  ## Installing Guzzle
51
 
52
  The recommended way to install Guzzle is through
53
+ [Composer](https://getcomposer.org/).
54
 
55
  ```bash
56
  # Install Composer
91
  [guzzle-5-repo]: https://github.com/guzzle/guzzle/tree/5.3
92
  [guzzle-6-repo]: https://github.com/guzzle/guzzle/tree/6.5
93
  [guzzle-7-repo]: https://github.com/guzzle/guzzle
94
+ [guzzle-3-docs]: https://guzzle3.readthedocs.io/
95
+ [guzzle-5-docs]: https://docs.guzzlephp.org/en/5.3/
96
+ [guzzle-6-docs]: https://docs.guzzlephp.org/en/6.5/
97
+ [guzzle-7-docs]: https://docs.guzzlephp.org/en/latest/
vendor/guzzlehttp/guzzle/composer.json CHANGED
@@ -53,9 +53,9 @@
53
  "require": {
54
  "php": ">=5.5",
55
  "ext-json": "*",
56
- "symfony/polyfill-intl-idn": "^1.17.0",
57
  "guzzlehttp/promises": "^1.0",
58
- "guzzlehttp/psr7": "^1.6.1"
59
  },
60
  "require-dev": {
61
  "ext-curl": "*",
@@ -66,7 +66,10 @@
66
  "psr/log": "Required for using the Log middleware"
67
  },
68
  "config": {
69
- "sort-packages": true
 
 
 
70
  },
71
  "extra": {
72
  "branch-alias": {
53
  "require": {
54
  "php": ">=5.5",
55
  "ext-json": "*",
56
+ "symfony/polyfill-intl-idn": "^1.17",
57
  "guzzlehttp/promises": "^1.0",
58
+ "guzzlehttp/psr7": "^1.9"
59
  },
60
  "require-dev": {
61
  "ext-curl": "*",
66
  "psr/log": "Required for using the Log middleware"
67
  },
68
  "config": {
69
+ "sort-packages": true,
70
+ "allow-plugins": {
71
+ "bamarni/composer-bin-plugin": true
72
+ }
73
  },
74
  "extra": {
75
  "branch-alias": {
vendor/guzzlehttp/guzzle/src/RedirectMiddleware.php CHANGED
@@ -94,6 +94,14 @@ class RedirectMiddleware
94
  $this->guardMax($request, $options);
95
  $nextRequest = $this->modifyRequest($request, $options, $response);
96
 
 
 
 
 
 
 
 
 
97
  if (isset($options['allow_redirects']['on_redirect'])) {
98
  call_user_func(
99
  $options['allow_redirects']['on_redirect'],
@@ -141,7 +149,7 @@ class RedirectMiddleware
141
  }
142
 
143
  /**
144
- * Check for too many redirects
145
  *
146
  * @return void
147
  *
@@ -190,7 +198,7 @@ class RedirectMiddleware
190
  $modify['body'] = '';
191
  }
192
 
193
- $uri = $this->redirectUri($request, $response, $protocols);
194
  if (isset($options['idn_conversion']) && ($options['idn_conversion'] !== false)) {
195
  $idnOptions = ($options['idn_conversion'] === true) ? IDNA_DEFAULT : $options['idn_conversion'];
196
  $uri = Utils::idnUriConvert($uri, $idnOptions);
@@ -210,16 +218,17 @@ class RedirectMiddleware
210
  $modify['remove_headers'][] = 'Referer';
211
  }
212
 
213
- // Remove Authorization header if host is different.
214
- if ($request->getUri()->getHost() !== $modify['uri']->getHost()) {
215
  $modify['remove_headers'][] = 'Authorization';
 
216
  }
217
 
218
  return Psr7\modify_request($request, $modify);
219
  }
220
 
221
  /**
222
- * Set the appropriate URL on the request based on the location header
223
  *
224
  * @param RequestInterface $request
225
  * @param ResponseInterface $response
@@ -227,7 +236,7 @@ class RedirectMiddleware
227
  *
228
  * @return UriInterface
229
  */
230
- private function redirectUri(
231
  RequestInterface $request,
232
  ResponseInterface $response,
233
  array $protocols
94
  $this->guardMax($request, $options);
95
  $nextRequest = $this->modifyRequest($request, $options, $response);
96
 
97
+ // If authorization is handled by curl, unset it if URI is cross-origin.
98
+ if (Psr7\UriComparator::isCrossOrigin($request->getUri(), $nextRequest->getUri()) && defined('\CURLOPT_HTTPAUTH')) {
99
+ unset(
100
+ $options['curl'][\CURLOPT_HTTPAUTH],
101
+ $options['curl'][\CURLOPT_USERPWD]
102
+ );
103
+ }
104
+
105
  if (isset($options['allow_redirects']['on_redirect'])) {
106
  call_user_func(
107
  $options['allow_redirects']['on_redirect'],
149
  }
150
 
151
  /**
152
+ * Check for too many redirects.
153
  *
154
  * @return void
155
  *
198
  $modify['body'] = '';
199
  }
200
 
201
+ $uri = self::redirectUri($request, $response, $protocols);
202
  if (isset($options['idn_conversion']) && ($options['idn_conversion'] !== false)) {
203
  $idnOptions = ($options['idn_conversion'] === true) ? IDNA_DEFAULT : $options['idn_conversion'];
204
  $uri = Utils::idnUriConvert($uri, $idnOptions);
218
  $modify['remove_headers'][] = 'Referer';
219
  }
220
 
221
+ // Remove Authorization and Cookie headers if URI is cross-origin.
222
+ if (Psr7\UriComparator::isCrossOrigin($request->getUri(), $modify['uri'])) {
223
  $modify['remove_headers'][] = 'Authorization';
224
+ $modify['remove_headers'][] = 'Cookie';
225
  }
226
 
227
  return Psr7\modify_request($request, $modify);
228
  }
229
 
230
  /**
231
+ * Set the appropriate URL on the request based on the location header.
232
  *
233
  * @param RequestInterface $request
234
  * @param ResponseInterface $response
236
  *
237
  * @return UriInterface
238
  */
239
+ private static function redirectUri(
240
  RequestInterface $request,
241
  ResponseInterface $response,
242
  array $protocols
vendor/guzzlehttp/psr7/CHANGELOG.md CHANGED
@@ -3,12 +3,18 @@
3
 
4
  All notable changes to this project will be documented in this file.
5
 
6
- The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
7
- and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
8
 
9
 
10
  ## Unreleased
11
 
 
 
 
 
 
 
12
  ## 1.8.5 - 2022-03-20
13
 
14
  ### Fixed
3
 
4
  All notable changes to this project will be documented in this file.
5
 
6
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
7
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
8
 
9
 
10
  ## Unreleased
11
 
12
+ ## 1.9.0 - 2022-06-20
13
+
14
+ ### Added
15
+
16
+ - Added `UriComparator::isCrossOrigin` method
17
+
18
  ## 1.8.5 - 2022-03-20
19
 
20
  ### Fixed
vendor/guzzlehttp/psr7/README.md CHANGED
@@ -1,6 +1,6 @@
1
  # PSR-7 Message Implementation
2
 
3
- This repository contains a full [PSR-7](http://www.php-fig.org/psr/psr-7/)
4
  message implementation, several stream decorators, and some helpful
5
  functionality like query string parsing.
6
 
@@ -659,7 +659,7 @@ manually but instead is used indirectly via `Psr\Http\Message\UriInterface::__to
659
 
660
  `public static function fromParts(array $parts): UriInterface`
661
 
662
- Creates a URI from a hash of [`parse_url`](http://php.net/manual/en/function.parse-url.php) components.
663
 
664
 
665
  ### `GuzzleHttp\Psr7\Uri::withQueryValue`
@@ -684,6 +684,16 @@ associative array of key => value.
684
  Creates a new URI with a specific query string value removed. Any existing query string values that exactly match the
685
  provided key are removed.
686
 
 
 
 
 
 
 
 
 
 
 
687
  ## Reference Resolution
688
 
689
  `GuzzleHttp\Psr7\UriResolver` provides methods to resolve a URI reference in the context of a base URI according
@@ -809,14 +819,24 @@ This of course assumes they will be resolved against the same base URI. If this
809
  equivalence or difference of relative references does not mean anything.
810
 
811
 
 
 
 
 
 
 
 
 
812
  ## Security
813
 
814
  If you discover a security vulnerability within this package, please send an email to security@tidelift.com. All security vulnerabilities will be promptly addressed. Please do not disclose security-related issues publicly until a fix has been announced. Please see [Security Policy](https://github.com/guzzle/psr7/security/policy) for more information.
815
 
 
816
  ## License
817
 
818
  Guzzle is made available under the MIT License (MIT). Please see [License File](LICENSE) for more information.
819
 
 
820
  ## For Enterprise
821
 
822
  Available as part of the Tidelift Subscription
1
  # PSR-7 Message Implementation
2
 
3
+ This repository contains a full [PSR-7](https://www.php-fig.org/psr/psr-7/)
4
  message implementation, several stream decorators, and some helpful
5
  functionality like query string parsing.
6
 
659
 
660
  `public static function fromParts(array $parts): UriInterface`
661
 
662
+ Creates a URI from a hash of [`parse_url`](https://www.php.net/manual/en/function.parse-url.php) components.
663
 
664
 
665
  ### `GuzzleHttp\Psr7\Uri::withQueryValue`
684
  Creates a new URI with a specific query string value removed. Any existing query string values that exactly match the
685
  provided key are removed.
686
 
687
+ ## Cross-Origin Detection
688
+
689
+ `GuzzleHttp\Psr7\UriComparator` provides methods to determine if a modified URL should be considered cross-origin.
690
+
691
+ ### `GuzzleHttp\Psr7\UriComparator::isCrossOrigin`
692
+
693
+ `public static function isCrossOrigin(UriInterface $original, UriInterface $modified): bool`
694
+
695
+ Determines if a modified URL should be considered cross-origin with respect to an original URL.
696
+
697
  ## Reference Resolution
698
 
699
  `GuzzleHttp\Psr7\UriResolver` provides methods to resolve a URI reference in the context of a base URI according
819
  equivalence or difference of relative references does not mean anything.
820
 
821
 
822
+ ## Version Guidance
823
+
824
+ | Version | Status | PHP Version |
825
+ |---------|----------------|------------------|
826
+ | 1.x | Security fixes | >=5.4,<8.1 |
827
+ | 2.x | Latest | ^7.2.5 \|\| ^8.0 |
828
+
829
+
830
  ## Security
831
 
832
  If you discover a security vulnerability within this package, please send an email to security@tidelift.com. All security vulnerabilities will be promptly addressed. Please do not disclose security-related issues publicly until a fix has been announced. Please see [Security Policy](https://github.com/guzzle/psr7/security/policy) for more information.
833
 
834
+
835
  ## License
836
 
837
  Guzzle is made available under the MIT License (MIT). Please see [License File](LICENSE) for more information.
838
 
839
+
840
  ## For Enterprise
841
 
842
  Available as part of the Tidelift Subscription
vendor/guzzlehttp/psr7/composer.json CHANGED
@@ -63,7 +63,7 @@
63
  },
64
  "extra": {
65
  "branch-alias": {
66
- "dev-master": "1.7-dev"
67
  }
68
  },
69
  "config": {
63
  },
64
  "extra": {
65
  "branch-alias": {
66
+ "dev-master": "1.9-dev"
67
  }
68
  },
69
  "config": {
vendor/guzzlehttp/psr7/src/UriComparator.php ADDED
@@ -0,0 +1,55 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace GuzzleHttp\Psr7;
4
+
5
+ use Psr\Http\Message\UriInterface;
6
+
7
+ /**
8
+ * Provides methods to determine if a modified URL should be considered cross-origin.
9
+ *
10
+ * @author Graham Campbell
11
+ */
12
+ final class UriComparator
13
+ {
14
+ /**
15
+ * Determines if a modified URL should be considered cross-origin with
16
+ * respect to an original URL.
17
+ *
18
+ * @return bool
19
+ */
20
+ public static function isCrossOrigin(UriInterface $original, UriInterface $modified)
21
+ {
22
+ if (\strcasecmp($original->getHost(), $modified->getHost()) !== 0) {
23
+ return true;
24
+ }
25
+
26
+ if ($original->getScheme() !== $modified->getScheme()) {
27
+ return true;
28
+ }
29
+
30
+ if (self::computePort($original) !== self::computePort($modified)) {
31
+ return true;
32
+ }
33
+
34
+ return false;
35
+ }
36
+
37
+ /**
38
+ * @return int
39
+ */
40
+ private static function computePort(UriInterface $uri)
41
+ {
42
+ $port = $uri->getPort();
43
+
44
+ if (null !== $port) {
45
+ return $port;
46
+ }
47
+
48
+ return 'https' === $uri->getScheme() ? 443 : 80;
49
+ }
50
+
51
+ private function __construct()
52
+ {
53
+ // cannot be instantiated
54
+ }
55
+ }
w3-total-cache-api.php CHANGED
@@ -12,7 +12,7 @@ if ( ! defined( 'ABSPATH' ) ) {
12
  }
13
 
14
  define( 'W3TC', true );
15
- define( 'W3TC_VERSION', '2.2.2' );
16
  define( 'W3TC_POWERED_BY', 'W3 Total Cache' );
17
  define( 'W3TC_EMAIL', 'w3tc@w3-edge.com' );
18
  define( 'W3TC_TEXT_DOMAIN', 'w3-total-cache' );
12
  }
13
 
14
  define( 'W3TC', true );
15
+ define( 'W3TC_VERSION', '2.2.3' );
16
  define( 'W3TC_POWERED_BY', 'W3 Total Cache' );
17
  define( 'W3TC_EMAIL', 'w3tc@w3-edge.com' );
18
  define( 'W3TC_TEXT_DOMAIN', 'w3-total-cache' );
w3-total-cache.php CHANGED
@@ -3,7 +3,7 @@
3
  * Plugin Name: W3 Total Cache
4
  * Plugin URI: https://www.boldgrid.com/totalcache/
5
  * 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.
6
- * Version: 2.2.2
7
  * Requires at least: 3.8
8
  * Requires PHP: 5.6
9
  * Author: BoldGrid
3
  * Plugin Name: W3 Total Cache
4
  * Plugin URI: https://www.boldgrid.com/totalcache/
5
  * 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.
6
+ * Version: 2.2.3
7
  * Requires at least: 3.8
8
  * Requires PHP: 5.6
9
  * Author: BoldGrid