Skip to content
Snippets Groups Projects
Select Git revision
1 result Searching

format

Blame
  • Forked from ai3 / tools / acmeserver
    Source project has a limited visibility.
    class-wp-feed-cache-transient.php 2.48 KiB
    <?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
     */
    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;
    	}
    }