[ Index ]

PHP Cross Reference of Unnamed Project

title

Body

[close]

/lib/simplepie/library/SimplePie/Cache/ -> DB.php (source)

   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  }


Generated: Thu Aug 11 10:00:09 2016 Cross-referenced by PHPXref 0.7.1