]> git.mxchange.org Git - friendica.git/commitdiff
We now use the conversation data with AP
authorMichael <heluecht@pirati.ca>
Mon, 17 Sep 2018 05:51:05 +0000 (05:51 +0000)
committerMichael <heluecht@pirati.ca>
Mon, 17 Sep 2018 05:51:05 +0000 (05:51 +0000)
config/dbstructure.json
src/Model/Conversation.php
src/Module/Inbox.php
src/Protocol/ActivityPub.php

index c467ba6bc7644a062c896289a806362b584df9ac..8767c0db16f69502026925ba3d5620ff5a177cb4 100644 (file)
                        "reply-to-uri": {"type": "varbinary(255)", "not null": "1", "default": "", "comment": "URI to which this item is a reply"},
                        "conversation-uri": {"type": "varbinary(255)", "not null": "1", "default": "", "comment": "GNU Social conversation URI"},
                        "conversation-href": {"type": "varbinary(255)", "not null": "1", "default": "", "comment": "GNU Social conversation link"},
-                       "protocol": {"type": "tinyint unsigned", "not null": "1", "default": "0", "comment": "The protocol of the item"},
+                       "protocol": {"type": "tinyint unsigned", "not null": "1", "default": "255", "comment": "The protocol of the item"},
                        "source": {"type": "mediumtext", "comment": "Original source"},
                        "received": {"type": "datetime", "not null": "1", "default": "0001-01-01 00:00:00", "comment": "Receiving date"}
                },
index ba50dc25e4345d0aff29e720b8b82ee81d67be5c..be1eaf2295582a7e1bb1e0777cd7410a63e56f83 100644 (file)
@@ -17,14 +17,14 @@ class Conversation
         * These constants represent the parcel format used to transport a conversation independently of the message protocol.
         * It currently is stored in the "protocol" field for legacy reasons.
         */
-       const PARCEL_UNKNOWN            = 0;
+       const PARCEL_ACTIVITYPUB        = 0;
        const PARCEL_DFRN               = 1;
        const PARCEL_DIASPORA           = 2;
        const PARCEL_SALMON             = 3;
        const PARCEL_FEED               = 4; // Deprecated
-       const PARCEL_ACTIVITYPUB        = 5;
        const PARCEL_SPLIT_CONVERSATION = 6;
        const PARCEL_TWITTER            = 67;
+       const PARCEL_UNKNOWN            = 255;
 
        /**
         * @brief Store the conversation data
@@ -71,8 +71,8 @@ class Conversation
                                        unset($old_conv['source']);
                                }
                                // Update structure data all the time but the source only when its from a better protocol.
-                               if (isset($conversation['protocol']) && isset($conversation['source']) && ($old_conv['protocol'] < $conversation['protocol'])
-                                       && ($old_conv['protocol'] != 0) && ($old_conv['protocol'] != self::PARCEL_ACTIVITYPUB)) {
+                               if (empty($conversation['source']) || (!empty($old_conv['source']) &&
+                                       ($old_conv['protocol'] < defaults($conversation, 'protocol', PARCEL_UNKNOWN)))) {
                                        unset($conversation['protocol']);
                                        unset($conversation['source']);
                                }
index 21dd77151cde4e11961ea7ee75d9d68fb7db10e3..d47419a415c4d08a74ca7a453f5be5124a4975cd 100644 (file)
@@ -47,6 +47,6 @@ class Inbox extends BaseModule
 
                ActivityPub::processInbox($postdata, $_SERVER, $uid);
 
-               System::httpExit(201);
+               System::httpExit(202);
        }
 }
index 5b5d16e85a9c3813ab33e8a3047a2364253508c4..9fb22b2bd9e18a3c4af93ec0b435a4cfbd6bc46c 100644 (file)
@@ -32,6 +32,7 @@ use Friendica\Network\Probe;
  *
  * Digest: https://tools.ietf.org/html/rfc5843
  * https://tools.ietf.org/html/draft-cavage-http-signatures-10#ref-15
+ * https://github.com/digitalbazaar/php-json-ld
  *
  * Part of the code for HTTP signing is taken from the Osada project.
  * https://framagit.org/macgirvin/osada
@@ -156,6 +157,19 @@ class ActivityPub
        {
                $item = Item::selectFirst([], ['id' => $item_id]);
 
+               if (!DBA::isResult($item)) {
+                       return false;
+               }
+
+               $condition = ['item-uri' => $item['uri'], 'protocol' => Conversation::PARCEL_ACTIVITYPUB];
+               $conversation = DBA::selectFirst('conversation', ['source'], $condition);
+               if (DBA::isResult($conversation)) {
+                       $data = json_decode($conversation['source']);
+                       if (!empty($data)) {
+                               return $data;
+                       }
+               }
+
                $data = ['@context' => ['https://www.w3.org/ns/activitystreams', 'https://w3id.org/security/v1',
                        ['Emoji' => 'toot:Emoji', 'Hashtag' => 'as:Hashtag', 'atomUri' => 'ostatus:atomUri',
                        'conversation' => 'ostatus:conversation', 'inReplyToAtomUri' => 'ostatus:inReplyToAtomUri',
@@ -1029,6 +1043,11 @@ class ActivityPub
                                        $tag_text .= ',';
                                }
 
+                               if (empty($tag['href'])) {
+                                       //$tag['href']
+                                       logger('Blubb!');
+                               }
+
                                $tag_text .= substr($tag['name'], 0, 1) . '[url=' . $tag['href'] . ']' . substr($tag['name'], 1) . '[/url]';
                        }
                }