1 <?php 2 3 declare(strict_types=1); 4 /** 5 * SimplePie 6 * 7 * A PHP-Based RSS and Atom Feed Framework. 8 * Takes the hard work out of managing a complete RSS/Atom solution. 9 * 10 * Copyright (c) 2004-2022, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors 11 * All rights reserved. 12 * 13 * Redistribution and use in source and binary forms, with or without modification, are 14 * permitted provided that the following conditions are met: 15 * 16 * * Redistributions of source code must retain the above copyright notice, this list of 17 * conditions and the following disclaimer. 18 * 19 * * Redistributions in binary form must reproduce the above copyright notice, this list 20 * of conditions and the following disclaimer in the documentation and/or other materials 21 * provided with the distribution. 22 * 23 * * Neither the name of the SimplePie Team nor the names of its contributors may be used 24 * to endorse or promote products derived from this software without specific prior 25 * written permission. 26 * 27 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS 28 * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY 29 * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS 30 * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 31 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 32 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 33 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 34 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 35 * POSSIBILITY OF SUCH DAMAGE. 36 * 37 * @package SimplePie 38 * @copyright 2004-2016 Ryan Parman, Sam Sneddon, Ryan McCue 39 * @author Ryan Parman 40 * @author Sam Sneddon 41 * @author Ryan McCue 42 * @link http://simplepie.org/ SimplePie 43 * @license http://www.opensource.org/licenses/bsd-license.php BSD License 44 */ 45 46 namespace SimplePie\Cache; 47 48 /** 49 * Base class for database-based caches 50 * 51 * @package SimplePie 52 * @subpackage Caching 53 * @deprecated since SimplePie 1.8.0, use implementation of "Psr\SimpleCache\CacheInterface" instead 54 */ 55 abstract class DB implements Base 56 { 57 /** 58 * Helper for database conversion 59 * 60 * Converts a given {@see SimplePie} object into data to be stored 61 * 62 * @param \SimplePie\SimplePie $data 63 * @return array First item is the serialized data for storage, second item is the unique ID for this item 64 */ 65 protected static function prepare_simplepie_object_for_cache($data) 66 { 67 $items = $data->get_items(); 68 $items_by_id = []; 69 70 if (!empty($items)) { 71 foreach ($items as $item) { 72 $items_by_id[$item->get_id()] = $item; 73 } 74 75 if (count($items_by_id) !== count($items)) { 76 $items_by_id = []; 77 foreach ($items as $item) { 78 $items_by_id[$item->get_id(true)] = $item; 79 } 80 } 81 82 if (isset($data->data['child'][\SimplePie\SimplePie::NAMESPACE_ATOM_10]['feed'][0])) { 83 $channel =& $data->data['child'][\SimplePie\SimplePie::NAMESPACE_ATOM_10]['feed'][0]; 84 } elseif (isset($data->data['child'][\SimplePie\SimplePie::NAMESPACE_ATOM_03]['feed'][0])) { 85 $channel =& $data->data['child'][\SimplePie\SimplePie::NAMESPACE_ATOM_03]['feed'][0]; 86 } elseif (isset($data->data['child'][\SimplePie\SimplePie::NAMESPACE_RDF]['RDF'][0])) { 87 $channel =& $data->data['child'][\SimplePie\SimplePie::NAMESPACE_RDF]['RDF'][0]; 88 } elseif (isset($data->data['child'][\SimplePie\SimplePie::NAMESPACE_RSS_20]['rss'][0]['child'][\SimplePie\SimplePie::NAMESPACE_RSS_20]['channel'][0])) { 89 $channel =& $data->data['child'][\SimplePie\SimplePie::NAMESPACE_RSS_20]['rss'][0]['child'][\SimplePie\SimplePie::NAMESPACE_RSS_20]['channel'][0]; 90 } else { 91 $channel = null; 92 } 93 94 if ($channel !== null) { 95 if (isset($channel['child'][\SimplePie\SimplePie::NAMESPACE_ATOM_10]['entry'])) { 96 unset($channel['child'][\SimplePie\SimplePie::NAMESPACE_ATOM_10]['entry']); 97 } 98 if (isset($channel['child'][\SimplePie\SimplePie::NAMESPACE_ATOM_03]['entry'])) { 99 unset($channel['child'][\SimplePie\SimplePie::NAMESPACE_ATOM_03]['entry']); 100 } 101 if (isset($channel['child'][\SimplePie\SimplePie::NAMESPACE_RSS_10]['item'])) { 102 unset($channel['child'][\SimplePie\SimplePie::NAMESPACE_RSS_10]['item']); 103 } 104 if (isset($channel['child'][\SimplePie\SimplePie::NAMESPACE_RSS_090]['item'])) { 105 unset($channel['child'][\SimplePie\SimplePie::NAMESPACE_RSS_090]['item']); 106 } 107 if (isset($channel['child'][\SimplePie\SimplePie::NAMESPACE_RSS_20]['item'])) { 108 unset($channel['child'][\SimplePie\SimplePie::NAMESPACE_RSS_20]['item']); 109 } 110 } 111 if (isset($data->data['items'])) { 112 unset($data->data['items']); 113 } 114 if (isset($data->data['ordered_items'])) { 115 unset($data->data['ordered_items']); 116 } 117 } 118 return [serialize($data->data), $items_by_id]; 119 } 120 } 121 122 class_alias('SimplePie\Cache\DB', 'SimplePie_Cache_DB');
title
Description
Body
title
Description
Body
title
Description
Body
title
Body