diff options
| author | 2023-05-15 19:26:48 +0200 | |
|---|---|---|
| committer | 2023-05-15 19:26:48 +0200 | |
| commit | 2038d50110468d95ff978ba2e8f997175f25ff3b (patch) | |
| tree | a9bc4bc364fe0c9b452702f3324a2091229e5fce /app/Models/Feed.php | |
| parent | c8d2ead7635e58a5c78d95a9b9a1a74e99a1bcef (diff) | |
PHPStan Level 7 for Minz_Request, FreshRSS_Feed, Minz_Error (#5400)
* PHPStan Level 7 for Minz_Request
* PHPStan Level 7 for FreshRSS_Feed
* PHPStan Level 7 for Minz_Error
Diffstat (limited to 'app/Models/Feed.php')
| -rw-r--r-- | app/Models/Feed.php | 41 |
1 files changed, 24 insertions, 17 deletions
diff --git a/app/Models/Feed.php b/app/Models/Feed.php index b418d2641..09f0ef068 100644 --- a/app/Models/Feed.php +++ b/app/Models/Feed.php @@ -175,8 +175,13 @@ class FreshRSS_Feed extends Minz_Model { return $this->httpAuth; } else { $pos_colon = strpos($this->httpAuth, ':'); - $user = substr($this->httpAuth, 0, $pos_colon); - $pass = substr($this->httpAuth, $pos_colon + 1); + if ($pos_colon !== false) { + $user = substr($this->httpAuth, 0, $pos_colon); + $pass = substr($this->httpAuth, $pos_colon + 1); + } else { + $user = ''; + $pass = ''; + } return array( 'username' => $user, @@ -234,6 +239,7 @@ class FreshRSS_Feed extends Minz_Model { return $this->nbNotRead + ($includePending ? $this->nbPendingNotRead : 0); } + public function faviconPrepare(): void { require_once(LIB_PATH . '/favicons.php'); $url = $this->website; @@ -252,10 +258,13 @@ class FreshRSS_Feed extends Minz_Model { ($ico_mtime == false || $ico_mtime < $txt_mtime || ($ico_mtime < time() - (14 * 86400)))) { // no ico file or we should download a new one. $url = file_get_contents($txt); - download_favicon($url, $ico) || touch($ico); + if ($url == false || !download_favicon($url, $ico)) { + touch($ico); + } } } } + public static function faviconDelete(string $hash): void { $path = DATA_PATH . '/favicons/' . $hash; @unlink($path . '.ico'); @@ -392,21 +401,16 @@ class FreshRSS_Feed extends Minz_Model { if ((!$mtime) || $simplePie->error()) { $errorMessage = $simplePie->error(); throw new FreshRSS_Feed_Exception( - ($errorMessage == '' ? 'Unknown error for feed' : $errorMessage) . ' [' . $this->url . ']', + ($errorMessage == '' ? 'Unknown error for feed' : json_encode($errorMessage, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_LINE_TERMINATORS)) . + ' [' . $this->url . ']', $simplePie->status_code() ); } $links = $simplePie->get_links('self'); - $this->selfUrl = empty($links[0]) ? '' : checkUrl($links[0]); - if ($this->selfUrl == false) { - $this->selfUrl = ''; - } + $this->selfUrl = empty($links[0]) ? '' : (checkUrl($links[0]) ?: ''); $links = $simplePie->get_links('hub'); - $this->hubUrl = empty($links[0]) ? '' : checkUrl($links[0]); - if ($this->hubUrl == false) { - $this->hubUrl = ''; - } + $this->hubUrl = empty($links[0]) ? '' : (checkUrl($links[0]) ?: ''); if ($loadDetails) { // si on a utilisé l’auto-discover, notre url va avoir changé @@ -494,7 +498,7 @@ class FreshRSS_Feed extends Minz_Model { $title = html_only_entity_decode(strip_tags($item->get_title() ?? '')); $authors = $item->get_authors(); $link = $item->get_permalink(); - $date = @strtotime($item->get_date() ?? ''); + $date = @strtotime((string)($item->get_date() ?? '')) ?: 0; //Tag processing (tag == category) $categories = $item->get_categories(); @@ -696,9 +700,11 @@ class FreshRSS_Feed extends Minz_Model { $item['thumbnail'] = $xPathItemThumbnail == '' ? '' : @$xpath->evaluate('normalize-space(' . $xPathItemThumbnail . ')', $node); if ($xPathItemCategories != '') { $itemCategories = @$xpath->query($xPathItemCategories, $node); - if ($itemCategories) { + if ($itemCategories !== false) { + $item['tags'] = []; + /** @var DOMNode $itemCategory */ foreach ($itemCategories as $itemCategory) { - $item['categories'][] = $itemCategory->textContent; + $item['tags'][] = $itemCategory->textContent; } } } @@ -711,7 +717,7 @@ class FreshRSS_Feed extends Minz_Model { if ($item['title'] != '' || $item['content'] != '' || $item['link'] != '') { // HTML-encoding/escaping of the relevant fields (all except 'content') - foreach (['author', 'categories', 'guid', 'link', 'thumbnail', 'timestamp', 'title'] as $key) { + foreach (['author', 'guid', 'link', 'thumbnail', 'timestamp', 'tags', 'title'] as $key) { if (!empty($item[$key]) && is_string($item[$key])) { $item[$key] = Minz_Helper::htmlspecialchars_utf8($item[$key]); } @@ -748,6 +754,7 @@ class FreshRSS_Feed extends Minz_Model { if ($keepMaxUnread === null) { $keepMaxUnread = FreshRSS_Context::$user_conf->mark_when['max_n_unread']; } + $keepMaxUnread = (int)$keepMaxUnread; if ($keepMaxUnread > 0 && $this->nbNotRead(false) + $this->nbPendingNotRead > $keepMaxUnread) { $feedDAO = FreshRSS_Factory::createFeedDao(); return $feedDAO->keepMaxUnread($this->id(), max(0, $keepMaxUnread - $this->nbPendingNotRead)); @@ -821,7 +828,7 @@ class FreshRSS_Feed extends Minz_Model { public function lock(): bool { $this->lockPath = TMP_PATH . '/' . $this->hash() . '.freshrss.lock'; - if (file_exists($this->lockPath) && ((time() - @filemtime($this->lockPath)) > 3600)) { + if (file_exists($this->lockPath) && ((time() - (@filemtime($this->lockPath) ?: 0)) > 3600)) { @unlink($this->lockPath); } if (($handle = @fopen($this->lockPath, 'x')) === false) { |
