t('Wrong type "%s", expected one of: %s', $type, implode(', ', $expectedTypes))); } $condition = ['id' => $referenceId]; if ($type == 'item') { $fields = ['uid', 'psid', 'private']; $model = Post::selectFirst($fields, $condition); } else { $fields = ['uid', 'allow_cid', 'allow_gid', 'deny_cid', 'deny_gid']; $model = DBA::selectFirst($type, $fields, $condition); $model['allow_cid'] = DI::aclFormatter()->expand($model['allow_cid']); $model['allow_gid'] = DI::aclFormatter()->expand($model['allow_gid']); $model['deny_cid'] = DI::aclFormatter()->expand($model['deny_cid']); $model['deny_gid'] = DI::aclFormatter()->expand($model['deny_gid']); } if (!DBA::isResult($model)) { throw new HttpException\NotFoundException(DI::l10n()->t('Model not found')); } if (isset($model['psid'])) { $permissionSet = DI::permissionSet()->selectOneById($model['psid'], $model['uid']); $model['allow_cid'] = $permissionSet->allow_cid; $model['allow_gid'] = $permissionSet->allow_gid; $model['deny_cid'] = $permissionSet->deny_cid; $model['deny_gid'] = $permissionSet->deny_gid; } // Kept for backwards compatiblity Hook::callAll('lockview_content', $model); if ($model['uid'] != local_user() || isset($model['private']) && $model['private'] == Item::PRIVATE && empty($model['allow_cid']) && empty($model['allow_gid']) && empty($model['deny_cid']) && empty($model['deny_gid'])) { echo DI::l10n()->t('Remote privacy information not available.'); exit; } $allowed_users = $model['allow_cid']; $allowed_groups = $model['allow_gid']; $deny_users = $model['deny_cid']; $deny_groups = $model['deny_gid']; $o = DI::l10n()->t('Visible to:') . '
'; $l = []; if (count($allowed_groups)) { $key = array_search(Group::FOLLOWERS, $allowed_groups); if ($key !== false) { $l[] = '' . DI::l10n()->t('Followers') . ''; unset($allowed_groups[$key]); } $key = array_search(Group::MUTUALS, $allowed_groups); if ($key !== false) { $l[] = '' . DI::l10n()->t('Mutuals') . ''; unset($allowed_groups[$key]); } foreach (DI::dba()->selectToArray('group', ['name'], ['id' => $allowed_groups]) as $group) { $l[] = '' . $group['name'] . ''; } } foreach (DI::dba()->selectToArray('contact', ['name'], ['id' => $allowed_users]) as $contact) { $l[] = $contact['name']; } if (count($deny_groups)) { $key = array_search(Group::FOLLOWERS, $deny_groups); if ($key !== false) { $l[] = '' . DI::l10n()->t('Followers') . ''; unset($deny_groups[$key]); } $key = array_search(Group::MUTUALS, $deny_groups); if ($key !== false) { $l[] = '' . DI::l10n()->t('Mutuals') . ''; unset($deny_groups[$key]); } foreach (DI::dba()->selectToArray('group', ['name'], ['id' => $allowed_groups]) as $group) { $l[] = '' . $group['name'] . ''; } } foreach (DI::dba()->selectToArray('contact', ['name'], ['id' => $deny_users]) as $contact) { $l[] = '' . $contact['name'] . ''; } echo $o . implode(', ', $l); exit(); } }