]> git.mxchange.org Git - friendica.git/blobdiff - src/Protocol/Feed.php
Issue 11853/11867: Fix reshare of public posts
[friendica.git] / src / Protocol / Feed.php
index 6428fca66277ed70150b0a63c8abaefe551e532b..7ff86c1db7d247b1e893078b90f77792095d9670 100644 (file)
@@ -33,6 +33,7 @@ use Friendica\Core\Protocol;
 use Friendica\Database\DBA;
 use Friendica\DI;
 use Friendica\Model\Contact;
+use Friendica\Model\Conversation;
 use Friendica\Model\Item;
 use Friendica\Model\Post;
 use Friendica\Model\Tag;
@@ -98,9 +99,11 @@ class Feed
 
                $author = [];
                $entries = null;
+               $protocol = Conversation::PARCEL_UNKNOWN;
 
                // Is it RDF?
                if ($xpath->query('/rdf:RDF/rss:channel')->length > 0) {
+                       $protocol = Conversation::PARCEL_RDF;
                        $author['author-link'] = XML::getFirstNodeValue($xpath, '/rdf:RDF/rss:channel/rss:link/text()');
                        $author['author-name'] = XML::getFirstNodeValue($xpath, '/rdf:RDF/rss:channel/rss:title/text()');
 
@@ -112,6 +115,7 @@ class Feed
 
                // Is it Atom?
                if ($xpath->query('/atom:feed')->length > 0) {
+                       $protocol = Conversation::PARCEL_ATOM;
                        $alternate = XML::getFirstAttributes($xpath, "atom:link[@rel='alternate']");
                        if (is_object($alternate)) {
                                foreach ($alternate as $attribute) {
@@ -195,6 +199,7 @@ class Feed
 
                // Is it RSS?
                if ($xpath->query('/rss/channel')->length > 0) {
+                       $protocol = Conversation::PARCEL_RSS;
                        $author['author-link'] = XML::getFirstNodeValue($xpath, '/rss/channel/link/text()');
 
                        $author['author-name'] = XML::getFirstNodeValue($xpath, '/rss/channel/title/text()');
@@ -250,6 +255,8 @@ class Feed
                $header = [];
                $header['uid'] = $importer['uid'] ?? 0;
                $header['network'] = Protocol::FEED;
+               $datarray['protocol'] = $protocol;
+               $datarray['direction'] = Conversation::PULL;
                $header['wall'] = 0;
                $header['origin'] = 0;
                $header['gravity'] = GRAVITY_PARENT;
@@ -313,7 +320,7 @@ class Feed
                                $item['uri'] = $guid;
 
                                // Don't use the GUID value directly but instead use it as a basis for the GUID
-                               $item['guid'] = Item::guidFromUri($guid, parse_url($guid, PHP_URL_HOST) ?? parse_url($item['plink'], PHP_URL_HOST) ?? '');
+                               $item['guid'] = Item::guidFromUri($guid, parse_url($guid, PHP_URL_HOST) ?? parse_url($item['plink'], PHP_URL_HOST));
                        }
 
                        if (empty($item['uri'])) {
@@ -618,7 +625,7 @@ class Feed
                        // Additionally we have to avoid conflicts with identical URI between imported feeds and these items.
                        if ($notify) {
                                $item['guid'] = Item::guidFromUri($orig_plink, DI::baseUrl()->getHostname());
-                               $item['uri'] = Item::newURI($item['uid'], $item['guid']);
+                               $item['uri'] = Item::newURI($item['guid']);
                                unset($item['thr-parent']);
                                unset($item['parent-uri']);