commit
3b41535dfe
6 changed files with 51 additions and 44 deletions
|
@ -83,8 +83,9 @@ function acl_content(App $a)
|
||||||
WHERE `uid` = %d AND NOT `self`
|
WHERE `uid` = %d AND NOT `self`
|
||||||
AND NOT `blocked` AND NOT `pending` AND NOT `archive`
|
AND NOT `blocked` AND NOT `pending` AND NOT `archive`
|
||||||
AND `success_update` >= `failure_update`
|
AND `success_update` >= `failure_update`
|
||||||
AND `network` IN ('%s', '%s') $sql_extra2",
|
AND `network` IN ('%s', '%s', '%s') $sql_extra2",
|
||||||
intval(local_user()),
|
intval(local_user()),
|
||||||
|
DBA::escape(Protocol::ACTIVITYPUB),
|
||||||
DBA::escape(Protocol::DFRN),
|
DBA::escape(Protocol::DFRN),
|
||||||
DBA::escape(Protocol::DIASPORA)
|
DBA::escape(Protocol::DIASPORA)
|
||||||
);
|
);
|
||||||
|
@ -169,10 +170,11 @@ function acl_content(App $a)
|
||||||
} elseif ($type == 'm') {
|
} elseif ($type == 'm') {
|
||||||
$r = q("SELECT `id`, `name`, `nick`, `micro`, `network`, `url`, `attag`, `addr` FROM `contact`
|
$r = q("SELECT `id`, `name`, `nick`, `micro`, `network`, `url`, `attag`, `addr` FROM `contact`
|
||||||
WHERE `uid` = %d AND NOT `self` AND NOT `blocked` AND NOT `pending` AND NOT `archive`
|
WHERE `uid` = %d AND NOT `self` AND NOT `blocked` AND NOT `pending` AND NOT `archive`
|
||||||
AND `success_update` >= `failure_update` AND `network` IN ('%s', '%s')
|
AND `success_update` >= `failure_update` AND `network` IN ('%s', '%s', '%s')
|
||||||
$sql_extra2
|
$sql_extra2
|
||||||
ORDER BY `name` ASC ",
|
ORDER BY `name` ASC ",
|
||||||
intval(local_user()),
|
intval(local_user()),
|
||||||
|
DBA::escape(Protocol::ACTIVITYPUB),
|
||||||
DBA::escape(Protocol::DFRN),
|
DBA::escape(Protocol::DFRN),
|
||||||
DBA::escape(Protocol::DIASPORA)
|
DBA::escape(Protocol::DIASPORA)
|
||||||
);
|
);
|
||||||
|
|
|
@ -544,7 +544,7 @@ function contacts_content(App $a, $update = 0)
|
||||||
}
|
}
|
||||||
$lblsuggest = (($contact['network'] === Protocol::DFRN) ? L10n::t('Suggest friends') : '');
|
$lblsuggest = (($contact['network'] === Protocol::DFRN) ? L10n::t('Suggest friends') : '');
|
||||||
|
|
||||||
$poll_enabled = in_array($contact['network'], [Protocol::ACTIVITYPUB, Protocol::DFRN, Protocol::OSTATUS, Protocol::FEED, Protocol::MAIL]);
|
$poll_enabled = in_array($contact['network'], [Protocol::DFRN, Protocol::OSTATUS, Protocol::FEED, Protocol::MAIL]);
|
||||||
|
|
||||||
$nettype = L10n::t('Network type: %s', ContactSelector::networkToName($contact['network'], $contact["url"]));
|
$nettype = L10n::t('Network type: %s', ContactSelector::networkToName($contact['network'], $contact["url"]));
|
||||||
|
|
||||||
|
@ -635,15 +635,15 @@ function contacts_content(App $a, $update = 0)
|
||||||
'$follow_text' => $follow_text,
|
'$follow_text' => $follow_text,
|
||||||
'$profile_select' => $profile_select,
|
'$profile_select' => $profile_select,
|
||||||
'$contact_id' => $contact['id'],
|
'$contact_id' => $contact['id'],
|
||||||
'$block_text' => (($contact['blocked']) ? L10n::t('Unblock') : L10n::t('Block') ),
|
'$block_text' => ($contact['blocked'] ? L10n::t('Unblock') : L10n::t('Block')),
|
||||||
'$ignore_text' => (($contact['readonly']) ? L10n::t('Unignore') : L10n::t('Ignore') ),
|
'$ignore_text' => ($contact['readonly'] ? L10n::t('Unignore') : L10n::t('Ignore')),
|
||||||
'$insecure' => (($contact['network'] !== Protocol::DFRN && $contact['network'] !== Protocol::MAIL && $contact['network'] !== Protocol::DIASPORA) ? $insecure : ''),
|
'$insecure' => (in_array($contact['network'], [Protocol::ACTIVITYPUB, Protocol::DFRN, Protocol::MAIL, Protocol::DIASPORA]) ? '' : $insecure),
|
||||||
'$info' => $contact['info'],
|
'$info' => $contact['info'],
|
||||||
'$cinfo' => ['info', '', $contact['info'], ''],
|
'$cinfo' => ['info', '', $contact['info'], ''],
|
||||||
'$blocked' => (($contact['blocked']) ? L10n::t('Currently blocked') : ''),
|
'$blocked' => ($contact['blocked'] ? L10n::t('Currently blocked') : ''),
|
||||||
'$ignored' => (($contact['readonly']) ? L10n::t('Currently ignored') : ''),
|
'$ignored' => ($contact['readonly'] ? L10n::t('Currently ignored') : ''),
|
||||||
'$archived' => (($contact['archive']) ? L10n::t('Currently archived') : ''),
|
'$archived' => ($contact['archive'] ? L10n::t('Currently archived') : ''),
|
||||||
'$pending' => (($contact['pending']) ? L10n::t('Awaiting connection acknowledge') : ''),
|
'$pending' => ($contact['pending'] ? L10n::t('Awaiting connection acknowledge') : ''),
|
||||||
'$hidden' => ['hidden', L10n::t('Hide this contact from others'), ($contact['hidden'] == 1), L10n::t('Replies/likes to your public posts <strong>may</strong> still be visible')],
|
'$hidden' => ['hidden', L10n::t('Hide this contact from others'), ($contact['hidden'] == 1), L10n::t('Replies/likes to your public posts <strong>may</strong> still be visible')],
|
||||||
'$notify' => ['notify', L10n::t('Notification for new posts'), ($contact['notify_new_posts'] == 1), L10n::t('Send a notification of every new post of this contact')],
|
'$notify' => ['notify', L10n::t('Notification for new posts'), ($contact['notify_new_posts'] == 1), L10n::t('Send a notification of every new post of this contact')],
|
||||||
'$fetch_further_information' => $fetch_further_information,
|
'$fetch_further_information' => $fetch_further_information,
|
||||||
|
@ -1085,7 +1085,7 @@ function contact_actions($contact)
|
||||||
}
|
}
|
||||||
|
|
||||||
$contact_actions['block'] = [
|
$contact_actions['block'] = [
|
||||||
'label' => (intval($contact['blocked']) ? L10n::t('Unblock') : L10n::t('Block') ),
|
'label' => (intval($contact['blocked']) ? L10n::t('Unblock') : L10n::t('Block')),
|
||||||
'url' => 'contacts/' . $contact['id'] . '/block',
|
'url' => 'contacts/' . $contact['id'] . '/block',
|
||||||
'title' => L10n::t('Toggle Blocked status'),
|
'title' => L10n::t('Toggle Blocked status'),
|
||||||
'sel' => (intval($contact['blocked']) ? 'active' : ''),
|
'sel' => (intval($contact['blocked']) ? 'active' : ''),
|
||||||
|
@ -1093,7 +1093,7 @@ function contact_actions($contact)
|
||||||
];
|
];
|
||||||
|
|
||||||
$contact_actions['ignore'] = [
|
$contact_actions['ignore'] = [
|
||||||
'label' => (intval($contact['readonly']) ? L10n::t('Unignore') : L10n::t('Ignore') ),
|
'label' => (intval($contact['readonly']) ? L10n::t('Unignore') : L10n::t('Ignore')),
|
||||||
'url' => 'contacts/' . $contact['id'] . '/ignore',
|
'url' => 'contacts/' . $contact['id'] . '/ignore',
|
||||||
'title' => L10n::t('Toggle Ignored status'),
|
'title' => L10n::t('Toggle Ignored status'),
|
||||||
'sel' => (intval($contact['readonly']) ? 'active' : ''),
|
'sel' => (intval($contact['readonly']) ? 'active' : ''),
|
||||||
|
@ -1102,7 +1102,7 @@ function contact_actions($contact)
|
||||||
|
|
||||||
if ($contact['uid'] != 0) {
|
if ($contact['uid'] != 0) {
|
||||||
$contact_actions['archive'] = [
|
$contact_actions['archive'] = [
|
||||||
'label' => (intval($contact['archive']) ? L10n::t('Unarchive') : L10n::t('Archive') ),
|
'label' => (intval($contact['archive']) ? L10n::t('Unarchive') : L10n::t('Archive')),
|
||||||
'url' => 'contacts/' . $contact['id'] . '/archive',
|
'url' => 'contacts/' . $contact['id'] . '/archive',
|
||||||
'title' => L10n::t('Toggle Archive status'),
|
'title' => L10n::t('Toggle Archive status'),
|
||||||
'sel' => (intval($contact['archive']) ? 'active' : ''),
|
'sel' => (intval($contact['archive']) ? 'active' : ''),
|
||||||
|
|
|
@ -810,7 +810,7 @@ function networkThreadedView(App $a, $update, $parent)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Only show it when unfiltered (no groups, no networks, ...)
|
// Only show it when unfiltered (no groups, no networks, ...)
|
||||||
if (in_array($nets, ['', Protocol::DFRN, Protocol::DIASPORA, Protocol::OSTATUS]) && (strlen($sql_extra . $sql_extra2 . $sql_extra3) == 0)) {
|
if (in_array($nets, ['', Protocol::ACTIVITYPUB, Protocol::DFRN, Protocol::DIASPORA, Protocol::OSTATUS]) && (strlen($sql_extra . $sql_extra2 . $sql_extra3) == 0)) {
|
||||||
if (DBA::isResult($r)) {
|
if (DBA::isResult($r)) {
|
||||||
$top_limit = current($r)['order_date'];
|
$top_limit = current($r)['order_date'];
|
||||||
$bottom_limit = end($r)['order_date'];
|
$bottom_limit = end($r)['order_date'];
|
||||||
|
|
|
@ -51,14 +51,14 @@ class ACL extends BaseObject
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'PRIVATE':
|
case 'PRIVATE':
|
||||||
$networks = [Protocol::DFRN, Protocol::MAIL, Protocol::DIASPORA];
|
$networks = [Protocol::ACTIVITYPUB, Protocol::DFRN, Protocol::MAIL, Protocol::DIASPORA];
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'TWO_WAY':
|
case 'TWO_WAY':
|
||||||
if (!empty($a->user['prvnets'])) {
|
if (!empty($a->user['prvnets'])) {
|
||||||
$networks = [Protocol::DFRN, Protocol::MAIL, Protocol::DIASPORA];
|
$networks = [Protocol::ACTIVITYPUB, Protocol::DFRN, Protocol::MAIL, Protocol::DIASPORA];
|
||||||
} else {
|
} else {
|
||||||
$networks = [Protocol::DFRN, Protocol::MAIL, Protocol::DIASPORA, Protocol::OSTATUS];
|
$networks = [Protocol::ACTIVITYPUB, Protocol::DFRN, Protocol::MAIL, Protocol::DIASPORA, Protocol::OSTATUS];
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
|
@ -61,11 +61,11 @@ class GContact
|
||||||
$search .= "%";
|
$search .= "%";
|
||||||
|
|
||||||
$results = DBA::p("SELECT `nurl` FROM `gcontact`
|
$results = DBA::p("SELECT `nurl` FROM `gcontact`
|
||||||
WHERE NOT `hide` AND `network` IN (?, ?, ?) AND
|
WHERE NOT `hide` AND `network` IN (?, ?, ?, ?) AND
|
||||||
((`last_contact` >= `last_failure`) OR (`updated` >= `last_failure`)) AND
|
((`last_contact` >= `last_failure`) OR (`updated` >= `last_failure`)) AND
|
||||||
(`addr` LIKE ? OR `name` LIKE ? OR `nick` LIKE ?) $extra_sql
|
(`addr` LIKE ? OR `name` LIKE ? OR `nick` LIKE ?) $extra_sql
|
||||||
GROUP BY `nurl` ORDER BY `nurl` DESC LIMIT 1000",
|
GROUP BY `nurl` ORDER BY `nurl` DESC LIMIT 1000",
|
||||||
Protocol::DFRN, $ostatus, $diaspora, $search, $search, $search
|
Protocol::DFRN, Protocol::ACTIVITYPUB, $ostatus, $diaspora, $search, $search, $search
|
||||||
);
|
);
|
||||||
|
|
||||||
$gcontacts = [];
|
$gcontacts = [];
|
||||||
|
@ -138,7 +138,7 @@ class GContact
|
||||||
}
|
}
|
||||||
|
|
||||||
// Assure that there are no parameter fragments in the profile url
|
// Assure that there are no parameter fragments in the profile url
|
||||||
if (in_array($gcontact['network'], [Protocol::DFRN, Protocol::DIASPORA, Protocol::OSTATUS, ""])) {
|
if (in_array($gcontact['network'], [Protocol::ACTIVITYPUB, Protocol::DFRN, Protocol::DIASPORA, Protocol::OSTATUS, ""])) {
|
||||||
$gcontact['url'] = self::cleanContactUrl($gcontact['url']);
|
$gcontact['url'] = self::cleanContactUrl($gcontact['url']);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -214,7 +214,7 @@ class GContact
|
||||||
throw new Exception('No name and photo for URL '.$gcontact['url']);
|
throw new Exception('No name and photo for URL '.$gcontact['url']);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!in_array($gcontact['network'], [Protocol::DFRN, Protocol::OSTATUS, Protocol::DIASPORA])) {
|
if (!in_array($gcontact['network'], [Protocol::ACTIVITYPUB, Protocol::DFRN, Protocol::OSTATUS, Protocol::DIASPORA])) {
|
||||||
throw new Exception('No federated network ('.$gcontact['network'].') detected for URL '.$gcontact['url']);
|
throw new Exception('No federated network ('.$gcontact['network'].') detected for URL '.$gcontact['url']);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -651,7 +651,7 @@ class GContact
|
||||||
self::fixAlternateContactAddress($contact);
|
self::fixAlternateContactAddress($contact);
|
||||||
|
|
||||||
// Remove unwanted parts from the contact url (e.g. "?zrl=...")
|
// Remove unwanted parts from the contact url (e.g. "?zrl=...")
|
||||||
if (in_array($contact["network"], [Protocol::DFRN, Protocol::DIASPORA, Protocol::OSTATUS])) {
|
if (in_array($contact["network"], [Protocol::ACTIVITYPUB, Protocol::DFRN, Protocol::DIASPORA, Protocol::OSTATUS])) {
|
||||||
$contact["url"] = self::cleanContactUrl($contact["url"]);
|
$contact["url"] = self::cleanContactUrl($contact["url"]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -176,6 +176,8 @@ class Notifier
|
||||||
if (!in_array($cmd, [Delivery::MAIL, Delivery::SUGGESTION, Delivery::RELOCATION])) {
|
if (!in_array($cmd, [Delivery::MAIL, Delivery::SUGGESTION, Delivery::RELOCATION])) {
|
||||||
$parent = $items[0];
|
$parent = $items[0];
|
||||||
|
|
||||||
|
self::activityPubDelivery($a, $cmd, $item_id, $uid, $target_item, $parent);
|
||||||
|
|
||||||
$fields = ['network', 'author-id', 'owner-id'];
|
$fields = ['network', 'author-id', 'owner-id'];
|
||||||
$condition = ['uri' => $target_item["thr-parent"], 'uid' => $target_item["uid"]];
|
$condition = ['uri' => $target_item["thr-parent"], 'uid' => $target_item["uid"]];
|
||||||
$thr_parent = Item::selectFirst($fields, $condition);
|
$thr_parent = Item::selectFirst($fields, $condition);
|
||||||
|
@ -422,27 +424,6 @@ class Notifier
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$inboxes = [];
|
|
||||||
|
|
||||||
if ($target_item['origin']) {
|
|
||||||
$inboxes = ActivityPub\Transmitter::fetchTargetInboxes($target_item, $uid);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($parent['origin']) {
|
|
||||||
$parent_inboxes = ActivityPub\Transmitter::fetchTargetInboxes($parent, $uid);
|
|
||||||
$inboxes = array_merge($inboxes, $parent_inboxes);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Fill the item cache
|
|
||||||
ActivityPub\Transmitter::createCachedActivityFromItem($item_id);
|
|
||||||
|
|
||||||
foreach ($inboxes as $inbox) {
|
|
||||||
logger('Deliver ' . $item_id .' to ' . $inbox .' via ActivityPub', LOGGER_DEBUG);
|
|
||||||
|
|
||||||
Worker::add(['priority' => $a->queue['priority'], 'created' => $a->queue['created'], 'dont_fork' => true],
|
|
||||||
'APDelivery', $cmd, $item_id, $inbox, $uid);
|
|
||||||
}
|
|
||||||
|
|
||||||
// send salmon slaps to mentioned remote tags (@foo@example.com) in OStatus posts
|
// send salmon slaps to mentioned remote tags (@foo@example.com) in OStatus posts
|
||||||
// They are especially used for notifications to OStatus users that don't follow us.
|
// They are especially used for notifications to OStatus users that don't follow us.
|
||||||
if (!Config::get('system', 'dfrn_only') && count($url_recipients) && ($public_message || $push_notify) && $normal_mode) {
|
if (!Config::get('system', 'dfrn_only') && count($url_recipients) && ($public_message || $push_notify) && $normal_mode) {
|
||||||
|
@ -527,6 +508,30 @@ class Notifier
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static function activityPubDelivery($a, $cmd, $item_id, $uid, $target_item, $parent)
|
||||||
|
{
|
||||||
|
$inboxes = [];
|
||||||
|
|
||||||
|
if ($target_item['origin']) {
|
||||||
|
$inboxes = ActivityPub\Transmitter::fetchTargetInboxes($target_item, $uid);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($parent['origin']) {
|
||||||
|
$parent_inboxes = ActivityPub\Transmitter::fetchTargetInboxes($parent, $uid);
|
||||||
|
$inboxes = array_merge($inboxes, $parent_inboxes);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Fill the item cache
|
||||||
|
ActivityPub\Transmitter::createCachedActivityFromItem($item_id);
|
||||||
|
|
||||||
|
foreach ($inboxes as $inbox) {
|
||||||
|
logger('Deliver ' . $item_id .' to ' . $inbox .' via ActivityPub', LOGGER_DEBUG);
|
||||||
|
|
||||||
|
Worker::add(['priority' => $a->queue['priority'], 'created' => $a->queue['created'], 'dont_fork' => true],
|
||||||
|
'APDelivery', $cmd, $item_id, $inbox, $uid);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private static function isForumPost($item, $owner) {
|
private static function isForumPost($item, $owner) {
|
||||||
if (($item['author-id'] == $item['owner-id']) ||
|
if (($item['author-id'] == $item['owner-id']) ||
|
||||||
($owner['id'] == $item['contact-id']) ||
|
($owner['id'] == $item['contact-id']) ||
|
||||||
|
|
Loading…
Reference in a new issue