diff --git a/mod/item.php b/mod/item.php index c18941471..99251a4a4 100644 --- a/mod/item.php +++ b/mod/item.php @@ -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']; diff --git a/src/Model/Item.php b/src/Model/Item.php index 1205516fa..f5b626b42 100644 --- a/src/Model/Item.php +++ b/src/Model/Item.php @@ -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'; diff --git a/src/Model/Photo.php b/src/Model/Photo.php index fa3ffe81b..34fd37a9d 100644 --- a/src/Model/Photo.php +++ b/src/Model/Photo.php @@ -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]);