]> git.mxchange.org Git - friendica.git/blobdiff - src/Protocol/Diaspora.php
Better handling of displaying peertube videos
[friendica.git] / src / Protocol / Diaspora.php
index 53140521d0634a1a35415355a0f050a46b2e3435..48d7a3371cbfd49c62700b2da5fd30701f940213 100644 (file)
@@ -1077,7 +1077,7 @@ class Diaspora
 
                Logger::log("Fetch post from ".$source_url, Logger::DEBUG);
 
-               $envelope = DI::httpRequest()->fetch($source_url);
+               $envelope = DI::httpClient()->fetch($source_url);
                if ($envelope) {
                        Logger::log("Envelope was fetched.", Logger::DEBUG);
                        $x = self::verifyMagicEnvelope($envelope);
@@ -3022,7 +3022,7 @@ class Diaspora
                if (!intval(DI::config()->get("system", "diaspora_test"))) {
                        $content_type = (($public_batch) ? "application/magic-envelope+xml" : "application/json");
 
-                       $postResult = DI::httpRequest()->post($dest_url . "/", $envelope, ["Content-Type: " . $content_type]);
+                       $postResult = DI::httpClient()->post($dest_url . "/", $envelope, ['Content-Type' => $content_type]);
                        $return_code = $postResult->getReturnCode();
                } else {
                        Logger::log("test_mode");
@@ -3082,6 +3082,11 @@ class Diaspora
                        if (!empty($fcontact)) {
                                $pubkey = $fcontact['pubkey'];
                        }
+               } else {
+                       // The "addr" field should always be filled.
+                       // If this isn't the case, it will raise a notice some lines later.
+                       // And in the log we will see where it came from and we can handle it there.
+                       Logger::notice('Empty addr', ['contact' => $contact ?? [], 'callstack' => System::callstack(20)]);
                }
 
                $envelope = self::buildMessage($msg, $owner, $contact, $owner['uprvkey'], $pubkey, $public_batch);
@@ -3928,7 +3933,7 @@ class Diaspora
                        $dob = '';
 
                        if ($profile['dob'] && ($profile['dob'] > '0000-00-00')) {
-                               list($year, $month, $day) = sscanf($profile['dob'], '%4d-%2d-%2d');
+                               [$year, $month, $day] = sscanf($profile['dob'], '%4d-%2d-%2d');
                                if ($year < 1004) {
                                        $year = 1004;
                                }
@@ -3988,13 +3993,7 @@ class Diaspora
                }
 
                if (!$recips) {
-                       $recips = q(
-                               "SELECT `id`,`name`,`network`,`pubkey`,`notify` FROM `contact` WHERE `network` = '%s'
-                               AND `uid` = %d AND `rel` != %d",
-                               DBA::escape(Protocol::DIASPORA),
-                               intval($uid),
-                               intval(Contact::SHARING)
-                       );
+                       $recips = DBA::selectToArray('contact', [], ['network' => Protocol::DIASPORA, 'uid' => $uid, 'rel' => [Contact::FOLLOWER, Contact::FRIEND]]);
                }
 
                if (!$recips) {
@@ -4044,14 +4043,30 @@ class Diaspora
        /**
         * Creates the signature for Comments that are created on our system
         *
-        * @param integer $uid  The user of that comment
         * @param array   $item Item array
         *
         * @return array Signed content
         * @throws \Exception
         */
-       public static function createCommentSignature($uid, array $item)
+       public static function createCommentSignature(array $item)
        {
+               if (!empty($item['author-link'])) {
+                       $url = $item['author-link'];
+               } else {
+                       $contact = Contact::getById($item['author-id'], ['url']);
+                       if (empty($contact['url'])) {
+                               Logger::warning('Author Contact not found', ['author-id' => $item['author-id']]);
+                               return false;
+                       }
+                       $url = $contact['url'];
+               }
+
+               $uid = User::getIdForURL($url);
+               if (empty($uid)) {
+                       Logger::info('No owner post, so not storing signature', ['url' => $contact['url']]);
+                       return false;
+               }
+
                $owner = User::getOwnerDataById($uid);
                if (empty($owner)) {
                        Logger::info('No owner post, so not storing signature');