aboutsummaryrefslogtreecommitdiffstats
path: root/vendor/simplepie/simplepie/src/Cache/DB.php
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/simplepie/simplepie/src/Cache/DB.php')
-rw-r--r--vendor/simplepie/simplepie/src/Cache/DB.php82
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');