Overview

Packages

  • None
  • SimplePie

Classes

  • SimplePie
  • SimplePie_Author
  • SimplePie_Autoloader
  • SimplePie_Cache
  • SimplePie_Cache_DB
  • SimplePie_Cache_File
  • SimplePie_Cache_Memcache
  • SimplePie_Cache_MySQL
  • SimplePie_Caption
  • SimplePie_Category
  • SimplePie_Content_Type_Sniffer
  • SimplePie_Copyright
  • SimplePie_Core
  • SimplePie_Credit
  • SimplePie_Decode_HTML_Entities
  • SimplePie_Enclosure
  • SimplePie_File
  • SimplePie_gzdecode
  • SimplePie_HTTP_Parser
  • SimplePie_IRI
  • SimplePie_Item
  • SimplePie_Locator
  • SimplePie_Misc
  • SimplePie_Net_IPv6
  • SimplePie_Parse_Date
  • SimplePie_Parser
  • SimplePie_Rating
  • SimplePie_Registry
  • SimplePie_Restriction
  • SimplePie_Sanitize
  • SimplePie_Source
  • SimplePie_XML_Declaration_Parser

Interfaces

  • SimplePie_Cache_Base
  • Overview
  • Package
  • Class
  • Tree
  • Deprecated
  • Todo
  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-dev
 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:  */
 50: abstract class SimplePie_Cache_DB implements SimplePie_Cache_Base
 51: {
 52:     /**
 53:      * Helper for database conversion
 54:      *
 55:      * Converts a given {@see SimplePie} object into data to be stored
 56:      *
 57:      * @param SimplePie $data
 58:      * @return array First item is the serialized data for storage, second item is the unique ID for this item
 59:      */
 60:     protected static function prepare_simplepie_object_for_cache(&$data)
 61:     {
 62:         $items = $data->get_items();
 63:         $items_by_id = array();
 64: 
 65:         if (!empty($items))
 66:         {
 67:             foreach ($items as $item)
 68:             {
 69:                 $items_by_id[$item->get_id()] = $item;
 70:             }
 71: 
 72:             if (count($items_by_id) !== count($items))
 73:             {
 74:                 $items_by_id = array();
 75:                 foreach ($items as $item)
 76:                 {
 77:                     $items_by_id[$item->get_id(true)] = $item;
 78:                 }
 79:             }
 80: 
 81:             if (isset($data->data['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['feed'][0]))
 82:             {
 83:                 $channel =& $data->data['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['feed'][0];
 84:             }
 85:             elseif (isset($data->data['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['feed'][0]))
 86:             {
 87:                 $channel =& $data->data['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['feed'][0];
 88:             }
 89:             elseif (isset($data->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0]))
 90:             {
 91:                 $channel =& $data->data['child'][SIMPLEPIE_NAMESPACE_RDF]['RDF'][0];
 92:             }
 93:             elseif (isset($data->data['child'][SIMPLEPIE_NAMESPACE_RSS_20]['rss'][0]['child'][SIMPLEPIE_NAMESPACE_RSS_20]['channel'][0]))
 94:             {
 95:                 $channel =& $data->data['child'][SIMPLEPIE_NAMESPACE_RSS_20]['rss'][0]['child'][SIMPLEPIE_NAMESPACE_RSS_20]['channel'][0];
 96:             }
 97:             else
 98:             {
 99:                 $channel = null;
100:             }
101: 
102:             if ($channel !== null)
103:             {
104:                 if (isset($channel['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['entry']))
105:                 {
106:                     unset($channel['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['entry']);
107:                 }
108:                 if (isset($channel['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['entry']))
109:                 {
110:                     unset($channel['child'][SIMPLEPIE_NAMESPACE_ATOM_03]['entry']);
111:                 }
112:                 if (isset($channel['child'][SIMPLEPIE_NAMESPACE_RSS_10]['item']))
113:                 {
114:                     unset($channel['child'][SIMPLEPIE_NAMESPACE_RSS_10]['item']);
115:                 }
116:                 if (isset($channel['child'][SIMPLEPIE_NAMESPACE_RSS_090]['item']))
117:                 {
118:                     unset($channel['child'][SIMPLEPIE_NAMESPACE_RSS_090]['item']);
119:                 }
120:                 if (isset($channel['child'][SIMPLEPIE_NAMESPACE_RSS_20]['item']))
121:                 {
122:                     unset($channel['child'][SIMPLEPIE_NAMESPACE_RSS_20]['item']);
123:                 }
124:             }
125:             if (isset($data->data['items']))
126:             {
127:                 unset($data->data['items']);
128:             }
129:             if (isset($data->data['ordered_items']))
130:             {
131:                 unset($data->data['ordered_items']);
132:             }
133:         }
134:         return array(serialize($data->data), $items_by_id);
135:     }
136: }
137: 
SimplePie Documentation API documentation generated by ApiGen 2.4.0