Skip to content

Commit f6b8753

Browse files
committed
move purge logic into optimizer
1 parent e8d4343 commit f6b8753

File tree

2 files changed

+69
-67
lines changed

2 files changed

+69
-67
lines changed

includes/classes/Admin/Dashboard.php

Lines changed: 0 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
use const ImageOptimizerPro\Constants\LICENSE_INFO_TRANSIENT;
2121
use const ImageOptimizerPro\Constants\LICENSE_KEY_OPTION;
2222
use const ImageOptimizerPro\Constants\MENU_SLUG;
23-
use const ImageOptimizerPro\Constants\PURGE_ENDPOINT;
2423
use const ImageOptimizerPro\Constants\SETTING_OPTION;
2524

2625
/**
@@ -76,7 +75,6 @@ public function setup() {
7675
add_action( 'admin_init', [ $this, 'save_settings' ] );
7776
add_action( 'admin_init', [ $this, 'maybe_redirect' ] );
7877
add_action( 'admin_init', [ $this, 'add_privacy_message' ] );
79-
add_action( 'admin_post_image_optimizer_pro_cache_purge', [ $this, 'handle_cache_purge' ] );
8078
}
8179

8280
/**
@@ -382,71 +380,6 @@ public function add_privacy_message() {
382380
}
383381
}
384382

385-
/**
386-
* Handle cache purge
387-
*
388-
* @return void
389-
*/
390-
public function handle_cache_purge() {
391-
if ( ! current_user_can( 'manage_options' ) ) {
392-
wp_die( esc_html__( 'You do not have sufficient permissions to perform this action.', 'image-optimizer-pro' ) );
393-
}
394-
395-
if ( ! isset( $_GET['_wpnonce'] ) || ! wp_verify_nonce( sanitize_text_field( wp_unslash( $_GET['_wpnonce'] ) ), 'image_optimizer_pro_cache_purge' ) ) {
396-
wp_die( esc_html__( 'Nonce verification failed.', 'image-optimizer-pro' ) );
397-
}
398-
399-
$response = $this->purge_image_optimizer_cache();
400-
401-
if ( ! is_wp_error( $response ) && ! empty( $response['success'] ) ) {
402-
$redirect_url = add_query_arg( 'iop_action', 'purge_image_optimizer_cache', wp_get_referer() );
403-
} else {
404-
$redirect_url = add_query_arg( 'iop_action', 'purge_image_optimizer_cache_failed', wp_get_referer() );
405-
}
406-
407-
wp_safe_redirect( esc_url_raw( $redirect_url ) );
408-
exit;
409-
}
410-
411-
/**
412-
* Purge Image Optimizer cache
413-
*
414-
* @return mixed|\WP_Error|null
415-
*/
416-
public function purge_image_optimizer_cache() {
417-
if ( is_multisite() ) {
418-
return new \WP_Error( 'multisite_not_supported', esc_html__( 'Multisite is not supported for Image Optimizer Purge.', 'image-optimizer-pro' ) );
419-
}
420-
421-
$body = wp_json_encode(
422-
[
423-
'license_key' => get_license_key(),
424-
'license_url' => home_url(),
425-
]
426-
);
427-
428-
$response = wp_remote_post(
429-
PURGE_ENDPOINT,
430-
[
431-
'headers' => [
432-
'Content-Type' => 'application/json',
433-
],
434-
'body' => $body,
435-
]
436-
);
437-
438-
if ( is_wp_error( $response ) ) {
439-
$error_message = $response->get_error_message();
440-
441-
return new \WP_Error( 'request_failed', esc_html__( 'Request failed: ', 'image-optimizer-pro' ) . $error_message );
442-
}
443-
444-
$response_body = wp_remote_retrieve_body( $response );
445-
446-
return json_decode( $response_body, true );
447-
}
448-
449-
450383
/**
451384
* Maybe display feedback messages when certain action is taken
452385
*

includes/classes/Optimizer.php

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,10 @@
1010
use \WP_REST_Request as WP_REST_Request;
1111
use \WP_Post as WP_Post;
1212
use \WP_Error as WP_Error;
13+
use function ImageOptimizerPro\Utils\get_license_key;
1314
use function ImageOptimizerPro\Utils\is_license_active;
1415
use function ImageOptimizerPro\Utils\is_local_site;
16+
use const ImageOptimizerPro\Constants\PURGE_ENDPOINT;
1517

1618
/**
1719
* Class Optimizer
@@ -119,6 +121,9 @@ private function setup() {
119121
// set preferred image format
120122
self::$preferred_image_formats = $settings['preferred_format'];
121123

124+
// purge cache
125+
add_action( 'admin_post_image_optimizer_pro_cache_purge', [ $this, 'handle_cache_purge' ] );
126+
122127
// skip photonized urls when image optimizer active
123128
add_filter( 'jetpack_photon_skip_for_url', '__return_true' );
124129
add_filter( 'wp_resource_hints', [ $this, 'add_dns_prefetch' ], 10, 2 );
@@ -1707,4 +1712,68 @@ private static function end_buffering( $contents, $phase ) {
17071712
return $contents;
17081713
}
17091714

1715+
/**
1716+
* Handle cache purge
1717+
*
1718+
* @return void
1719+
*/
1720+
public function handle_cache_purge() {
1721+
if ( ! current_user_can( 'manage_options' ) ) {
1722+
wp_die( esc_html__( 'You do not have sufficient permissions to perform this action.', 'image-optimizer-pro' ) );
1723+
}
1724+
1725+
if ( ! isset( $_GET['_wpnonce'] ) || ! wp_verify_nonce( sanitize_text_field( wp_unslash( $_GET['_wpnonce'] ) ), 'image_optimizer_pro_cache_purge' ) ) {
1726+
wp_die( esc_html__( 'Nonce verification failed.', 'image-optimizer-pro' ) );
1727+
}
1728+
1729+
$response = $this->purge_image_optimizer_cache();
1730+
1731+
if ( ! is_wp_error( $response ) && ! empty( $response['success'] ) ) {
1732+
$redirect_url = add_query_arg( 'iop_action', 'purge_image_optimizer_cache', wp_get_referer() );
1733+
} else {
1734+
$redirect_url = add_query_arg( 'iop_action', 'purge_image_optimizer_cache_failed', wp_get_referer() );
1735+
}
1736+
1737+
wp_safe_redirect( esc_url_raw( $redirect_url ) );
1738+
exit;
1739+
}
1740+
1741+
/**
1742+
* Purge Image Optimizer cache
1743+
*
1744+
* @return mixed|\WP_Error|null
1745+
*/
1746+
public function purge_image_optimizer_cache() {
1747+
if ( is_multisite() ) {
1748+
return new \WP_Error( 'multisite_not_supported', esc_html__( 'Multisite is not supported for Image Optimizer Purge.', 'image-optimizer-pro' ) );
1749+
}
1750+
1751+
$body = wp_json_encode(
1752+
[
1753+
'license_key' => get_license_key(),
1754+
'license_url' => home_url(),
1755+
]
1756+
);
1757+
1758+
$response = wp_remote_post(
1759+
PURGE_ENDPOINT,
1760+
[
1761+
'headers' => [
1762+
'Content-Type' => 'application/json',
1763+
],
1764+
'body' => $body,
1765+
]
1766+
);
1767+
1768+
if ( is_wp_error( $response ) ) {
1769+
$error_message = $response->get_error_message();
1770+
1771+
return new \WP_Error( 'request_failed', esc_html__( 'Request failed: ', 'image-optimizer-pro' ) . $error_message );
1772+
}
1773+
1774+
$response_body = wp_remote_retrieve_body( $response );
1775+
1776+
return json_decode( $response_body, true );
1777+
}
1778+
17101779
}

0 commit comments

Comments
 (0)