[ Index ]

PHP Cross Reference of DokuWiki

title

Body

[close]

/vendor/simplepie/simplepie/library/SimplePie/Cache/ -> File.php (source)

   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-2016, 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   * @copyright 2004-2016 Ryan Parman, Geoffrey Sneddon, Ryan McCue
  37   * @author Ryan Parman
  38   * @author Geoffrey Sneddon
  39   * @author Ryan McCue
  40   * @link http://simplepie.org/ SimplePie
  41   * @license http://www.opensource.org/licenses/bsd-license.php BSD License
  42   */
  43  
  44  /**
  45   * Caches data to the filesystem
  46   *
  47   * @package SimplePie
  48   * @subpackage Caching
  49   */
  50  class SimplePie_Cache_File implements SimplePie_Cache_Base
  51  {
  52      /**
  53       * Location string
  54       *
  55       * @see SimplePie::$cache_location
  56       * @var string
  57       */
  58      protected $location;
  59  
  60      /**
  61       * Filename
  62       *
  63       * @var string
  64       */
  65      protected $filename;
  66  
  67      /**
  68       * File extension
  69       *
  70       * @var string
  71       */
  72      protected $extension;
  73  
  74      /**
  75       * File path
  76       *
  77       * @var string
  78       */
  79      protected $name;
  80  
  81      /**
  82       * Create a new cache object
  83       *
  84       * @param string $location Location string (from SimplePie::$cache_location)
  85       * @param string $name Unique ID for the cache
  86       * @param string $type Either TYPE_FEED for SimplePie data, or TYPE_IMAGE for image data
  87       */
  88  	public function __construct($location, $name, $type)
  89      {
  90          $this->location = $location;
  91          $this->filename = $name;
  92          $this->extension = $type;
  93          $this->name = "$this->location/$this->filename.$this->extension";
  94      }
  95  
  96      /**
  97       * Save data to the cache
  98       *
  99       * @param array|SimplePie $data Data to store in the cache. If passed a SimplePie object, only cache the $data property
 100       * @return bool Successfulness
 101       */
 102  	public function save($data)
 103      {
 104          if (file_exists($this->name) && is_writable($this->name) || file_exists($this->location) && is_writable($this->location))
 105          {
 106              if ($data instanceof SimplePie)
 107              {
 108                  $data = $data->data;
 109              }
 110  
 111              $data = serialize($data);
 112              return (bool) file_put_contents($this->name, $data);
 113          }
 114          return false;
 115      }
 116  
 117      /**
 118       * Retrieve the data saved to the cache
 119       *
 120       * @return array Data for SimplePie::$data
 121       */
 122  	public function load()
 123      {
 124          if (file_exists($this->name) && is_readable($this->name))
 125          {
 126              return unserialize(file_get_contents($this->name));
 127          }
 128          return false;
 129      }
 130  
 131      /**
 132       * Retrieve the last modified time for the cache
 133       *
 134       * @return int Timestamp
 135       */
 136  	public function mtime()
 137      {
 138          return @filemtime($this->name);
 139      }
 140  
 141      /**
 142       * Set the last modified time to the current time
 143       *
 144       * @return bool Success status
 145       */
 146  	public function touch()
 147      {
 148          return @touch($this->name);
 149      }
 150  
 151      /**
 152       * Remove the cache
 153       *
 154       * @return bool Success status
 155       */
 156  	public function unlink()
 157      {
 158          if (file_exists($this->name))
 159          {
 160              return unlink($this->name);
 161          }
 162          return false;
 163      }
 164  }