Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: do not request favicon for empty base URL #2096

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,10 @@ The format is mostly based on [Keep a Changelog](https://keepachangelog.com/en/1
## [21.x.x]
### Changed
- Drop support for Nextcloud 23 (#2077 )
- Make the "open" keyboard shortcut work faster (#2080)
- Make the "open" keyboard shortcut work faster (#2080)

### Fixed
- Stop errors from the favicon library over empty values

# Releases
## [20.0.1] - 2023-01-19
Expand Down
22 changes: 15 additions & 7 deletions lib/Fetcher/FeedFetcher.php
Original file line number Diff line number Diff line change
Expand Up @@ -352,9 +352,9 @@ protected function buildItem(
* @param FeedInterface $feed Feed to check for a logo
* @param string $url Original URL for the feed
*
* @return string|mixed|bool
* @return string|null
*/
protected function getFavicon(FeedInterface $feed, string $url)
protected function getFavicon(FeedInterface $feed, string $url): ?string
{
$favicon = null;
// trim the string because authors do funny things
Expand All @@ -370,9 +370,15 @@ protected function getFavicon(FeedInterface $feed, string $url)
$base_url->setPath("");
$base_url = $base_url->getNormalizedURL();

// Return if the URL is empty
if ($base_url === null || trim($base_url) === '') {
return null;
}

// check if feed has a logo entry
if (is_null($favicon) || $favicon === '') {
return $this->faviconFactory->get($base_url);
if ($favicon === null || $favicon === '') {
$return = $this->faviconFactory->get($base_url);
return is_string($return) ? $return : null;
}

// logo will be saved in the tmp folder provided by Nextcloud, file is named as md5 of the url
Expand Down Expand Up @@ -424,16 +430,18 @@ protected function getFavicon(FeedInterface $feed, string $url)

// check if file is actually an image
if (!$is_image) {
return $this->faviconFactory->get($base_url);
$return = $this->faviconFactory->get($base_url);
return is_string($return) ? $return : null;
}

list($width, $height, $type, $attr) = getimagesize($favicon_path);
// check if image is square else fall back to favicon
if ($width !== $height) {
return $this->faviconFactory->get($base_url);
$return = $this->faviconFactory->get($base_url);
return is_string($return) ? $return : null;
}

return $favicon;
return is_string($favicon) ? $favicon : null;
}

/**
Expand Down