Projet

Général

Profil

Paste
Télécharger (4,2 ko) Statistiques
| Branche: | Révision:

root / drupal7 / sites / all / libraries / simplepie / library / SimplePie / Cache.php @ 41cc1b08

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
}