| Server IP : 62.171.151.215 / Your IP : 216.73.217.53 Web Server : nginx/1.18.0 System : Linux vmi3128365 5.15.0-176-generic #186-Ubuntu SMP Fri Mar 13 11:01:42 UTC 2026 x86_64 User : alex ( 1000) PHP Version : 8.4.18 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /tmp/plugin-wordpress-seo/wordpress-seo/src/schema-aggregator/application/cache/ |
Upload File : |
<?php
// phpcs:disable Yoast.NamingConventions.NamespaceName.TooLong -- Needed in the folder structure.
// phpcs:disable Yoast.NamingConventions.NamespaceName.MaxExceeded
namespace Yoast\WP\SEO\Schema_Aggregator\Application\Cache;
use Exception;
use Yoast\WP\SEO\Schema_Aggregator\Infrastructure\Config;
/**
* Cache manager for the XML sitemap.
*
* Manages cache storage/retrieval/invalidation using WordPress Transients API.
*/
class Xml_Manager {
/**
* Cache key prefix
*
* @var string
*/
private const CACHE_PREFIX = 'yoast_schema_aggregator';
/**
* Cache version for invalidation
*
* @var int
*/
private const CACHE_VERSION = 1;
/**
* Configuration provider
*
* @var Config
*/
private $config;
/**
* Constructor
*
* @param Config $config Configuration provider.
*/
public function __construct( Config $config ) {
$this->config = $config;
}
/**
* Get cached data for a page.
*
* @return string|null Cached data or null.
*/
public function get(): ?string {
try {
if ( ! $this->config->cache_enabled() ) {
return null;
}
$key = $this->get_cache_key();
$data = \get_transient( $key );
if ( $data === false ) {
return null;
}
if ( ! \is_string( $data ) ) {
\delete_transient( $key );
return null;
}
return $data;
} catch ( Exception $e ) {
return null;
}
}
/**
* Set cache data for a page.
*
* @param string $data Data to cache.
*
* @return bool Success.
*/
public function set( string $data ): bool {
try {
$key = $this->get_cache_key();
$expiration = $this->config->get_expiration( [ $data ] );
return \set_transient( $key, $data, $expiration );
} catch ( Exception $e ) {
return false;
}
}
/**
* Invalidate cache for the xml sitemap.
*
* @return bool Success.
*/
public function invalidate(): bool {
return \delete_transient( $this->get_cache_key() );
}
/**
* Generate cache key for page.
*
* @return string Cache key.
*/
private function get_cache_key(): string {
return \sprintf(
'%s_xml_sitemap_v%d',
self::CACHE_PREFIX,
self::CACHE_VERSION,
);
}
}