diff options
Diffstat (limited to 'vendor/simplepie/simplepie/src/Cache/DB.php')
-rw-r--r-- | vendor/simplepie/simplepie/src/Cache/DB.php | 82 |
1 files changed, 73 insertions, 9 deletions
diff --git a/vendor/simplepie/simplepie/src/Cache/DB.php b/vendor/simplepie/simplepie/src/Cache/DB.php index 14bfa41bd..6bb37d283 100644 --- a/vendor/simplepie/simplepie/src/Cache/DB.php +++ b/vendor/simplepie/simplepie/src/Cache/DB.php @@ -5,10 +5,7 @@ * A PHP-Based RSS and Atom Feed Framework. * Takes the hard work out of managing a complete RSS/Atom solution. * - * Please note: This file is automatically generated by a build script. The - * full original source is always available from http://simplepie.org/ - * - * Copyright (c) 2004-2016, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors + * Copyright (c) 2004-2022, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors * All rights reserved. * * Redistribution and use in source and binary forms, with or without modification, are @@ -46,10 +43,77 @@ namespace SimplePie\Cache; -class_exists('SimplePie_Cache_DB'); +/** + * Base class for database-based caches + * + * @package SimplePie + * @subpackage Caching + */ +abstract class DB implements Base +{ + /** + * Helper for database conversion + * + * Converts a given {@see SimplePie} object into data to be stored + * + * @param SimplePie $data + * @return array First item is the serialized data for storage, second item is the unique ID for this item + */ + protected static function prepare_simplepie_object_for_cache($data) + { + $items = $data->get_items(); + $items_by_id = []; -if (\false) { - class DB extends \SimplePie_Cache_DB - { - } + if (!empty($items)) { + foreach ($items as $item) { + $items_by_id[$item->get_id()] = $item; + } + + if (count($items_by_id) !== count($items)) { + $items_by_id = []; + foreach ($items as $item) { + $items_by_id[$item->get_id(true)] = $item; + } + } + + if (isset($data->data['child'][\SimplePie\SimplePie::NAMESPACE_ATOM_10]['feed'][0])) { + $channel =& $data->data['child'][\SimplePie\SimplePie::NAMESPACE_ATOM_10]['feed'][0]; + } elseif (isset($data->data['child'][\SimplePie\SimplePie::NAMESPACE_ATOM_03]['feed'][0])) { + $channel =& $data->data['child'][\SimplePie\SimplePie::NAMESPACE_ATOM_03]['feed'][0]; + } elseif (isset($data->data['child'][\SimplePie\SimplePie::NAMESPACE_RDF]['RDF'][0])) { + $channel =& $data->data['child'][\SimplePie\SimplePie::NAMESPACE_RDF]['RDF'][0]; + } elseif (isset($data->data['child'][\SimplePie\SimplePie::NAMESPACE_RSS_20]['rss'][0]['child'][\SimplePie\SimplePie::NAMESPACE_RSS_20]['channel'][0])) { + $channel =& $data->data['child'][\SimplePie\SimplePie::NAMESPACE_RSS_20]['rss'][0]['child'][\SimplePie\SimplePie::NAMESPACE_RSS_20]['channel'][0]; + } else { + $channel = null; + } + + if ($channel !== null) { + if (isset($channel['child'][\SimplePie\SimplePie::NAMESPACE_ATOM_10]['entry'])) { + unset($channel['child'][\SimplePie\SimplePie::NAMESPACE_ATOM_10]['entry']); + } + if (isset($channel['child'][\SimplePie\SimplePie::NAMESPACE_ATOM_03]['entry'])) { + unset($channel['child'][\SimplePie\SimplePie::NAMESPACE_ATOM_03]['entry']); + } + if (isset($channel['child'][\SimplePie\SimplePie::NAMESPACE_RSS_10]['item'])) { + unset($channel['child'][\SimplePie\SimplePie::NAMESPACE_RSS_10]['item']); + } + if (isset($channel['child'][\SimplePie\SimplePie::NAMESPACE_RSS_090]['item'])) { + unset($channel['child'][\SimplePie\SimplePie::NAMESPACE_RSS_090]['item']); + } + if (isset($channel['child'][\SimplePie\SimplePie::NAMESPACE_RSS_20]['item'])) { + unset($channel['child'][\SimplePie\SimplePie::NAMESPACE_RSS_20]['item']); + } + } + if (isset($data->data['items'])) { + unset($data->data['items']); + } + if (isset($data->data['ordered_items'])) { + unset($data->data['ordered_items']); + } + } + return [serialize($data->data), $items_by_id]; + } } + +class_alias('SimplePie\Cache\DB', 'SimplePie_Cache_DB'); |