From 0dab51e26f309d9bf92d023e6e5737d5ca83c72e Mon Sep 17 00:00:00 2001 From: Dag Date: Tue, 6 Sep 2022 00:14:20 +0200 Subject: [PATCH] fix: php errors (#3013) * fix: php error in tiktok bridge * fix: notice in craigslist * fix: php notice in wordpress bridge * feat: improve ux in telegram bridge --- bridges/CraigslistBridge.php | 8 +++++--- bridges/TelegramBridge.php | 16 ++++++++-------- bridges/TikTokBridge.php | 3 ++- bridges/WordPressBridge.php | 2 +- 4 files changed, 16 insertions(+), 13 deletions(-) diff --git a/bridges/CraigslistBridge.php b/bridges/CraigslistBridge.php index d56c770e..a230422e 100644 --- a/bridges/CraigslistBridge.php +++ b/bridges/CraigslistBridge.php @@ -89,9 +89,11 @@ class CraigslistBridge extends BridgeAbstract $item['title'] = $heading->plaintext; $item['timestamp'] = $post->find('.result-date', 0)->datetime; $item['uid'] = $heading->id; - $item['content'] = $post->find('.result-price', 0)->plaintext . ' ' - // Find the location (local and nearby results if searchNearby=1) - . $post->find('.result-hood, span.nearby', 0)->plaintext; + + $price = $post->find('.result-price', 0)->plaintext ?? ''; + // Find the location (local and nearby results if searchNearby=1) + $nearby = $post->find('.result-hood, span.nearby', 0)->plaintext ?? ''; + $item['content'] = sprintf('%s %s', $price, $nearby); $images = $post->find('.result-image[data-ids]', 0); if (!is_null($images)) { diff --git a/bridges/TelegramBridge.php b/bridges/TelegramBridge.php index 40d02679..7daeeea3 100644 --- a/bridges/TelegramBridge.php +++ b/bridges/TelegramBridge.php @@ -4,7 +4,7 @@ class TelegramBridge extends BridgeAbstract { const NAME = 'Telegram Bridge'; const URI = 'https://t.me'; - const DESCRIPTION = 'Returns newest posts from a public Telegram channel'; + const DESCRIPTION = 'Returns newest posts from a *public* Telegram channel'; const MAINTAINER = 'VerifiedJoseph'; const PARAMETERS = [[ 'username' => [ @@ -49,14 +49,14 @@ class TelegramBridge extends BridgeAbstract { $html = getSimpleHTMLDOM($this->getURI()); - $channelTitle = htmlspecialchars_decode( - $html->find('div.tgme_channel_info_header_title span', 0)->plaintext, - ENT_QUOTES - ); - + $channelTitle = $html->find('div.tgme_channel_info_header_title span', 0)->plaintext ?? ''; + $channelTitle = htmlspecialchars_decode($channelTitle, ENT_QUOTES); $this->feedName = $channelTitle . ' (@' . $this->processUsername() . ')'; - - foreach ($html->find('div.tgme_widget_message_wrap.js-widget_message_wrap') as $index => $messageDiv) { + $posts = $html->find('div.tgme_widget_message_wrap.js-widget_message_wrap'); + if (!$channelTitle && !$posts) { + throw new \Exception('Unable to find channel. The channel is non-existing or non-public.'); + } + foreach ($posts as $messageDiv) { $this->itemTitle = ''; $this->enclosures = []; $item = []; diff --git a/bridges/TikTokBridge.php b/bridges/TikTokBridge.php index 41da917f..2a038245 100644 --- a/bridges/TikTokBridge.php +++ b/bridges/TikTokBridge.php @@ -42,7 +42,8 @@ class TikTokBridge extends BridgeAbstract { $html = getSimpleHTMLDOM($this->getURI()); - $this->feedName = htmlspecialchars_decode($html->find('h1', 0)->plaintext); + $title = $html->find('h1', 0)->plaintext ?? self::NAME; + $this->feedName = htmlspecialchars_decode($title); foreach ($html->find('div.tiktok-x6y88p-DivItemContainerV2') as $div) { $item = []; diff --git a/bridges/WordPressBridge.php b/bridges/WordPressBridge.php index ca004547..b09936e0 100644 --- a/bridges/WordPressBridge.php +++ b/bridges/WordPressBridge.php @@ -79,7 +79,7 @@ class WordPressBridge extends FeedExpander if (empty($item['enclosures'])) { $item['enclosures'] = [$article_image]; } else { - $item['enclosures'] = array_merge($item['enclosures'], $article_image); + $item['enclosures'] = array_merge($item['enclosures'], (array) $article_image); } }