Skip to content

Commit fbba0ab

Browse files
authored
Merge pull request #1011 from Codeinwp/enh/cache-clear
Adds integration with caching plugins purge mechanisms
2 parents 26dfce9 + a1adc3e commit fbba0ab

5 files changed

Lines changed: 216 additions & 0 deletions

File tree

inc/compatibilities/aruba_hsc.php

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
<?php
2+
3+
/**
4+
* Class Optml_aruba_hsc.
5+
*
6+
* @reason Clear cache on Aruba Hispeed Cache.
7+
*/
8+
class Optml_aruba_hsc extends Optml_compatibility {
9+
10+
/**
11+
* Should we load the integration logic.
12+
*
13+
* @return bool Should we load.
14+
*/
15+
public function should_load() {
16+
include_once ABSPATH . 'wp-admin/includes/plugin.php';
17+
18+
return is_plugin_active( 'aruba-hispeed-cache/aruba-hispeed-cache.php' );
19+
}
20+
21+
/**
22+
* Register integration details.
23+
*
24+
* @return void
25+
*/
26+
public function register() {
27+
add_action( 'optml_clear_cache', [ $this, 'add_clear_cache_action' ] );
28+
}
29+
30+
31+
/**
32+
* Should we early load the compatibility?
33+
*
34+
* @return bool Whether to load the compatibility or not.
35+
*/
36+
public function should_load_early() {
37+
return true;
38+
}
39+
40+
/**
41+
* Clear cache for Aruba Hispeed Cache.
42+
*
43+
* @param string|bool $location The location to clear the cache for. If true, clear the cache globally. If a string, clear the cache for a particular url.
44+
* @return void
45+
*/
46+
public function add_clear_cache_action( $location ) {
47+
if ( ! class_exists( '\ArubaSPA\HiSpeedCache\Purger\WpPurger' ) || ! defined( 'AHSC_PURGER' ) ) {
48+
return;
49+
}
50+
51+
// Initialize the purger.
52+
$purge = new \ArubaSPA\HiSpeedCache\Purger\WpPurger();
53+
$purge->setPurger( AHSC_PURGER );
54+
55+
// Purge all cache when no location is provided.
56+
if ( $location === true && method_exists( $purge, 'purgeAll' ) ) {
57+
$purge->purgeAll();
58+
return;
59+
}
60+
61+
// Purge single URL based on the location parameter.
62+
if ( ! method_exists( $purge, 'purgeUrl' ) ) {
63+
return;
64+
}
65+
66+
$purge->purgeUrl( $location );
67+
}
68+
}

inc/compatibilities/cache_enabler.php

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,23 @@ function () {
3232
do_action( 'cache_enabler_clear_site_cache' );
3333
}
3434
);
35+
36+
add_action( 'optml_clear_cache', [ $this, 'add_clear_cache_action' ] );
37+
}
38+
39+
/**
40+
* Clear cache for Super Page Cache for Cloudflare.
41+
*
42+
* @param string|bool $location The location to clear the cache for. If true, clear the cache globally. If a string, clear the cache for a particular url.
43+
* @return void
44+
*/
45+
public function add_clear_cache_action( $location ) {
46+
if ( $location === true ) {
47+
do_action( 'cache_enabler_clear_site_cache' );
48+
return;
49+
}
50+
51+
do_action( 'cache_enabler_clear_page_cache_by_url', $location );
3552
}
3653

