home *** CD-ROM | disk | FTP | other *** search
/ HTML Examples / WP.iso / wordpress / wp-includes / SimplePie / Cache.php < prev    next >
Encoding:
PHP Script  |  2012-11-21  |  4.2 KB  |  134 lines

  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. }
  134.