Merge pull request #8435 from annando/issue-8371-a

Issue 8371: Alternate Solution
This commit is contained in:
Hypolite Petovan 2020-03-21 17:28:13 -04:00 committed by GitHub
commit 7d1e0a72c1
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 29 additions and 25 deletions

View file

@ -244,10 +244,10 @@ function item_post(App $a) {
$body = preg_replace('#\[url=([^\]]*?)\]\[/url\]#ism', '[url]$1[/url]', $body);
if (!empty($orig_post)) {
$str_group_allow = $orig_post['allow_gid'] ?? '';
$str_contact_allow = $orig_post['allow_cid'] ?? '';
$str_group_deny = $orig_post['deny_gid'] ?? '';
$str_contact_deny = $orig_post['deny_cid'] ?? '';
$str_group_allow = $orig_post['allow_gid'];
$str_contact_allow = $orig_post['allow_cid'];
$str_group_deny = $orig_post['deny_gid'];
$str_contact_deny = $orig_post['deny_cid'];
$location = $orig_post['location'];
$coord = $orig_post['coord'];
$verb = $orig_post['verb'];

View file

@ -44,6 +44,7 @@ use Friendica\Util\Strings;
use Friendica\Util\XML;
use Friendica\Worker\Delivery;
use Text_LanguageDetect;
use Friendica\Repository\PermissionSet as RepPermissionSet;
class Item
{
@ -326,6 +327,21 @@ class Item
}
}
if ($row['internal-psid'] == RepPermissionSet::PUBLIC) {
if (array_key_exists('allow_cid', $row)) {
$row['allow_cid'] = '';
}
if (array_key_exists('allow_gid', $row)) {
$row['allow_gid'] = '';
}
if (array_key_exists('deny_cid', $row)) {
$row['deny_cid'] = '';
}
if (array_key_exists('deny_gid', $row)) {
$row['deny_gid'] = '';
}
}
if (array_key_exists('signed_text', $row) && array_key_exists('interaction', $row) && !is_null($row['interaction'])) {
$row['signed_text'] = $row['interaction'];
}
@ -338,6 +354,7 @@ class Item
unset($row['internal-activity']);
unset($row['internal-network']);
unset($row['internal-iid']);
unset($row['internal-psid']);
unset($row['internal-iaid']);
unset($row['internal-icid']);
unset($row['internal-user-ignored']);
@ -664,7 +681,7 @@ class Item
'unseen', 'deleted', 'origin', 'forum_mode', 'mention', 'global',
'id' => 'item_id', 'network', 'icid', 'iaid', 'id' => 'internal-iid',
'network' => 'internal-network', 'icid' => 'internal-icid',
'iaid' => 'internal-iaid'];
'iaid' => 'internal-iaid', 'psid' => 'internal-psid'];
if ($usermode) {
$fields['user-item'] = ['pinned', 'notification-type', 'ignored' => 'internal-user-ignored'];
@ -833,6 +850,7 @@ class Item
{
if (!empty($selected)) {
$selected[] = 'internal-iid';
$selected[] = 'internal-psid';
$selected[] = 'internal-iaid';
$selected[] = 'internal-icid';
$selected[] = 'internal-network';

View file

@ -298,14 +298,6 @@ class Photo
$backend_ref = $storage->put($Image->asString(), $backend_ref);
}
// Prevent "null" permissions
if (!empty($uid)) {
$allow_cid = $allow_cid ?? '<' . $uid . '>';
$allow_gid = $allow_gid ?? '';
$deny_cid = $deny_cid ?? '';
$deny_gid = $deny_gid ?? '';
}
$fields = [
"uid" => $uid,
"contact-id" => $cid,
@ -662,20 +654,13 @@ class Photo
continue;
}
if (DI::pConfig()->get($uid, 'system', 'accessible-photos')) {
$condition = ['resource-id' => $image_rid, 'uid' => $uid];
Logger::info('Set accessibility', ['condition' => $condition]);
Photo::update(['accessible' => true], $condition);
}
// Ensure to only modify photos that you own
$srch = '<' . intval($original_contact_id) . '>';
$condition = ["(`allow_cid` = ? OR `allow_cid` IS NULL) AND
(`allow_gid` = ? OR `allow_gid` IS NULL) AND
(`deny_cid` = ? OR `deny_cid` IS NULL) AND
(`deny_gid` = ? OR `deny_gid` IS NULL) AND
`resource-id` = ? AND `uid` =?", $srch, '', '', '', $image_rid, $uid];
$condition = [
'allow_cid' => $srch, 'allow_gid' => '', 'deny_cid' => '', 'deny_gid' => '',
'resource-id' => $image_rid, 'uid' => $uid
];
if (!Photo::exists($condition)) {
continue;
}
@ -688,7 +673,8 @@ class Photo
*/
$fields = ['allow_cid' => $str_contact_allow, 'allow_gid' => $str_group_allow,
'deny_cid' => $str_contact_deny, 'deny_gid' => $str_group_deny];
'deny_cid' => $str_contact_deny, 'deny_gid' => $str_group_deny,
'accessible' => DI::pConfig()->get($uid, 'system', 'accessible-photos', false)];
$condition = ['resource-id' => $image_rid, 'uid' => $uid];
Logger::info('Set permissions', ['condition' => $condition, 'permissions' => $fields]);