home *** CD-ROM | disk | FTP | other *** search
/ HTML Examples / WP.iso / wordpress / wp-includes / SimplePie / Cache / DB.php < prev    next >
Encoding:
PHP Script  |  2012-11-21  |  4.6 KB  |  138 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.  * Base class for database-based caches
  47.  *
  48.  * @package SimplePie
  49.  * @subpackage Caching
  50.  */
  51. abstract class SimplePie_Cache_DB implements SimplePie_Cache_Base
  52. {
  53.     /**
  54.      * Helper for database conversion
  55.      *
  56.      * Converts a given {@see SimplePie} object into data to be stored
  57.      *
  58.      * @param SimplePie $data
  59.      * @return array First item is the serialized data for storage, second item is the unique ID for this item
  60.      */
  61.     protected static function prepare_simplepie_object_for_cache($data)
  62.     {
  63.         $items = $data->get_items();
  64.         $items_by_id = array();
  65.  
  66.         if (!empty($items))
  67.         {
  68.             foreach ($items as $item)
  69.             {
  70.                 $items_by_id[$item->get_id()] = $item;
  71.             }
  72.  
  73.             if (count($items_by_id) !== count($items))
  74.             {
  75.                 $items_by_id = array();
  76.                 foreach ($items as $item)
  77.                 {
  78.                     $items_by_id[$item->get_id(true)] = $item;
  79.                 }
  80.             }
  81.  
  82.             if (isset($data->data['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['feed'][0]))
  83.             {
  84.                 $channel =& $data->data['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['feed'][0];
  85.             }
  86.             elseif (isset($data->data['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['feed'][0]))
  87.             {
  88.                 $channel =& $data->data['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['feed'][0];
  89.             }
  90.             elseif (isset($data->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]))
  91.             {
  92.                 $channel =& $data->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0];
  93.             }
  94.             elseif (isset($data->data['child'][SIMPLEPIE_NAMESPACE_RSS_20]['rss'][0]['child'][SIMPLEPIE_NAMESPACE_RSS_20]['channel'][0]))
  95.             {
  96.                 $channel =& $data->data['child'][SIMPLEPIE_NAMESPACE_RSS_20]['rss'][0]['child'][SIMPLEPIE_NAMESPACE_RSS_20]['channel'][0];
  97.             }
  98.             else
  99.             {
  100.                 $channel = null;
  101.             }
  102.  
  103.             if ($channel !== null)
  104.             {
  105.                 if (isset($channel['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['entry']))
  106.                 {
  107.                     unset($channel['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['entry']);
  108.                 }
  109.                 if (isset($channel['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['entry']))
  110.                 {
  111.                     unset($channel['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['entry']);
  112.                 }
  113.                 if (isset($channel['child'][SIMPLEPIE_NAMESPACE_RSS_10]['item']))
  114.                 {
  115.                     unset($channel['child'][SIMPLEPIE_NAMESPACE_RSS_10]['item']);
  116.                 }
  117.                 if (isset($channel['child'][SIMPLEPIE_NAMESPACE_RSS_090]['item']))
  118.                 {
  119.                     unset($channel['child'][SIMPLEPIE_NAMESPACE_RSS_090]['item']);
  120.                 }
  121.                 if (isset($channel['child'][SIMPLEPIE_NAMESPACE_RSS_20]['item']))
  122.                 {
  123.                     unset($channel['child'][SIMPLEPIE_NAMESPACE_RSS_20]['item']);
  124.                 }
  125.             }
  126.             if (isset($data->data['items']))
  127.             {
  128.                 unset($data->data['items']);
  129.             }
  130.             if (isset($data->data['ordered_items']))
  131.             {
  132.                 unset($data->data['ordered_items']);
  133.             }
  134.         }
  135.         return array(serialize($data->data), $items_by_id);
  136.     }
  137. }
  138.