<?php

defined( 'ABSPATH' ) || exit;

add_action( 'admin_init', 'science_clear_cache_after_studiopress_accelerator' );
/**
 * Clear WP science cache after purged the StudioPress Accelerator cache
 *
 * @since 2.5.5
 *
 * @return void
 */
function science_clear_cache_after_studiopress_accelerator() {
	if ( ! current_user_can( 'science_manage_options' ) ) {
		return;
	}

	if ( isset( $GLOBALS['sp_accel_nginx_proxy_cache_purge'] ) && is_a( $GLOBALS['sp_accel_nginx_proxy_cache_purge'], 'SP_Accel_Nginx_Proxy_Cache_Purge' ) && isset( $_REQUEST['_wpnonce'] ) ) {
		$nonce = $_REQUEST['_wpnonce']; // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized, WordPress.Security.ValidatedSanitizedInput.MissingUnslash, WordPress.Security.NonceVerification.Recommended
		if ( wp_verify_nonce( $nonce, 'sp-accel-purge-url' ) && ! empty( $_REQUEST['cache-purge-url'] ) ) {
			$submitted_url = sanitize_text_field( wp_unslash( $_REQUEST['cache-purge-url'] ) );

			// Clear the URL.
			science_clean_files( [ $submitted_url ] );
		} elseif ( wp_verify_nonce( $nonce, 'sp-accel-purge-theme' ) ) {
			// Clear all caching files.
			science_clean_domain();

			// Preload cache.
			run_science_bot();
			run_science_sitemap_preload();
		}
	}
}

add_action( 'after_science_clean_domain', 'science_clean_studiopress_accelerator' );
/**
 * Call the cache server to purge the cache with StudioPress Accelerator.
 *
 * @since 2.5.5
 *
 * @return void
 */
function science_clean_studiopress_accelerator() {
	if ( isset( $GLOBALS['sp_accel_nginx_proxy_cache_purge'] ) && is_a( $GLOBALS['sp_accel_nginx_proxy_cache_purge'], 'SP_Accel_Nginx_Proxy_Cache_Purge' ) ) {
		$GLOBALS['sp_accel_nginx_proxy_cache_purge']->cache_flush_theme();
	}
}
