home *** CD-ROM | disk | FTP | other *** search
/ HTML Examples / WP.iso / wordpress / wp-includes / SimplePie / Cache / File.php < prev    next >
Encoding:
PHP Script  |  2012-11-21  |  4.3 KB  |  174 lines

  1. <?php
  2. /**
  3.  * SimplePie
  4.  *
  5.  * A PHP-Based RSS and Atom Feed Framework.
  6.  * Takes the hard work out of managing a complete RSS/Atom solution.
  7.  *
  8.  * Copyright (c) 2004-2012, Ryan Parman, Geoffrey Sneddon, Ryan McCue, and contributors
  9.  * All rights reserved.
  10.  *
  11.  * Redistribution and use in source and binary forms, with or without modification, are
  12.  * permitted provided that the following conditions are met:
  13.  *
  14.  *     * Redistributions of source code must retain the above copyright notice, this list of
  15.  *       conditions and the following disclaimer.
  16.  *
  17.  *     * Redistributions in binary form must reproduce the above copyright notice, this list
  18.  *       of conditions and the following disclaimer in the documentation and/or other materials
  19.  *       provided with the distribution.
  20.  *
  21.  *     * Neither the name of the SimplePie Team nor the names of its contributors may be used
  22.  *       to endorse or promote products derived from this software without specific prior
  23.  *       written permission.
  24.  *
  25.  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
  26.  * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
  27.  * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
  28.  * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
  29.  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
  30.  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
  31.  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
  32.  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  33.  * POSSIBILITY OF SUCH DAMAGE.
  34.  *
  35.  * @package SimplePie
  36.  * @version 1.3.1
  37.  * @copyright 2004-2012 Ryan Parman, Geoffrey Sneddon, Ryan McCue
  38.  * @author Ryan Parman
  39.  * @author Geoffrey Sneddon
  40.  * @author Ryan McCue
  41.  * @link http://simplepie.org/ SimplePie
  42.  * @license http://www.opensource.org/licenses/bsd-license.php BSD License
  43.  */
  44.  
  45. /**
  46.  * Caches data to the filesystem
  47.  *
  48.  * @package SimplePie
  49.  * @subpackage Caching
  50.  */
  51. class SimplePie_Cache_File implements SimplePie_Cache_Base
  52. {
  53.     /**
  54.      * Location string
  55.      *
  56.      * @see SimplePie::$cache_location
  57.      * @var string
  58.      */
  59.     protected $location;
  60.  
  61.     /**
  62.      * Filename
  63.      *
  64.      * @var string
  65.      */
  66.     protected $filename;
  67.  
  68.     /**
  69.      * File extension
  70.      *
  71.      * @var string
  72.      */
  73.     protected $extension;
  74.  
  75.     /**
  76.      * File path
  77.      *
  78.      * @var string
  79.      */
  80.     protected $name;
  81.  
  82.     /**
  83.      * Create a new cache object
  84.      *
  85.      * @param string $location Location string (from SimplePie::$cache_location)
  86.      * @param string $name Unique ID for the cache
  87.      * @param string $type Either TYPE_FEED for SimplePie data, or TYPE_IMAGE for image data
  88.      */
  89.     public function __construct($location, $name, $type)
  90.     {
  91.         $this->location = $location;
  92.         $this->filename = $name;
  93.         $this->extension = $type;
  94.         $this->name = "$this->location/$this->filename.$this->extension";
  95.     }
  96.  
  97.     /**
  98.      * Save data to the cache
  99.      *
  100.      * @param array|SimplePie $data Data to store in the cache. If passed a SimplePie object, only cache the $data property
  101.      * @return bool Successfulness
  102.      */
  103.     public function save($data)
  104.     {
  105.         if (file_exists($this->name) && is_writeable($this->name) || file_exists($this->location) && is_writeable($this->location))
  106.         {
  107.             if ($data instanceof SimplePie)
  108.             {
  109.                 $data = $data->data;
  110.             }
  111.  
  112.             $data = serialize($data);
  113.             return (bool) file_put_contents($this->name, $data);
  114.         }
  115.         return false;
  116.     }
  117.  
  118.     /**
  119.      * Retrieve the data saved to the cache
  120.      *
  121.      * @return array Data for SimplePie::$data
  122.      */
  123.     public function load()
  124.     {
  125.         if (file_exists($this->name) && is_readable($this->name))
  126.         {
  127.             return unserialize(file_get_contents($this->name));
  128.         }
  129.         return false;
  130.     }
  131.  
  132.     /**
  133.      * Retrieve the last modified time for the cache
  134.      *
  135.      * @return int Timestamp
  136.      */
  137.     public function mtime()
  138.     {
  139.         if (file_exists($this->name))
  140.         {
  141.             return filemtime($this->name);
  142.         }
  143.         return false;
  144.     }
  145.  
  146.     /**
  147.      * Set the last modified time to the current time
  148.      *
  149.      * @return bool Success status
  150.      */
  151.     public function touch()
  152.     {
  153.         if (file_exists($this->name))
  154.         {
  155.             return touch($this->name);
  156.         }
  157.         return false;
  158.     }
  159.  
  160.     /**
  161.      * Remove the cache
  162.      *
  163.      * @return bool Success status
  164.      */
  165.     public function unlink()
  166.     {
  167.         if (file_exists($this->name))
  168.         {
  169.             return unlink($this->name);
  170.         }
  171.         return false;
  172.     }
  173. }
  174.