Differences Between: [Versions 310 and 311] [Versions 311 and 401] [Versions 311 and 402] [Versions 311 and 403] [Versions 39 and 311]
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-2016, Ryan Parman, Sam 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 * @copyright 2004-2016 Ryan Parman, Sam Sneddon, Ryan McCue 37 * @author Ryan Parman 38 * @author Sam Sneddon 39 * @author Ryan McCue 40 * @link http://simplepie.org/ SimplePie 41 * @license http://www.opensource.org/licenses/bsd-license.php BSD License 42 */ 43 44 /** 45 * Base class for database-based caches 46 * 47 * @package SimplePie 48 * @subpackage Caching 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 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body