]> git.mxchange.org Git - friendica.git/blobdiff - src/Protocol/DFRN.php
Merge pull request #10090 from nupplaphil/feat/install_testrewrite
[friendica.git] / src / Protocol / DFRN.php
index 6cc2de44f5d76ae050dadc9fd29af088ff8debf9..53ee0e5aaaa451c3f76785a69bd0e72f09b196d3 100644 (file)
@@ -34,11 +34,11 @@ use Friendica\Model\Contact;
 use Friendica\Model\Conversation;
 use Friendica\Model\Event;
 use Friendica\Model\FContact;
+use Friendica\Model\GServer;
 use Friendica\Model\Item;
 use Friendica\Model\ItemURI;
 use Friendica\Model\Mail;
-use Friendica\Model\Notify;
-use Friendica\Model\Notify\Type;
+use Friendica\Model\Notification;
 use Friendica\Model\PermissionSet;
 use Friendica\Model\Post;
 use Friendica\Model\Post\Category;
@@ -311,23 +311,26 @@ class DFRN
        }
 
        /**
-        * Generate an atom entry for a given item id
+        * Generate an atom entry for a given uri id and user
         *
-        * @param int     $item_id      The item id
+        * @param int     $uri_id       The uri id
+        * @param int     $uid          The user id
         * @param boolean $conversation Show the conversation. If false show the single post.
         *
         * @return string DFRN feed entry
         * @throws \Friendica\Network\HTTPException\InternalServerErrorException
         * @throws \ImagickException
         */
-       public static function itemFeed($item_id, $conversation = false)
+       public static function itemFeed(int $uri_id, int $uid, bool $conversation = false)
        {
                if ($conversation) {
-                       $condition = ['parent' => $item_id];
+                       $condition = ['parent-uri-id' => $uri_id];
                } else {
-                       $condition = ['id' => $item_id];
+                       $condition = ['uri-id' => $uri_id];
                }
 
+               $condition['uid'] = $uid;
+
                $items = Post::selectToArray(Item::DELIVER_FIELDLIST, $condition);
                if (!DBA::isResult($items)) {
                        return '';
@@ -1963,8 +1966,8 @@ class DFRN
                                // send a notification
                                notification(
                                        [
-                                       "type"     => Type::POKE,
-                                       "otype"    => Notify\ObjectType::PERSON,
+                                       "type"     => Notification\Type::POKE,
+                                       "otype"    => Notification\ObjectType::PERSON,
                                        "activity" => $verb,
                                        "verb"     => $item["verb"],
                                        "uid"      => $importer["importer_uid"],
@@ -2602,6 +2605,14 @@ class DFRN
 
                Logger::log("Import DFRN message for user " . $importer["importer_uid"] . " from contact " . $importer["id"], Logger::DEBUG);
 
+               if (!empty($importer['gsid'])) {
+                       if ($protocol == Conversation::PARCEL_DIASPORA_DFRN) {
+                               GServer::setProtocol($importer['gsid'], Post\DeliveryData::DFRN);
+                       } elseif ($protocol == Conversation::PARCEL_LEGACY_DFRN) {
+                               GServer::setProtocol($importer['gsid'], Post\DeliveryData::LEGACY_DFRN);
+                       }
+               }
+
                // is it a public forum? Private forums aren't exposed with this method
                $forum = intval(XML::getFirstNodeValue($xpath, "/atom:feed/dfrn:community/text()"));