X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FModule%2FPermissionTooltip.php;h=58b6df086d1f6ad01fcb753a3c0b2c0879dfd39a;hb=9e3dbfab3ec950c32b7a7eae20e2f67ae6008a73;hp=f6722c984a755ea6508b9935d8a7ae62158df0e0;hpb=39e820e6a3ffaaec82f47b493c1b6b45f768a303;p=friendica.git diff --git a/src/Module/PermissionTooltip.php b/src/Module/PermissionTooltip.php index f6722c984a..58b6df086d 100644 --- a/src/Module/PermissionTooltip.php +++ b/src/Module/PermissionTooltip.php @@ -24,10 +24,14 @@ namespace Friendica\Module; use Friendica\Core\Hook; use Friendica\Database\DBA; use Friendica\DI; +use Friendica\Model\APContact; use Friendica\Model\Group; +use Friendica\Model\Item; use Friendica\Model\Post; use Friendica\Model\Tag; +use Friendica\Model\User; use Friendica\Network\HTTPException; +use Friendica\Protocol\ActivityPub; /** * Outputs the permission tooltip HTML content for the provided item, photo or event id. @@ -44,7 +48,7 @@ class PermissionTooltip extends \Friendica\BaseModule throw new HTTPException\BadRequestException(DI::l10n()->t('Wrong type "%s", expected one of: %s', $type, implode(', ', $expectedTypes))); } - $condition = ['id' => $referenceId]; + $condition = ['id' => $referenceId, 'uid' => [0, local_user()]]; if ($type == 'item') { $fields = ['uid', 'psid', 'private', 'uri-id']; $model = Post::selectFirst($fields, $condition); @@ -74,12 +78,26 @@ class PermissionTooltip extends \Friendica\BaseModule if ($type == 'item') { $receivers = $this->fetchReceivers($model['uri-id']); + if (empty($receivers)) { + switch ($model['private']) { + case Item::PUBLIC: + $receivers = DI::l10n()->t('Public'); + break; + + case Item::UNLISTED: + $receivers = DI::l10n()->t('Unlisted'); + break; + + case Item::PRIVATE: + $receivers = DI::l10n()->t('Limited/Private'); + break; + } + } } else { $receivers = ''; } - if ($model['uid'] != local_user() || - empty($model['allow_cid']) + if (empty($model['allow_cid']) && empty($model['allow_gid']) && empty($model['deny_cid']) && empty($model['deny_gid']) @@ -158,10 +176,34 @@ class PermissionTooltip extends \Friendica\BaseModule */ private function fetchReceivers(int $uriId):string { - // We only fetch "to" and "cc", because "bcc" should never be displayed + $own_url = ''; + $uid = local_user(); + if ($uid) { + $owner = User::getOwnerDataById($uid); + if (!empty($owner['url'])) { + $own_url = $owner['url']; + } + } + $receivers = []; - foreach (Tag::getByURIId($uriId, [Tag::TO, Tag::CC]) as $receiver) { - $receivers[$receiver['type']][] = $receiver['name']; + foreach (Tag::getByURIId($uriId, [Tag::TO, Tag::CC, Tag::BCC]) as $receiver) { + // We only display BCC when it contains the current user + if (($receiver['type'] == Tag::BCC) && ($receiver['url'] != $own_url)) { + continue; + } + + if ($receiver['url'] == ActivityPub::PUBLIC_COLLECTION) { + $receivers[$receiver['type']][] = DI::l10n()->t('Public'); + } else { + $apcontact = DBA::selectFirst('apcontact', ['name'], ['followers' => $receiver['url']]); + if (!empty($apcontact['name'])) { + $receivers[$receiver['type']][] = DI::l10n()->t('Followers (%s)', $apcontact['name']); + } elseif ($apcontact = APContact::getByURL($receiver['url'], false)) { + $receivers[$receiver['type']][] = $apcontact['name']; + } else { + $receivers[$receiver['type']][] = $receiver['name']; + } + } } $output = ''; @@ -180,6 +222,9 @@ class PermissionTooltip extends \Friendica\BaseModule case Tag::CC: $output .= DI::l10n()->t('CC: %s
', implode(', ', $receiver)); break; + case Tag::BCC: + $output .= DI::l10n()->t('BCC: %s
', implode(', ', $receiver)); + break; } }