134 lines
2.5 KiB
PHP
134 lines
2.5 KiB
PHP
|
<?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
|
||
|
*/
|
||
|
#[AllowDynamicProperties]
|
||
|
class WP_Feed_Cache_Transient {
|
||
|
|
||
|
/**
|
||
|
* 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;
|
||
|
|
||
|
/**
|
||
|
* Constructor.
|
||
|
*
|
||
|
* @since 2.8.0
|
||
|
* @since 3.2.0 Updated to use a PHP5 constructor.
|
||
|
*
|
||
|
* @param string $location URL location (scheme is used to determine handler).
|
||
|
* @param string $filename Unique identifier for cache object.
|
||
|
* @param string $extension 'spi' or 'spc'.
|
||
|
*/
|
||
|
public function __construct( $location, $filename, $extension ) {
|
||
|
$this->name = 'feed_' . $filename;
|
||
|
$this->mod_name = 'feed_mod_' . $filename;
|
||
|
|
||
|
$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).
|
||
|
* @param string $filename Unique identifier for the cache object.
|
||
|
*/
|
||
|
$this->lifetime = apply_filters( 'wp_feed_cache_transient_lifetime', $lifetime, $filename );
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Sets the transient.
|
||
|
*
|
||
|
* @since 2.8.0
|
||
|
*
|
||
|
* @param SimplePie $data Data to save.
|
||
|
* @return true Always true.
|
||
|
*/
|
||
|
public function save( $data ) {
|
||
|
if ( $data instanceof SimplePie ) {
|
||
|
$data = $data->data;
|
||
|
}
|
||
|
|
||
|
set_transient( $this->name, $data, $this->lifetime );
|
||
|
set_transient( $this->mod_name, time(), $this->lifetime );
|
||
|
return true;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Gets the transient.
|
||
|
*
|
||
|
* @since 2.8.0
|
||
|
*
|
||
|
* @return mixed Transient value.
|
||
|
*/
|
||
|
public function load() {
|
||
|
return get_transient( $this->name );
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Gets mod transient.
|
||
|
*
|
||
|
* @since 2.8.0
|
||
|
*
|
||
|
* @return mixed Transient value.
|
||
|
*/
|
||
|
public function mtime() {
|
||
|
return get_transient( $this->mod_name );
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Sets mod transient.
|
||
|
*
|
||
|
* @since 2.8.0
|
||
|
*
|
||
|
* @return bool False if value was not set and true if value was set.
|
||
|
*/
|
||
|
public function touch() {
|
||
|
return set_transient( $this->mod_name, time(), $this->lifetime );
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Deletes transients.
|
||
|
*
|
||
|
* @since 2.8.0
|
||
|
*
|
||
|
* @return true Always true.
|
||
|
*/
|
||
|
public function unlink() {
|
||
|
delete_transient( $this->name );
|
||
|
delete_transient( $this->mod_name );
|
||
|
return true;
|
||
|
}
|
||
|
}
|