+ if (!empty($l)) {
+ System::httpExit($o . implode(', ', $l));
+ } else {
+ System::httpExit($o . $receivers);;
+ }
+ }
+
+ /**
+ * Fetch a list of receivers
+ *
+ * @param int $uriId
+ * @return string
+ */
+ private function fetchReceivers(int $uriId): string
+ {
+ $own_url = '';
+ $uid = DI::userSession()->getLocalUserId();
+ if ($uid) {
+ $owner = User::getOwnerDataById($uid);
+ if (!empty($owner['url'])) {
+ $own_url = $owner['url'];
+ }
+ }
+
+ $receivers = [];
+ foreach (Tag::getByURIId($uriId, [Tag::TO, Tag::CC, Tag::BCC, Tag::AUDIENCE, Tag::ATTRIBUTED]) as $receiver) {
+ // We only display BCC when it contains the current user
+ if (($receiver['type'] == Tag::BCC) && ($receiver['url'] != $own_url)) {
+ continue;
+ }
+
+ switch (Tag::getTargetType($receiver['url'], false)) {
+ case Tag::PUBLIC_COLLECTION:
+ $receivers[$receiver['type']][] = DI::l10n()->t('Public');
+ break;
+ case Tag::GENERAL_COLLECTION:
+ $receivers[$receiver['type']][] = DI::l10n()->t('Collection (%s)', $receiver['name']);
+ break;
+ case Tag::FOLLOWER_COLLECTION:
+ $apcontact = DBA::selectFirst('apcontact', ['name'], ['followers' => $receiver['url']]);
+ $receivers[$receiver['type']][] = DI::l10n()->t('Followers (%s)', $apcontact['name'] ?? $receiver['name']);
+ break;
+ case Tag::ACCOUNT:
+ $apcontact = APContact::getByURL($receiver['url'], false);
+ $receivers[$receiver['type']][] = $apcontact['name'] ?? $receiver['name'];
+ break;
+ default:
+ $receivers[$receiver['type']][] = $receiver['name'];
+ break;
+ }
+ }
+
+ $output = '';
+
+ foreach ($receivers as $type => $receiver) {
+ $max = DI::config()->get('system', 'max_receivers');
+ $total = count($receiver);
+ if ($total > $max) {
+ $receiver = array_slice($receiver, 0, $max);
+ $receiver[] = DI::l10n()->t('%d more', $total - $max);
+ }
+ switch ($type) {
+ case Tag::TO:
+ $output .= DI::l10n()->t('<b>To:</b> %s<br>', implode(', ', $receiver));
+ break;
+ case Tag::CC:
+ $output .= DI::l10n()->t('<b>CC:</b> %s<br>', implode(', ', $receiver));
+ break;
+ case Tag::BCC:
+ $output .= DI::l10n()->t('<b>BCC:</b> %s<br>', implode(', ', $receiver));
+ break;
+ case Tag::AUDIENCE:
+ $output .= DI::l10n()->t('<b>Audience:</b> %s<br>', implode(', ', $receiver));
+ break;
+ case Tag::ATTRIBUTED:
+ $output .= DI::l10n()->t('<b>Attributed To:</b> %s<br>', implode(', ', $receiver));
+ break;
+ }
+ }
+
+ return $output;