Merge branch 'friendica:2023.09-rc' into Leftovers-from-PR-#13339

This commit is contained in:
Raroun 2023-11-01 08:21:50 +01:00 committed by GitHub
commit 1ede164450
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
26 changed files with 13728 additions and 8954 deletions

View file

@ -25,7 +25,6 @@ use Friendica\Content\PageInfo;
use Friendica\Content\Text\BBCode;
use Friendica\Content\Text\Markdown;
use Friendica\Core\Protocol;
use Friendica\Core\System;
use Friendica\Core\Worker;
use Friendica\Database\DBA;
use Friendica\DI;
@ -192,6 +191,7 @@ class Statuses extends BaseApi
$item['title'] = '';
$item['body'] = $this->formatStatus($request['status'], $uid);
$item['app'] = $this->getApp();
$item['visibility'] = $request['visibility'];
switch ($request['visibility']) {
case 'public':
@ -209,6 +209,18 @@ class Statuses extends BaseApi
$item['private'] = Item::UNLISTED;
break;
case 'private':
if ($request['in_reply_to_id']) {
$parent_item = Post::selectFirst(Item::ITEM_FIELDLIST, ['uri-id' => $request['in_reply_to_id'], 'uid' => $uid, 'private' => Item::PRIVATE]);
if (!empty($parent_item)) {
$item['allow_cid'] = $parent_item['allow_cid'];
$item['allow_gid'] = $parent_item['allow_gid'];
$item['deny_cid'] = $parent_item['deny_cid'];
$item['deny_gid'] = $parent_item['deny_gid'];
$item['private'] = $parent_item['private'];
break;
}
}
if (!empty($owner['allow_cid'] . $owner['allow_gid'] . $owner['deny_cid'] . $owner['deny_gid'])) {
$item['allow_cid'] = $owner['allow_cid'];
$item['allow_gid'] = $owner['allow_gid'];
@ -287,7 +299,7 @@ class Statuses extends BaseApi
}
$item = DI::contentItem()->expandTags($item, $request['visibility'] == 'direct');
if (!empty($request['media_ids'])) {
$item = $this->storeMediaIds($request['media_ids'], $item);
}

View file

@ -113,12 +113,26 @@ class PermissionTooltip extends \Friendica\BaseModule
exit;
}
if (!empty($model['allow_cid']) || !empty($model['allow_gid']) || !empty($model['deny_cid']) || !empty($model['deny_gid'])) {
$receivers = $this->fetchReceiversFromACL($model);
}
$this->httpExit(DI::l10n()->t('Visible to:') . '<br />' . $receivers);
}
/**
* Fetch a list of receivers based on the ACL data
*
* @param array $model
* @return string
*/
private function fetchReceiversFromACL(array $model)
{
$allowed_users = $model['allow_cid'];
$allowed_circles = $model['allow_gid'];
$deny_users = $model['deny_cid'];
$deny_circles = $model['deny_gid'];
$o = DI::l10n()->t('Visible to:') . '<br />';
$l = [];
if (count($allowed_circles)) {
@ -165,11 +179,7 @@ class PermissionTooltip extends \Friendica\BaseModule
$l[] = '<strike>' . $contact['name'] . '</strike>';
}
if (!empty($l)) {
$this->httpExit($o . implode(', ', $l));
} else {
$this->httpExit($o . $receivers);;
}
return implode(', ', $l);
}
/**

View file

@ -199,6 +199,7 @@ class Account extends BaseSettings
DI::sysmsg()->addNotice(DI::l10n()->t('Settings were not updated.'));
}
User::setCommunityUserSettings(DI::userSession()->getLocalUserId());
DI::baseUrl()->redirect($redirectUrl);
}
@ -321,37 +322,16 @@ class Account extends BaseSettings
$page_flags = User::PAGE_FLAGS_COMMUNITY;
}
$fields = [];
$profile_fields = [];
if ($account_type == User::ACCOUNT_TYPE_COMMUNITY) {
DI::pConfig()->set(DI::userSession()->getLocalUserId(), 'system', 'unlisted', true);
$fields = [
'allow_cid' => '',
'allow_gid' => $page_flags == User::PAGE_FLAGS_PRVGROUP ?
'<' . Circle::FOLLOWERS . '>'
: '',
'deny_cid' => '',
'deny_gid' => '',
'blockwall' => true,
'blocktags' => true,
];
$profile_fields = [
'hide-friends' => true,
];
}
$fields = array_merge($fields, [
$fields = [
'page-flags' => $page_flags,
'account-type' => $account_type,
]);
];
if (!User::update($fields, DI::userSession()->getLocalUserId()) || !empty($profile_fields) && !Profile::update($profile_fields, DI::userSession()->getLocalUserId())) {
if (!User::update($fields, DI::userSession()->getLocalUserId())) {
DI::sysmsg()->addNotice(DI::l10n()->t('Settings were not updated.'));
}
User::setCommunityUserSettings(DI::userSession()->getLocalUserId());
DI::baseUrl()->redirect($redirectUrl);
}