]> git.mxchange.org Git - friendica.git/commitdiff
Add item_by_link hook to allow connectors to import remote posts
authorHypolite Petovan <hypolite@mrpetovan.com>
Tue, 23 Nov 2021 22:47:02 +0000 (17:47 -0500)
committerHypolite Petovan <hypolite@mrpetovan.com>
Tue, 23 Nov 2021 22:47:02 +0000 (17:47 -0500)
doc/Addons.md
src/Model/Item.php

index 51901fb95886e2d11651a2249209e626754a0deb..708a2e0f045b80b69599dba4f92f6b33e3b1c719 100644 (file)
@@ -479,6 +479,17 @@ Hook data:
 - **uid** (input): the user to return the contact data for (can be empty for public contacts).
 - **result** (output): Leave null if address isn't relevant to the connector, set to contact array if probe is successful, false otherwise.
 
+### item_by_link
+
+Called when trying to probe an item from a given URI.
+If any registered hook function sets the `item_id` key of the hook data array, it will be returned immediately.
+Hook functions should also return immediately if the hook data contains an existing `item_id`.
+
+Hook data:
+- **uri** (input): the item URI.
+- **uid** (input): the user to return the item data for (can be empty for public contacts).
+- **item_id** (output): Leave null if URI isn't relevant to the connector, set to created item array if probe is successful, false otherwise.
+
 ### support_follow
 
 Called to assert whether a connector addon provides follow capabilities.
index 923d72c11bcd37cf7955897553759bc9c93d2d45..93e2a80a2f2ab0fd3ec76e7209c4c69051fb357f 100644 (file)
@@ -3262,6 +3262,18 @@ class Item
                        return $item_id;
                }
 
+               $hookData = [
+                       'uri'     => $uri,
+                       'uid'     => $uid,
+                       'item_id' => null,
+               ];
+
+               Hook::callAll('item_by_link', $hookData);
+
+               if (isset($hookData['item_id'])) {
+                       return is_numeric($hookData['item_id']) ? $hookData['item_id'] : 0;
+               }
+
                if ($fetched_uri = ActivityPub\Processor::fetchMissingActivity($uri)) {
                        $item_id = self::searchByLink($fetched_uri, $uid);
                } else {