3754
/**
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
<?php
2+
3+
/**
4+
* Class Optml_hummingbird.
5+
*
6+
* @reason Clear cache on Hummingbird.
7+
*/
8+
class Optml_hummingbird extends Optml_compatibility {
9+
10+
/**
11+
* Should we load the integration logic.
12+
*
13+
* @return bool Should we load.
14+
*/
15+
public function should_load() {
16+
include_once ABSPATH . 'wp-admin/includes/plugin.php';
17+
18+
return is_plugin_active( 'hummingbird-performance/wp-hummingbird.php' );
19+
}
20+
21+
/**
22+
* Register integration details.
23+
*
24+
* @return void
25+
*/
26+
public function register() {
27+
add_action( 'optml_clear_cache', [ $this, 'add_clear_cache_action' ] );
28+
}
29+
30+
31+
/**
32+
* Should we early load the compatibility?
33+
*
34+
* @return bool Whether to load the compatibility or not.
35+
*/
36+
public function should_load_early() {
37+
return true;
38+
}
39+
40+
/**
41+
* Clear cache for Hummingbird.
42+
*
43+
* @param string|bool $location The location to clear the cache for. If true, clear the cache globally. If a string, clear the cache for a particular url.
44+
* @return void
45+
*/
46+
public function add_clear_cache_action( $location ) {
47+
// @phpstan-ignore-next-line - we need to check that method exists explicitly as it might change in the future.
48+
if ( ! class_exists( '\Hummingbird\Core\Utils' ) || ! method_exists( '\Hummingbird\Core\Utils', 'get_module' ) ) { // @phpstan-ignore-line
49+
return;
50+
}
51+
52+
$page_cache = \Hummingbird\Core\Utils::get_module( 'page_cache' );
53+
54+
if ( ! $page_cache ) {
55+
return;
56+
}
57+
58+
// Clear all cache
59+
if ( true === $location ) {
60+
$page_cache->clear_cache();
61+
return;
62+
}
63+
64+
// Clear specific URL
65+
if ( ! is_string( $location ) || empty( $location ) ) {
66+
return;
67+
}
68+
69+
$url_path = wp_parse_url( $location, PHP_URL_PATH );
70+
if ( $url_path ) {
71+
$page_cache->clear_cache( trailingslashit( $url_path ), true );
72+
}
73+
}
74+
}

inc/compatibilities/spc.php

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
<?php
2+
3+
/**
4+
* Class Optml_swcfpc.
5+
*
6+
* @reason Clear cache on Super Page Cache for Cloudflare.
7+
*/
8+
class Optml_spc extends Optml_compatibility {
9+
10+
/**
11+
* Should we load the integration logic.
12+
*
13+
* @return bool Should we load.
14+
*/
15+
public function should_load() {
16+
include_once ABSPATH . 'wp-admin/includes/plugin.php';
17+
18+
return is_plugin_active( 'wp-cloudflare-page-cache/wp-cloudflare-super-page-cache.php' ) || is_plugin_active( 'wp-super-page-cache-pro/wp-cloudflare-super-page-cache-pro.php' );
19+
}
20+
21+
/**
22+
* Register integration details.
23+
*
24+
* @return void
25+
*/
26+
public function register() {
27+
add_action( 'optml_clear_cache', [ $this, 'add_clear_cache_action' ] );
28+
}
29+
30+
/**
31+
* Should we early load the compatibility?
32+
*
33+
* @return bool Whether to load the compatibility or not.
34+
*/
35+
public function should_load_early() {
36+
return true;
37+
}
38+
39+
/**
40+
* Clear cache for Super Page Cache for Cloudflare.
41+
*
42+
* @param string|bool $location The location to clear the cache for. If true, clear the cache globally. If a string, clear the cache for a particular url.
43+
* @return void
44+
*/
45+
public function add_clear_cache_action( $location ) {
46+
if ( is_string( $location ) ) {
47+
do_action( 'swcfpc_purge_cache', [ $location ] );
48+
49+
return;
50+
}
51+
52+
do_action( 'swcfpc_purge_cache' );
53+
}
54+
}

inc/manager.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,9 @@ final class Optml_Manager {
110110
'endurance_cache',
111111
'rocketnet',
112112
'speedycache',
113+
'hummingbird',
114+
'aruba_hsc',
115+
'spc',
113116
];
114117
/**
115118
* The current state of the buffer.

0 commit comments

Comments
 (0)