]> git.mxchange.org Git - friendica.git/commitdiff
Diaspora reshares should now always reshare the correct content
authorMichael <heluecht@pirati.ca>
Fri, 27 Apr 2018 14:03:10 +0000 (14:03 +0000)
committerMichael <heluecht@pirati.ca>
Fri, 27 Apr 2018 14:03:10 +0000 (14:03 +0000)
src/Protocol/Diaspora.php

index 70728a71baab94f0ec608091a3adf9b8c32222ac..1de3b3df834e0bc56a3624d7a9f0f9003cae05af 100644 (file)
@@ -596,9 +596,9 @@ class Diaspora
                }
 
                $importer = ["uid" => 0, "page-flags" => PAGE_FREELOVE];
-               $message_id = self::dispatch($importer, $msg, $fields);
+               $success = self::dispatch($importer, $msg, $fields);
 
-               return $message_id;
+               return $success;
        }
 
        /**
@@ -2729,10 +2729,15 @@ class Diaspora
         */
        public static function originalItem($guid, $orig_author)
        {
+               if (empty($guid)) {
+                       logger('Empty guid. Quitting.');
+                       return false;
+               }
+
                // Do we already have this item?
                $fields = ['body', 'tag', 'app', 'created', 'object-type', 'uri', 'guid',
                        'author-name', 'author-link', 'author-avatar'];
-               $condition = ['guid' => $guid, 'visible' => true, 'deleted' => false];
+               $condition = ['guid' => $guid, 'visible' => true, 'deleted' => false, 'private' => false];
                $item = dba::selectfirst('item', $fields, $condition);
 
                if (DBM::is_result($item)) {
@@ -2742,7 +2747,7 @@ class Diaspora
                        // Then refetch the content, if it is a reshare from a reshare.
                        // If it is a reshared post from another network then reformat to avoid display problems with two share elements
                        if (self::isReshare($item["body"], true)) {
-                               $r = [];
+                               $item = [];
                        } elseif (self::isReshare($item["body"], false) || strstr($item["body"], "[share")) {
                                $item["body"] = Markdown::toBBCode(BBCode::toMarkdown($item["body"]));
 
@@ -2757,21 +2762,26 @@ class Diaspora
                        }
                }
 
-               if (!DBM::is_result($r)) {
+               if (!DBM::is_result($item)) {
+                       if (empty($orig_author)) {
+                               logger('Empty author for guid ' . $guid . '. Quitting.');
+                               return false;
+                       }
+
                        $server = "https://".substr($orig_author, strpos($orig_author, "@") + 1);
                        logger("1st try: reshared message ".$guid." will be fetched via SSL from the server ".$server);
-                       $item_id = self::storeByGuid($guid, $server);
+                       $stored = self::storeByGuid($guid, $server);
 
-                       if (!$item_id) {
+                       if (!$stored) {
                                $server = "http://".substr($orig_author, strpos($orig_author, "@") + 1);
                                logger("2nd try: reshared message ".$guid." will be fetched without SLL from the server ".$server);
-                               $item_id = self::storeByGuid($guid, $server);
+                               $stored = self::storeByGuid($guid, $server);
                        }
 
-                       if ($item_id) {
+                       if ($stored) {
                                $fields = ['body', 'tag', 'app', 'created', 'object-type', 'uri', 'guid',
                                        'author-name', 'author-link', 'author-avatar'];
-                               $condition = ['id' => $item_id, 'visible' => true, 'deleted' => false];
+                               $condition = ['guid' => $guid, 'visible' => true, 'deleted' => false, 'private' => false];
                                $item = dba::selectfirst('item', $fields, $condition);
 
                                if (DBM::is_result($item)) {