Move 'IVirtualFeed' checks into 'PluginHost::get_feed_handler()'.

This commit is contained in:
wn_ 2024-11-12 03:49:58 +00:00
parent dca2ae60a1
commit 5a200755b8
4 changed files with 16 additions and 17 deletions

View File

@ -693,9 +693,7 @@ class API extends Handler {
$handler = PluginHost::getInstance()->get_feed_handler($pfeed_id); $handler = PluginHost::getInstance()->get_feed_handler($pfeed_id);
if ($handler && implements_interface($handler, 'IVirtualFeed')) { if ($handler) {
/** @var Plugin&IVirtualFeed $handler */
$params = array( $params = array(
"feed" => $feed_id, "feed" => $feed_id,
"limit" => $limit, "limit" => $limit,

View File

@ -106,9 +106,7 @@ class Feeds extends Handler_Protected {
$handler = PluginHost::getInstance()->get_feed_handler( $handler = PluginHost::getInstance()->get_feed_handler(
PluginHost::feed_to_pfeed_id($feed)); PluginHost::feed_to_pfeed_id($feed));
if ($handler && implements_interface($handler, 'IVirtualFeed')) { if ($handler) {
/** @var Plugin&IVirtualFeed $handler */
$options = array( $options = array(
"limit" => $limit, "limit" => $limit,
"view_mode" => $view_mode, "view_mode" => $view_mode,
@ -939,12 +937,7 @@ class Feeds extends Handler_Protected {
} 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); $feed_id = PluginHost::feed_to_pfeed_id($feed);
$handler = PluginHost::getInstance()->get_feed_handler($feed_id); $handler = PluginHost::getInstance()->get_feed_handler($feed_id);
if (implements_interface($handler, 'IVirtualFeed')) { return $handler ? $handler->get_unread($feed_id) : 0;
/** @var Plugin&IVirtualFeed $handler */
return $handler->get_unread($feed_id);
} else {
return 0;
}
} else if ($n_feed == Feeds::FEED_RECENTLY_READ) { } else if ($n_feed == Feeds::FEED_RECENTLY_READ) {
return 0; return 0;
// tags // tags

View File

@ -53,8 +53,7 @@ class Handler_Public extends Handler {
$handler = $tmppluginhost->get_feed_handler( $handler = $tmppluginhost->get_feed_handler(
PluginHost::feed_to_pfeed_id((int)$feed)); PluginHost::feed_to_pfeed_id((int)$feed));
if ($handler && implements_interface($handler, 'IVirtualFeed')) { if ($handler) {
/** @var Plugin&IVirtualFeed $handler */
$qfh_ret = $handler->get_headlines(PluginHost::feed_to_pfeed_id((int)$feed), $params); $qfh_ret = $handler->get_headlines(PluginHost::feed_to_pfeed_id((int)$feed), $params);
} else { } else {
user_error("Failed to find handler for plugin feed ID: $feed", E_USER_ERROR); user_error("Failed to find handler for plugin feed ID: $feed", E_USER_ERROR);

View File

@ -782,12 +782,21 @@ class PluginHost {
return $this->feeds[$cat_id] ?? []; 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 { function get_feed_handler(int $pfeed_id): ?Plugin {
foreach ($this->feeds as $cat) { foreach ($this->feeds as $cat) {
foreach ($cat as $feed) { foreach ($cat as $feed) {
if ($feed['id'] == $pfeed_id) { if ($feed['id'] == $pfeed_id) {
if (implements_interface($feed['sender'], 'IVirtualFeed')) {
/** @var Plugin&IVirtualFeed $feed['sender'] */
return $feed['sender']; return $feed['sender'];
} else {
return null;
}
} }
} }
} }