},
{
"name": "friendica/json-ld",
- "version": "1.0.0",
+ "version": "1.1.1",
"source": {
"type": "git",
"url": "https://git.friendi.ca/friendica/php-json-ld",
- "reference": "a9ac64daf01cfd97e80c36a5104247d37c0ae5ef"
+ "reference": "ca3916d10d2ad9073b3b1eae383978dbe828e1e1"
},
"require": {
"ext-json": "*",
{
"name": "Digital Bazaar, Inc.",
"email": "support@digitalbazaar.com",
- "url": "http://digitalbazaar.com/"
+ "homepage": "http://digitalbazaar.com/"
},
{
"name": "Friendica Team",
- "url": "https://friendi.ca/"
+ "homepage": "https://friendi.ca/"
}
],
"description": "A JSON-LD Processor and API implementation in PHP.",
"Semantic Web",
"jsonld"
],
- "time": "2018-09-28T00:01:12+00:00"
+ "time": "2018-10-08T20:41:00+00:00"
},
{
"name": "fxp/composer-asset-plugin",
/**
* ActivityPub Protocol class
+ *
+ * To-Do:
+ * - Store Diaspora signature
*/
class Processor
{
$item['network'] = Protocol::ACTIVITYPUB;
$item['private'] = !in_array(0, $activity['receiver']);
$item['author-id'] = Contact::getIdForURL($activity['author'], 0, true);
- $item['owner-id'] = Contact::getIdForURL($activity['actor'], 0, true);
+
+ if (empty($activity['thread-completion'])) {
+ $item['owner-id'] = Contact::getIdForURL($activity['actor'], 0, true);
+ } else {
+ logger('Ignoring actor because of thread completion.', LOGGER_DEBUG);
+ $item['owner-id'] = $item['author-id'];
+ }
+
$item['uri'] = $activity['id'];
$item['created'] = $activity['published'];
$item['edited'] = $activity['updated'];
$activity['type'] = 'Create';
$ldactivity = JsonLD::compact($activity);
+
+ $ldactivity['thread-completion'] = true;
+
ActivityPub\Receiver::processActivity($ldactivity);
logger('Activity ' . $url . ' had been fetched and processed.');
}
return;
}
+ // Internal flag for thread completion. See Processor.php
+ if (!empty($activity['thread-completion'])) {
+ $object_data['thread-completion'] = $activity['thread-completion'];
+ }
+
switch ($type) {
case 'as:Create':
case 'as:Announce':
$inboxes = ActivityPub\Transmitter::fetchTargetInboxesforUser(0);
foreach ($inboxes as $inbox) {
- logger('Account removal for user ' . $uid . ' to ' . $inbox .' via ActivityPub', LOGGER_DEBUG);
+ logger('Account removal for user ' . $item_id . ' to ' . $inbox .' via ActivityPub', LOGGER_DEBUG);
Worker::add(['priority' => $a->queue['priority'], 'created' => $a->queue['created'], 'dont_fork' => true],
- 'APDelivery', Delivery::REMOVAL, '', $inbox, $uid);
+ 'APDelivery', Delivery::REMOVAL, '', $inbox, $item_id);
}
return;