70 lines
1.5 KiB
PHP
70 lines
1.5 KiB
PHP
|
<?php
|
||
|
namespace W3TC;
|
||
|
|
||
|
|
||
|
|
||
|
class Cdnfsd_StackPath2_Engine {
|
||
|
private $config;
|
||
|
|
||
|
|
||
|
|
||
|
function __construct( $config = array() ) {
|
||
|
$this->config = $config;
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
function flush_urls( $urls ) {
|
||
|
if ( empty( $this->config['client_id'] ) ) {
|
||
|
throw new \Exception( __( 'API key not specified.', 'w3-total-cache' ) );
|
||
|
}
|
||
|
|
||
|
$api = new Cdn_StackPath2_Api( $this->config );
|
||
|
|
||
|
$items = array();
|
||
|
foreach ( $urls as $url ) {
|
||
|
$items[] = array( 'url' => $url,
|
||
|
'recursive' => true,
|
||
|
);
|
||
|
}
|
||
|
|
||
|
try {
|
||
|
$api->purge( array( 'items' => $items ) );
|
||
|
} catch ( \Exception $ex ) {
|
||
|
if ( $ex->getMessage() == 'Validation Failure: Purge url must contain one of your hostnames' ) {
|
||
|
throw new \Exception('CDN site is not configured correctly: Delivery Domain must match your site domain');
|
||
|
} else {
|
||
|
throw $ex;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
/**
|
||
|
* Flushes CDN completely
|
||
|
*/
|
||
|
function flush_all() {
|
||
|
if ( empty( $this->config['client_id'] ) ) {
|
||
|
throw new \Exception( __( 'API key not specified.', 'w3-total-cache' ) );
|
||
|
}
|
||
|
|
||
|
$api = new Cdn_StackPath2_Api( $this->config );
|
||
|
|
||
|
$items = array();
|
||
|
$items[] = array( 'url' => home_url( '/' ),
|
||
|
'recursive' => true,
|
||
|
);
|
||
|
|
||
|
try {
|
||
|
$r = $api->purge( array( 'items' => $items ) );
|
||
|
} catch ( \Exception $ex ) {
|
||
|
if ( $ex->getMessage() == 'Validation Failure: Purge url must contain one of your hostnames' ) {
|
||
|
throw new \Exception('CDN site is not configured correctly: Delivery Domain must match your site domain');
|
||
|
} else {
|
||
|
throw $ex;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|