]> git.mxchange.org Git - friendica.git/blobdiff - src/Protocol/OStatus.php
Update FAQ.md
[friendica.git] / src / Protocol / OStatus.php
index b8724acc7ff78192007e946f8243c94ba3d6401f..f55fd4dadba0185dd5188df7690015404d5f4ebb 100644 (file)
@@ -46,9 +46,6 @@ use Friendica\Util\Proxy as ProxyUtils;
 use Friendica\Util\Strings;
 use Friendica\Util\XML;
 
-require_once 'mod/share.php';
-require_once 'include/api.php';
-
 /**
  * This class contain functions for the OStatus protocol
  */
@@ -315,7 +312,7 @@ class OStatus
         */
        public static function import($xml, array $importer, array &$contact, &$hub)
        {
-               self::process($xml, $importer, $contact, $hub);
+               self::process($xml, $importer, $contact, $hub, false, true, Conversation::PUSH);
        }
 
        /**
@@ -332,7 +329,7 @@ class OStatus
         * @throws \Friendica\Network\HTTPException\InternalServerErrorException
         * @throws \ImagickException
         */
-       private static function process($xml, array $importer, array &$contact = null, &$hub, $stored = false, $initialize = true)
+       private static function process($xml, array $importer, array &$contact = null, &$hub, $stored = false, $initialize = true, $direction = Conversation::UNKNOWN)
        {
                if ($initialize) {
                        self::$itemlist = [];
@@ -400,6 +397,7 @@ class OStatus
 
                        $header["protocol"] = Conversation::PARCEL_SALMON;
                        $header["source"] = $xml2;
+                       $header["direction"] = $direction;
                } elseif (!$initialize) {
                        return false;
                }
@@ -521,6 +519,8 @@ class OStatus
                                                        Logger::log("Item with uri ".self::$itemlist[0]['uri']." will be imported since the thread contains posts or shares.", Logger::DEBUG);
                                                }
                                        }
+                               } else {
+                                       $valid = true;
                                }
 
                                if ($valid) {
@@ -808,6 +808,7 @@ class OStatus
                        $conv_data = [];
 
                        $conv_data['protocol'] = Conversation::PARCEL_SPLIT_CONVERSATION;
+                       $conv_data['direction'] = Conversation::PULL;
                        $conv_data['network'] = Protocol::OSTATUS;
                        $conv_data['uri'] = XML::getFirstNodeValue($xpath, 'atom:id/text()', $entry);
 
@@ -848,12 +849,6 @@ class OStatus
 
                        $conv_data['source'] = $doc2->saveXML();
 
-                       $condition = ['item-uri' => $conv_data['uri'],'protocol' => Conversation::PARCEL_FEED];
-                       if (DBA::exists('conversation', $condition)) {
-                               Logger::log('Delete deprecated entry for URI '.$conv_data['uri'], Logger::DEBUG);
-                               DBA::delete('conversation', ['item-uri' => $conv_data['uri']]);
-                       }
-
                        Logger::log('Store conversation data for uri '.$conv_data['uri'], Logger::DEBUG);
                        Conversation::insert($conv_data);
                }
@@ -873,7 +868,9 @@ class OStatus
         */
        private static function fetchSelf($self, array &$item)
        {
-               $condition = ['`item-uri` = ? AND `protocol` IN (?, ?)', $self, Conversation::PARCEL_DFRN, Conversation::PARCEL_SALMON];
+               $condition = ['item-uri' => $self, 'protocol' => [Conversation::PARCEL_DFRN,
+                       Conversation::PARCEL_DIASPORA_DFRN, Conversation::PARCEL_LEGACY_DFRN,
+                       Conversation::PARCEL_LOCAL_DFRN, Conversation::PARCEL_DIRECT, Conversation::PARCEL_SALMON]];
                if (DBA::exists('conversation', $condition)) {
                        Logger::log('Conversation '.$item['uri'].' is already stored.', Logger::DEBUG);
                        return;
@@ -894,6 +891,7 @@ class OStatus
 
                $item["protocol"] = Conversation::PARCEL_SALMON;
                $item["source"] = $xml;
+               $item["direction"] = Conversation::PULL;
 
                Logger::log('Conversation '.$item['uri'].' is now fetched.', Logger::DEBUG);
        }
@@ -910,12 +908,14 @@ class OStatus
         */
        private static function fetchRelated($related, $related_uri, $importer)
        {
-               $condition = ['`item-uri` = ? AND `protocol` IN (?, ?)', $related_uri, Conversation::PARCEL_DFRN, Conversation::PARCEL_SALMON];
+               $condition = ['item-uri' => $related_uri, 'protocol' => [Conversation::PARCEL_DFRN,
+                       Conversation::PARCEL_DIASPORA_DFRN, Conversation::PARCEL_LEGACY_DFRN,
+                       Conversation::PARCEL_LOCAL_DFRN, Conversation::PARCEL_DIRECT, Conversation::PARCEL_SALMON]];
                $conversation = DBA::selectFirst('conversation', ['source', 'protocol'], $condition);
                if (DBA::isResult($conversation)) {
                        $stored = true;
                        $xml = $conversation['source'];
-                       if (self::process($xml, $importer, $contact, $hub, $stored, false)) {
+                       if (self::process($xml, $importer, $contact, $hub, $stored, false, Conversation::PULL)) {
                                Logger::log('Got valid cached XML for URI '.$related_uri, Logger::DEBUG);
                                return;
                        }
@@ -1000,7 +1000,7 @@ class OStatus
                }
 
                if ($xml != '') {
-                       self::process($xml, $importer, $contact, $hub, $stored, false);
+                       self::process($xml, $importer, $contact, $hub, $stored, false, Conversation::PULL);
                } else {
                        Logger::log("XML couldn't be fetched for URI: ".$related_uri." - href: ".$related, Logger::DEBUG);
                }