~canonical-sysadmins/wordpress/4.7.2

« back to all changes in this revision

Viewing changes to wp-includes/SimplePie/Cache.php

  • Committer: Jacek Nykis
  • Date: 2015-01-05 16:17:05 UTC
  • Revision ID: jacek.nykis@canonical.com-20150105161705-w544l1h5mcg7u4w9
Initial commit

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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
}