more 2024 development

This commit is contained in:
Mike Macgirvin 2023-12-14 22:36:44 +11:00
parent 7c03d7144e
commit 50e95cfd69
6 changed files with 64 additions and 18 deletions

View file

@ -302,7 +302,7 @@ class Activity
}
public static function encode_item_collection($items, $id, $type, $activitypub = false, $total = 0): array
public static function encode_item_collection($items, $id, $type, $activitypub = false, $attributedTo = '', $total = 0): array
{
if ($total > App::$pager['itemspage']) {
$ret = [
@ -310,6 +310,10 @@ class Activity
'type' => $type . 'Page',
];
if ($attributedTo) {
$ret['attributedTo'] = $attributedTo;
}
$numpages = $total / App::$pager['itemspage'];
$lastpage = (($numpages > intval($numpages)) ? intval($numpages) + 1 : $numpages);
@ -342,6 +346,9 @@ class Activity
'type' => $type,
'totalItems' => $total,
];
if ($attributedTo) {
$ret['attributedTo'] = $attributedTo;
}
}
@ -752,7 +759,7 @@ class Activity
public static function encode_activity($item, $activitypub = false, $isContainer = false, $recurse = false)
{
$new = Config::Get('system', '2024');
$activity = [];
if (intval($item['item_deleted']) && (!$recurse)) {
@ -837,10 +844,12 @@ class Activity
$place->setLatitude(isset($item['lat']) ? $item['lat'] : 0)
->setLongitude(isset($item['lon']) ? $item['lon'] : 0);
}
$activity['location'] = $place->toArray();
if (!$new) {
$activity['location'] = $place->toArray();
}
}
if ($item['mid'] === $item['parent_mid']) {
if ($item['mid'] === $item['parent_mid'] && !$new) {
$activity['isContainedConversation'] = true;
}
else {
@ -878,7 +887,9 @@ class Activity
$cnv = str_replace(['/item/', '/activity/'], ['/conversation/', '/conversation/'], $cnv);
}
$activity['context'] = $cnv;
$activity['conversation'] = $cnv;
if (!$new) {
$activity['conversation'] = $cnv;
}
}
if (intval($item['item_private']) === 2) {
@ -893,7 +904,7 @@ class Activity
}
$replyTo = unserialise($item['replyto']);
if ($replyTo) {
if ($replyTo && !$new) {
$activity['replyTo'] = $replyTo;
$activity['audience'] = $replyTo;
}
@ -1113,6 +1124,7 @@ class Activity
public static function encode_item($item, $activitypub = false)
{
$new = Config::Get('system', '2024');
$activity = [];
$bbopts = (($activitypub) ? 'activitypub' : 'export');
@ -1192,6 +1204,7 @@ class Activity
$activity['commentPolicy'] = $item['comment_policy'];
}
if (intval($item['item_private']) === 2) {
$activity['directMessage'] = true;
}
@ -1214,7 +1227,9 @@ class Activity
$activity['attributedTo'] = self::encode_person($item['author'],false);
if ($item['mid'] === $item['parent_mid']) {
$activity['isContainedConversation'] = true;
if (!$new) {
$activity['isContainedConversation'] = true;
}
if (in_array($activity['commentPolicy'], ['public', 'authenticated'])) {
$activity['canReply'] = ACTIVITY_PUBLIC_INBOX;
} elseif (in_array($activity['commentPolicy'], ['contacts', 'specific'])) {
@ -1223,6 +1238,9 @@ class Activity
$activity['canReply'] = [];
}
}
if ($new) {
unset($activity['commentPolicy']);
}
if ($item['mid'] !== $item['parent_mid']) {
if ($item['approved']) {
@ -1245,7 +1263,9 @@ class Activity
$cnv = str_replace(['/item/', '/activity/'], ['/conversation/', '/conversation/'], $cnv);
}
$activity['context'] = $cnv;
$activity['conversation'] = $cnv;
if(!$new) {
$activity['conversation'] = $cnv;
}
}
// provide ocap access token for private media.
@ -1295,7 +1315,7 @@ class Activity
}
$replyTo = unserialise($item['replyto']);
if ($replyTo) {
if ($replyTo && !$new) {
$activity['replyTo'] = $replyTo;
$activity['audience'] = $replyTo;
}
@ -4865,6 +4885,33 @@ class Activity
// $contextType is reserved for future use so that the caller can specify
// a limited subset of the entire schema definition for particular activities.
if (Config::Get('system','2024')) {
return [
'nomad' => z_root() . '/apschema#',
'toot' => 'http://joinmastodon.org/ns#',
'litepub' => 'http://litepub.social/ns#',
'manuallyApprovesFollowers' => 'as:manuallyApprovesFollowers',
'oauthRegistrationEndpoint' => 'litepub:oauthRegistrationEndpoint',
'sensitive' => 'as:sensitive',
'movedTo' => 'as:movedTo',
'discoverable' => 'toot:discoverable',
'indexable' => 'toot:indexable',
'capabilities' => 'litepub:capabilities',
'acceptsJoins' => 'litepub:acceptsJoins',
'Hashtag' => 'as:Hashtag',
'canReply' => 'toot:canReply',
'canSearch' => 'nomad:canSearch',
'approval' => 'toot:approval',
'expires' => 'nomad:expires',
'directMessage' => 'nomad:directMessage',
'Category' => 'nomad:Category',
'copiedTo' => 'nomad:copiedTo',
'canSearch' => 'nomad:canSearch',
'searchContent' => 'nomad:searchContent',
'searchTags' => 'nomad:searchTags',
];
}
return [
'nomad' => z_root() . '/apschema#',
'toot' => 'http://joinmastodon.org/ns#',
@ -4875,8 +4922,7 @@ class Activity
'oauthRegistrationEndpoint' => 'litepub:oauthRegistrationEndpoint',
'sensitive' => 'as:sensitive',
'movedTo' => 'as:movedTo',
// 'alsoKnownAs' => 'as:alsoKnownAs',
'EmojiReact' => 'as:EmojiReact',
// 'EmojiReact' => 'as:EmojiReact',
'discoverable' => 'toot:discoverable',
'indexable' => 'toot:indexable',
'wall' => 'sm:wall',
@ -4885,8 +4931,9 @@ class Activity
'nomadicLocations' => 'nomad:nomadicLocations',
'Hashtag' => 'as:Hashtag',
'canReply' => 'toot:canReply',
'canSearch' => 'nomad:canSearch',
'approval' => 'toot:approval',
// 'Identity' => 'fep:Identity',
'Identity' => 'fep:Identity',
'isContainedConversation' => 'nomad:isContainedConversation',
'conversation' => 'nomad:conversation',
'commentPolicy' => 'nomad:commentPolicy',

View file

@ -281,7 +281,7 @@ class Activity extends Controller
http_status_exit(403, 'Forbidden');
}
$i = ZlibActivity::encode_item_collection($nitems, 'conversation/' . $item_id, 'OrderedCollection', true, count($nitems));
$i = ZlibActivity::encode_item_collection($nitems, 'conversation/' . $item_id, 'OrderedCollection', true, z_root() . '/channel/' . $chan['channel_address'], count($nitems));
if ($portable_id && (!intval($items[0]['item_private']))) {
ThreadListener::store(z_root() . '/activity/' . $item_id, $portable_id);
}

View file

@ -16,7 +16,6 @@ class Conversation extends Controller
public function init()
{
if (ActivityStreams::is_as_request() || Libzot::is_nomad_request()) {
$item_id = argv(1);
@ -155,7 +154,7 @@ class Conversation extends Controller
http_status_exit(403, 'Forbidden');
}
$i = ZlibActivity::encode_item_collection($nitems, 'conversation/' . $item_id, 'OrderedCollection', true, count($nitems));
$i = ZlibActivity::encode_item_collection($nitems, 'conversation/' . $item_id, 'OrderedCollection', true, z_root() . '/channel/' . $chan['channel_address'], count($nitems));
if ($portable_id && (!intval($items[0]['item_private']))) {
ThreadListener::store(z_root() . '/activity/' . $item_id, $portable_id);
}

View file

@ -298,7 +298,7 @@ class Item extends Controller
http_status_exit(403, 'Forbidden');
}
$i = Activity::encode_item_collection($items, 'conversation/' . $item_uuid, 'OrderedCollection', true, count($items));
$i = Activity::encode_item_collection($items, 'conversation/' . $item_uuid, 'OrderedCollection', true, z_root() . '/channel/' . $chan['channel_address'], count($items));
if ($portable_id && (!intval($items[0]['item_private']))) {
ThreadListener::store(z_root() . '/item/' . $item_uuid, $portable_id);
}

View file

@ -311,7 +311,7 @@ class Outbox extends Controller
}
}
$ret = Activity::encode_item_collection($items, App::$query_string, 'OrderedCollection', true, $total);
$ret = Activity::encode_item_collection($items, App::$query_string, 'OrderedCollection', true, z_root() . '/channel/' . $channel['channel_address'],$total);
}
as_return_and_die($ret, $channel);

View file

@ -363,7 +363,7 @@ class Search extends Controller
$chan = Channel::get_system();
$i = Activity::encode_item_collection($items, 'search?' . $saved_id , 'OrderedCollection', true, count($items));
$i = Activity::encode_item_collection($items, 'search?' . $saved_id , 'OrderedCollection', true, false, count($items));
$x = array_merge(Activity::ap_context(), $i);