From c09cca75b50d94b2d0d14f43b1136527364573d0 Mon Sep 17 00:00:00 2001 From: Benjamin Brahmer Date: Sat, 6 Aug 2022 14:07:36 +0200 Subject: Fix deprecations add phpstan deprecation rules Co-authored-by: Sean Molenaar Signed-off-by: Benjamin Brahmer --- composer.json | 1 + composer.lock | 52 +++++++++++++++++++++++++++++++++++++++++++- lib/Db/Item.php | 19 +++++++++------- lib/Fetcher/FeedFetcher.php | 9 ++++++-- lib/Utility/OPMLExporter.php | 20 ++++++++++++----- 5 files changed, 85 insertions(+), 16 deletions(-) diff --git a/composer.json b/composer.json index 2f27628e1..3ccc11e7e 100644 --- a/composer.json +++ b/composer.json @@ -61,6 +61,7 @@ "phpstan/phpstan-strict-rules": "^1.3.0", "phpstan/phpstan-phpunit": "^1.0.0", "phpstan/extension-installer": "^1.1.0", + "phpstan/phpstan-deprecation-rules": "^1.0", "guzzlehttp/guzzle": "^7.3.0", "doctrine/dbal": "^3.4.1", "symfony/console": "^4.4.19", diff --git a/composer.lock b/composer.lock index 4c18475e7..87a91e3da 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "be4b7c96428a2a97bc7b232d8f1c66f9", + "content-hash": "9b976f8d731e7bdeb9206e114975dd04", "packages": [ { "name": "arthurhoaro/favicon", @@ -1333,6 +1333,56 @@ ], "time": "2022-07-20T09:57:31+00:00" }, + { + "name": "phpstan/phpstan-deprecation-rules", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/phpstan/phpstan-deprecation-rules.git", + "reference": "e5ccafb0dd8d835dd65d8d7a1a0d2b1b75414682" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpstan/phpstan-deprecation-rules/zipball/e5ccafb0dd8d835dd65d8d7a1a0d2b1b75414682", + "reference": "e5ccafb0dd8d835dd65d8d7a1a0d2b1b75414682", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0", + "phpstan/phpstan": "^1.0" + }, + "require-dev": { + "php-parallel-lint/php-parallel-lint": "^1.2", + "phpstan/phpstan-phpunit": "^1.0", + "phpunit/phpunit": "^9.5" + }, + "type": "phpstan-extension", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + }, + "phpstan": { + "includes": [ + "rules.neon" + ] + } + }, + "autoload": { + "psr-4": { + "PHPStan\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "PHPStan rules for detecting usage of deprecated classes, methods, properties, constants and traits.", + "support": { + "issues": "https://github.com/phpstan/phpstan-deprecation-rules/issues", + "source": "https://github.com/phpstan/phpstan-deprecation-rules/tree/1.0.0" + }, + "time": "2021-09-23T11:02:21+00:00" + }, { "name": "phpstan/phpstan-doctrine", "version": "1.3.12", diff --git a/lib/Db/Item.php b/lib/Db/Item.php index 0ed9e9113..17bf4a048 100644 --- a/lib/Db/Item.php +++ b/lib/Db/Item.php @@ -170,10 +170,9 @@ class Item extends Entity implements IAPI, \JsonSerializable ? implode('', $this->getCategories()) : ''; + $stripedBody = ""; if (!is_null($this->getBody())) { $stripedBody = strip_tags($this->getBody()); - } else { - $stripedBody = ""; } $input_list = array($stripedBody, $this->getAuthor(), $this->getTitle(), $categoriesString); @@ -181,17 +180,14 @@ class Item extends Entity implements IAPI, \JsonSerializable $search_string = ""; foreach ($input_list as $value) { - if (is_null($value)) { - $search_string .= ""; - } else { + if (!is_null($value)) { $search_string .= html_entity_decode($value); } } $search_string .= $this->getUrl(); - $search_string .= 'UTF-8'; - $this->setSearchIndex(mb_strtolower($search_string)); + $this->setSearchIndex(mb_strtolower($search_string, 'UTF-8')); $this->setFingerprint($this->computeFingerprint()); $this->setContentHash($this->computeContentHash()); } @@ -358,6 +354,9 @@ class Item extends Entity implements IAPI, \JsonSerializable */ public function getCategories(): ?array { + if (is_null($this->getCategoriesJson())) { + return null; + } return json_decode($this->getCategoriesJson()); } @@ -606,6 +605,10 @@ class Item extends Entity implements IAPI, \JsonSerializable public function setUrl(string $url = null): self { + if (is_null($url)) { + return $this; + } + $url = trim($url); if ((strpos($url, 'http') === 0 || strpos($url, 'magnet') === 0) && $this->url !== $url @@ -613,7 +616,7 @@ class Item extends Entity implements IAPI, \JsonSerializable $this->url = $url; $this->markFieldUpdated('url'); } - + return $this; } diff --git a/lib/Fetcher/FeedFetcher.php b/lib/Fetcher/FeedFetcher.php index 209722c97..86e0edd18 100755 --- a/lib/Fetcher/FeedFetcher.php +++ b/lib/Fetcher/FeedFetcher.php @@ -354,9 +354,14 @@ class FeedFetcher implements IFeedFetcher */ protected function getFavicon(FeedInterface $feed, string $url) { + $favicon = null; // trim the string because authors do funny things - $favicon = trim($feed->getLogo()); - + $feed_logo = $feed->getLogo(); + + if (!is_null($feed_logo)) { + $favicon = trim($feed_logo); + } + ini_set('user_agent', 'NextCloud-News/1.0'); $base_url = new Net_URL2($url); diff --git a/lib/Utility/OPMLExporter.php b/lib/Utility/OPMLExporter.php index aa06f5dbf..bb813daf8 100644 --- a/lib/Utility/OPMLExporter.php +++ b/lib/Utility/OPMLExporter.php @@ -90,11 +90,21 @@ class OPMLExporter protected function createFeedOutline(Feed $feed, DOMDocument $document) { $feedOutline = $document->createElement('outline'); - $feedOutline->setAttribute('title', $feed->getTitle()); - $feedOutline->setAttribute('text', $feed->getTitle()); - $feedOutline->setAttribute('type', 'rss'); - $feedOutline->setAttribute('xmlUrl', $feed->getUrl()); - $feedOutline->setAttribute('htmlUrl', $feed->getLink()); + $attributes = [ + ['title', $feed->getTitle()], + ['text', $feed->getTitle()], + ['type', 'rss'], + ['xmlUrl', $feed->getUrl()], + ['htmlUrl', $feed->getLink()], + ]; + + foreach ($attributes as $attribute) { + if (is_null($attribute[1])) { + $feedOutline->setAttribute($attribute[0], ""); + } else { + $feedOutline->setAttribute($attribute[0], $attribute[1]); + } + } return $feedOutline; } -- cgit v1.2.3