]> git.mxchange.org Git - friendica.git/blobdiff - src/Model/Post/Link.php
Fix uddate issues and improve speed when displaying contact posts
[friendica.git] / src / Model / Post / Link.php
index 83e5bea99fe000a62649f5497e4e910254d2a1a2..87bc457524ede28dcb820b086dfbad969be5c74e 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /**
- * @copyright Copyright (C) 2010-2022, the Friendica project
+ * @copyright Copyright (C) 2010-2023, the Friendica project
  *
  * @license GNU AGPL version 3 or any later version
  *
@@ -22,7 +22,6 @@
 namespace Friendica\Model\Post;
 
 use Friendica\Core\Logger;
-use Friendica\Core\System;
 use Friendica\Database\Database;
 use Friendica\Database\DBA;
 use Friendica\DI;
@@ -58,7 +57,7 @@ class Link
         * @param int $uriId
         * @param string $url
         * @param string $size
-        * @return string Found link URL + id on success, $url on failture
+        * @return string Found link URL + id on success, $url on failure
         */
        public static function getByLink(int $uriId, string $url, string $size = ''): string
        {
@@ -67,7 +66,7 @@ class Link
                }
 
                if (!in_array(parse_url($url, PHP_URL_SCHEME), ['http', 'https'])) {
-                       Logger::info('Bad URL, quitting', ['uri-id' => $uriId, 'url' => $url, 'callstack' => System::callstack(20)]);
+                       Logger::info('Bad URL, quitting', ['uri-id' => $uriId, 'url' => $url]);
                        return $url;
                }
 
@@ -75,7 +74,7 @@ class Link
                if (!empty($link['id'])) {
                        $id = $link['id'];
                        Logger::info('Found', ['id' => $id, 'uri-id' => $uriId, 'url' => $url]);
-               } else { 
+               } else {
                        $fields = self::fetchMimeType($url);
                        $fields['uri-id'] = $uriId;
                        $fields['url'] = $url;
@@ -125,8 +124,13 @@ class Link
        {
                $timeout = DI::config()->get('system', 'xrd_timeout');
 
-               $curlResult = HTTPSignature::fetchRaw($url, 0, [HttpClientOptions::TIMEOUT => $timeout, HttpClientOptions::ACCEPT_CONTENT => $accept]);
-               if (!$curlResult->isSuccess()) {
+               try {
+                       $curlResult = HTTPSignature::fetchRaw($url, 0, [HttpClientOptions::TIMEOUT => $timeout, HttpClientOptions::ACCEPT_CONTENT => $accept]);
+                       if (empty($curlResult) || !$curlResult->isSuccess()) {
+                               return [];
+                       }
+               } catch (\Exception $exception) {
+                       Logger::notice('Error fetching url', ['url' => $url, 'exception' => $exception]);
                        return [];
                }
                $fields = ['mimetype' => $curlResult->getHeader('Content-Type')[0]];