kollapsminoriteten/wp-includes/class-wp-feed-cache-transie...

139 lines
3.2 KiB
PHP
Raw Permalink Normal View History

2019-11-02 10:38:58 +01:00
<?php
/**
* Feed API: WP_Feed_Cache_Transient class
*
* @package WordPress
* @subpackage Feed
* @since 4.7.0
*/
/**
* Core class used to implement feed cache transients.
*
* @since 2.8.0
2025-02-28 08:42:11 +01:00
* @since 6.7.0 Now properly implements the SimplePie\Cache\Base interface.
2025-12-12 13:15:55 +01:00
* @since 6.9.0 Switched to Multisite's global cache via the `*_site_transient()` functions.
2019-11-02 10:38:58 +01:00
*/
2022-12-15 17:47:31 +01:00
#[AllowDynamicProperties]
2025-02-28 08:42:11 +01:00
class WP_Feed_Cache_Transient implements SimplePie\Cache\Base {
2019-11-02 10:38:58 +01:00
/**
* Holds the transient name.
*
* @since 2.8.0
* @var string
*/
public $name;
/**
* Holds the transient mod name.
*
* @since 2.8.0
* @var string
*/
public $mod_name;
/**
* Holds the cache duration in seconds.
*
* Defaults to 43200 seconds (12 hours).
*
* @since 2.8.0
* @var int
*/
public $lifetime = 43200;
/**
2025-02-28 08:42:11 +01:00
* Creates a new (transient) cache object.
2019-11-02 10:38:58 +01:00
*
* @since 2.8.0
* @since 3.2.0 Updated to use a PHP5 constructor.
2025-02-28 08:42:11 +01:00
* @since 6.7.0 Parameter names have been updated to be in line with the `SimplePie\Cache\Base` interface.
2019-11-02 10:38:58 +01:00
*
2025-02-28 08:42:11 +01:00
* @param string $location URL location (scheme is used to determine handler).
* @param string $name Unique identifier for cache object.
* @param Base::TYPE_FEED|Base::TYPE_IMAGE $type Either `TYPE_FEED` ('spc') for SimplePie data,
* or `TYPE_IMAGE` ('spi') for image data.
2019-11-02 10:38:58 +01:00
*/
2025-02-28 08:42:11 +01:00
public function __construct( $location, $name, $type ) {
$this->name = 'feed_' . $name;
$this->mod_name = 'feed_mod_' . $name;
2019-11-02 10:38:58 +01:00
$lifetime = $this->lifetime;
/**
* Filters the transient lifetime of the feed cache.
*
* @since 2.8.0
*
* @param int $lifetime Cache duration in seconds. Default is 43200 seconds (12 hours).
2025-02-28 08:42:11 +01:00
* @param string $name Unique identifier for the cache object.
2019-11-02 10:38:58 +01:00
*/
2025-02-28 08:42:11 +01:00
$this->lifetime = apply_filters( 'wp_feed_cache_transient_lifetime', $lifetime, $name );
2019-11-02 10:38:58 +01:00
}
/**
2025-02-28 08:42:11 +01:00
* Saves data to the transient.
2019-11-02 10:38:58 +01:00
*
* @since 2.8.0
*
2025-02-28 08:42:11 +01:00
* @param array|SimplePie\SimplePie $data Data to save. If passed a SimplePie object,
* only cache the `$data` property.
2019-11-02 10:38:58 +01:00
* @return true Always true.
*/
public function save( $data ) {
2025-02-28 08:42:11 +01:00
if ( $data instanceof SimplePie\SimplePie ) {
2019-11-02 10:38:58 +01:00
$data = $data->data;
}
2025-12-12 13:15:55 +01:00
set_site_transient( $this->name, $data, $this->lifetime );
set_site_transient( $this->mod_name, time(), $this->lifetime );
2019-11-02 10:38:58 +01:00
return true;
}
/**
2025-02-28 08:42:11 +01:00
* Retrieves the data saved in the transient.
2019-11-02 10:38:58 +01:00
*
* @since 2.8.0
*
2025-02-28 08:42:11 +01:00
* @return array Data for `SimplePie::$data`.
2019-11-02 10:38:58 +01:00
*/
public function load() {
2025-12-12 13:15:55 +01:00
return get_site_transient( $this->name );
2019-11-02 10:38:58 +01:00
}
/**
* Gets mod transient.
*
* @since 2.8.0
*
2025-02-28 08:42:11 +01:00
* @return int Timestamp.
2019-11-02 10:38:58 +01:00
*/
public function mtime() {
2025-12-12 13:15:55 +01:00
return get_site_transient( $this->mod_name );
2019-11-02 10:38:58 +01:00
}
/**
* Sets mod transient.
*
* @since 2.8.0
*
* @return bool False if value was not set and true if value was set.
*/
public function touch() {
2025-12-12 13:15:55 +01:00
return set_site_transient( $this->mod_name, time(), $this->lifetime );
2019-11-02 10:38:58 +01:00
}
/**
* Deletes transients.
*
* @since 2.8.0
*
* @return true Always true.
*/
public function unlink() {
2025-12-12 13:15:55 +01:00
delete_site_transient( $this->name );
delete_site_transient( $this->mod_name );
2019-11-02 10:38:58 +01:00
return true;
}
}