$notify_items = [];
while ($item = DBA::fetch($items)) {
- Post\Media::deleteByURIId($item['uri-id'], [Post\Media::HTML]);
-
if (!empty($fields['body'])) {
if (!empty($item['quote-uri-id'])) {
$fields['body'] = BBCode::removeSharedData($fields['body']);
/*
* Do we already have this item?
* We have to check several networks since Friendica posts could be repeated
- * via OStatus (maybe Diasporsa as well)
+ * via OStatus (maybe Diaspora as well)
*/
$duplicate = self::getDuplicateID($item);
if ($duplicate) {
$item['post-type'] = empty($item['title']) ? self::PT_NOTE : self::PT_ARTICLE;
}
+ $defined_permissions = isset($item['allow_cid']) && isset($item['allow_gid']) && isset($item['deny_cid']) && isset($item['deny_gid']) && isset($item['private']);
+
$item['wall'] = intval($item['wall'] ?? 0);
$item['extid'] = trim($item['extid'] ?? '');
$item['author-name'] = trim($item['author-name'] ?? '');
$item['wall'] = $toplevel_parent['wall'];
// Reshares have to keep their permissions to allow forums to work
- if (!$item['origin'] || ($item['verb'] != Activity::ANNOUNCE)) {
+ if (!$defined_permissions && (!$item['origin'] || ($item['verb'] != Activity::ANNOUNCE))) {
$item['allow_cid'] = $toplevel_parent['allow_cid'];
$item['allow_gid'] = $toplevel_parent['allow_gid'];
$item['deny_cid'] = $toplevel_parent['deny_cid'];
* This differs from the above settings as it subtly allows comments from
* email correspondents to be private even if the overall thread is not.
*/
- if ($toplevel_parent['private']) {
+ if (!$defined_permissions && $toplevel_parent['private']) {
$item['private'] = $toplevel_parent['private'];
}
}
// ACL settings
- if (!empty($item['allow_cid'] . $item['allow_gid'] . $item['deny_cid'] . $item['deny_gid'])) {
+ if (!$defined_permissions && !empty($item['allow_cid'] . $item['allow_gid'] . $item['deny_cid'] . $item['deny_gid'])) {
$item['private'] = self::PRIVATE;
}