mirror of
https://codeberg.org/streams/streams.git
synced 2024-09-20 00:55:19 +00:00
more 2024 development
This commit is contained in:
parent
7c03d7144e
commit
50e95cfd69
6 changed files with 64 additions and 18 deletions
|
@ -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',
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
Loading…
Reference in a new issue