PluginProbe
Hostinger Tools / 3.0.79
Hostinger Tools v3.0.79
3.0.79 3.0.78 3.0.77 3.0.76 3.0.75 3.0.74 3.0.73 3.0.72 3.0.71 3.0.70 3.0.69 3.0.68 3.0.67 3.0.66 1.8.1 1.8.2 1.8.3 1.9.1 1.9.4 1.9.5 1.9.6 1.9.7 1.9.8 1.9.9 2.0.0 All 110 releases
hostinger / includes / Cdn / LiteSpeedHooks.php

LiteSpeedHooks.php in Hostinger Tools 3.0.79, at includes/Cdn/LiteSpeedHooks.php

55 lines 1.6 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace Hostinger\Cdn;
4
5 use Hostinger\WpHelper\Utils;
6 use Throwable;
7
8 defined( 'ABSPATH' ) || exit;
9
10 class LiteSpeedHooks {
11 public const THROTTLE_TRANSIENT = 'hostinger_cdn_purge_throttle';
12 public const THROTTLE_SECONDS = 10;
13
14 private CachePurger $purger;
15 private Utils $utils;
16
17 private bool $purged_this_request = false;
18
19 public function __construct( CachePurger $purger, Utils $utils ) {
20 $this->purger = $purger;
21 $this->utils = $utils;
22
23 add_action( 'litespeed_purged_all', array( $this, 'purge_cdn_cache' ) );
24 }
25
26 public function purge_cdn_cache(): void {
27 if ( $this->purged_this_request ) {
28 return;
29 }
30
31 if ( ! apply_filters( 'hostinger_cdn_purge_on_litespeed_purge', true ) ) {
32 return;
33 }
34
35 if ( get_transient( self::THROTTLE_TRANSIENT ) ) {
36 return;
37 }
38
39 $this->purged_this_request = true;
40 set_transient( self::THROTTLE_TRANSIENT, 1, self::THROTTLE_SECONDS );
41
42 try {
43 $result = $this->purger->purge_cdn();
44
45 if ( is_wp_error( $result ) ) {
46 $this->utils->errorLog( 'Hostinger Tools hCDN purge failed after LiteSpeed purge: ' . $result->get_error_code() );
47 } elseif ( ! empty( $result['skipped'] ) ) {
48 $this->utils->errorLog( 'Hostinger Tools hCDN purge skipped after LiteSpeed purge: site not eligible' );
49 }
50 } catch ( Throwable $e ) {
51 $this->utils->errorLog( 'Hostinger Tools hCDN purge threw after LiteSpeed purge: ' . $e->getMessage() );
52 }
53 }
54 }
55