Wordpress 3.5
[autoinstalls/wordpress.git] / wp-includes / SimplePie / Cache / File.php
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 }