Add item_by_link hook to allow connectors to import remote posts

This commit is contained in:
Hypolite Petovan 2021-11-23 17:47:02 -05:00
parent a47830990a
commit 39c763ce2f
2 changed files with 23 additions and 0 deletions

View file

@ -479,6 +479,17 @@ Hook data:
- **uid** (input): the user to return the contact data for (can be empty for public contacts). - **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. - **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 ### support_follow
Called to assert whether a connector addon provides follow capabilities. Called to assert whether a connector addon provides follow capabilities.

View file

@ -3262,6 +3262,18 @@ class Item
return $item_id; 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)) { if ($fetched_uri = ActivityPub\Processor::fetchMissingActivity($uri)) {
$item_id = self::searchByLink($fetched_uri, $uid); $item_id = self::searchByLink($fetched_uri, $uid);
} else { } else {