From 5a200755b8afd8e719214f19b51a38dc8870fe09 Mon Sep 17 00:00:00 2001 From: wn_ Date: Tue, 12 Nov 2024 03:49:58 +0000 Subject: [PATCH] Move 'IVirtualFeed' checks into 'PluginHost::get_feed_handler()'. --- classes/API.php | 4 +--- classes/Feeds.php | 13 +++---------- classes/Handler_Public.php | 3 +-- classes/PluginHost.php | 13 +++++++++++-- 4 files changed, 16 insertions(+), 17 deletions(-) diff --git a/classes/API.php b/classes/API.php index d44a7eaea..826d1f333 100644 --- a/classes/API.php +++ b/classes/API.php @@ -693,9 +693,7 @@ class API extends Handler { $handler = PluginHost::getInstance()->get_feed_handler($pfeed_id); - if ($handler && implements_interface($handler, 'IVirtualFeed')) { - /** @var Plugin&IVirtualFeed $handler */ - + if ($handler) { $params = array( "feed" => $feed_id, "limit" => $limit, diff --git a/classes/Feeds.php b/classes/Feeds.php index 22f34f719..b4df690a7 100644 --- a/classes/Feeds.php +++ b/classes/Feeds.php @@ -106,9 +106,7 @@ class Feeds extends Handler_Protected { $handler = PluginHost::getInstance()->get_feed_handler( PluginHost::feed_to_pfeed_id($feed)); - if ($handler && implements_interface($handler, 'IVirtualFeed')) { - /** @var Plugin&IVirtualFeed $handler */ - + if ($handler) { $options = array( "limit" => $limit, "view_mode" => $view_mode, @@ -936,15 +934,10 @@ class Feeds extends Handler_Protected { if ($is_cat) { return self::_get_cat_unread($n_feed, $owner_uid); - } else if(is_numeric($feed) && $feed < PLUGIN_FEED_BASE_INDEX && $feed > LABEL_BASE_INDEX) { // virtual Feed + } else if (is_numeric($feed) && $feed < PLUGIN_FEED_BASE_INDEX && $feed > LABEL_BASE_INDEX) { // virtual Feed $feed_id = PluginHost::feed_to_pfeed_id($feed); $handler = PluginHost::getInstance()->get_feed_handler($feed_id); - if (implements_interface($handler, 'IVirtualFeed')) { - /** @var Plugin&IVirtualFeed $handler */ - return $handler->get_unread($feed_id); - } else { - return 0; - } + return $handler ? $handler->get_unread($feed_id) : 0; } else if ($n_feed == Feeds::FEED_RECENTLY_READ) { return 0; // tags diff --git a/classes/Handler_Public.php b/classes/Handler_Public.php index be4254783..518dcad05 100644 --- a/classes/Handler_Public.php +++ b/classes/Handler_Public.php @@ -53,8 +53,7 @@ class Handler_Public extends Handler { $handler = $tmppluginhost->get_feed_handler( PluginHost::feed_to_pfeed_id((int)$feed)); - if ($handler && implements_interface($handler, 'IVirtualFeed')) { - /** @var Plugin&IVirtualFeed $handler */ + if ($handler) { $qfh_ret = $handler->get_headlines(PluginHost::feed_to_pfeed_id((int)$feed), $params); } else { user_error("Failed to find handler for plugin feed ID: $feed", E_USER_ERROR); diff --git a/classes/PluginHost.php b/classes/PluginHost.php index b54e48d4f..608355158 100644 --- a/classes/PluginHost.php +++ b/classes/PluginHost.php @@ -782,12 +782,21 @@ class PluginHost { return $this->feeds[$cat_id] ?? []; } - // convert feed_id (e.g. -129) to pfeed_id first + /** + * convert feed_id (e.g. -129) to pfeed_id first + * + * @return (Plugin&IVirtualFeed)|null + */ function get_feed_handler(int $pfeed_id): ?Plugin { foreach ($this->feeds as $cat) { foreach ($cat as $feed) { if ($feed['id'] == $pfeed_id) { - return $feed['sender']; + if (implements_interface($feed['sender'], 'IVirtualFeed')) { + /** @var Plugin&IVirtualFeed $feed['sender'] */ + return $feed['sender']; + } else { + return null; + } } } }