Wordpress 3.5
[autoinstalls/wordpress.git] / wp-includes / SimplePie / Cache.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  * Used to create cache objects
47  *
48  * This class can be overloaded with {@see SimplePie::set_cache_class()},
49  * although the preferred way is to create your own handler
50  * via {@see register()}
51  *
52  * @package SimplePie
53  * @subpackage Caching
54  */
55 class SimplePie_Cache
56 {
57         /**
58          * Cache handler classes
59          *
60          * These receive 3 parameters to their constructor, as documented in
61          * {@see register()}
62          * @var array
63          */
64         protected static $handlers = array(
65                 'mysql' => 'SimplePie_Cache_MySQL',
66                 'memcache' => 'SimplePie_Cache_Memcache',
67         );
68
69         /**
70          * Don't call the constructor. Please.
71          */
72         private function __construct() { }
73
74         /**
75          * Create a new SimplePie_Cache object
76          *
77          * @param string $location URL location (scheme is used to determine handler)
78          * @param string $filename Unique identifier for cache object
79          * @param string $extension 'spi' or 'spc'
80          * @return SimplePie_Cache_Base Type of object depends on scheme of `$location`
81          */
82         public static function get_handler($location, $filename, $extension)
83         {
84                 $type = explode(':', $location, 2);
85                 $type = $type[0];
86                 if (!empty(self::$handlers[$type]))
87                 {
88                         $class = self::$handlers[$type];
89                         return new $class($location, $filename, $extension);
90                 }
91
92                 return new SimplePie_Cache_File($location, $filename, $extension);
93         }
94
95         /**
96          * Create a new SimplePie_Cache object
97          *
98          * @deprecated Use {@see get_handler} instead
99          */
100         public function create($location, $filename, $extension)
101         {
102                 trigger_error('Cache::create() has been replaced with Cache::get_handler(). Switch to the registry system to use this.', E_USER_DEPRECATED);
103                 return self::get_handler($location, $filename, $extension);
104         }
105
106         /**
107          * Register a handler
108          *
109          * @param string $type DSN type to register for
110          * @param string $class Name of handler class. Must implement SimplePie_Cache_Base
111          */
112         public static function register($type, $class)
113         {
114                 self::$handlers[$type] = $class;
115         }
116
117         /**
118          * Parse a URL into an array
119          *
120          * @param string $url
121          * @return array
122          */
123         public static function parse_URL($url)
124         {
125                 $params = parse_url($url);
126                 $params['extras'] = array();
127                 if (isset($params['query']))
128                 {
129                         parse_str($params['query'], $params['extras']);
130                 }
131                 return $params;
132         }
133 }