From b7a5e076fc4d10253d703165040f4ba12e82915f Mon Sep 17 00:00:00 2001 From: Michael Date: Sun, 11 Mar 2018 18:12:38 +0000 Subject: [PATCH] Fix: The ownership of forum items had been wrong --- src/Model/Item.php | 18 ++++++++++++------ src/Protocol/OStatus.php | 1 + 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/src/Model/Item.php b/src/Model/Item.php index 13e650fa5b..292301a4e9 100644 --- a/src/Model/Item.php +++ b/src/Model/Item.php @@ -898,7 +898,11 @@ class Item extends BaseObject $item['uid'] = 0; $item['origin'] = 0; $item['wall'] = 0; - $item['contact-id'] = Contact::getIdForURL($item['author-link']); + if ($item['uri'] == $item['parent-uri']) { + $item['contact-id'] = Contact::getIdForURL($item['owner-link']); + } else { + $item['contact-id'] = Contact::getIdForURL($item['author-link']); + } if (in_array($item['type'], ["net-comment", "wall-comment"])) { $item['type'] = 'remote-comment'; @@ -1265,21 +1269,23 @@ class Item extends BaseObject } // now change this copy of the post to a forum head message and deliver to all the tgroup members - $self = dba::selectFirst('contact', ['name', 'url', 'thumb'], ['uid' => $uid, 'self' => true]); + $self = dba::selectFirst('contact', ['id', 'name', 'url', 'thumb'], ['uid' => $uid, 'self' => true]); if (!DBM::is_result($self)) { return; } + $owner_id = Contact::getIdForURL($self['url']); + // also reset all the privacy bits to the forum default permissions $private = ($user['allow_cid'] || $user['allow_gid'] || $user['deny_cid'] || $user['deny_gid']) ? 1 : 0; $forum_mode = ($prvgroup ? 2 : 1); - $fields = ['wall' => true, 'origin' => true, 'forum_mode' => $forum_mode, - 'owner-name' => $self['name'], 'owner-link' => $self['url'], 'owner-avatar' => $self['thumb'], - 'private' => $private, 'allow_cid' => $user['allow_cid'], 'allow_gid' => $user['allow_gid'], - 'deny_cid' => $user['deny_cid'], 'deny_gid' => $user['deny_gid']]; + $fields = ['wall' => true, 'origin' => true, 'forum_mode' => $forum_mode, 'contact-id' => $self['id'], + 'owner-id' => $owner_id, 'owner-name' => $self['name'], 'owner-link' => $self['url'], + 'owner-avatar' => $self['thumb'], 'private' => $private, 'allow_cid' => $user['allow_cid'], + 'allow_gid' => $user['allow_gid'], 'deny_cid' => $user['deny_cid'], 'deny_gid' => $user['deny_gid']]; dba::update('item', $fields, ['id' => $item_id]); self::updateThread($item_id); diff --git a/src/Protocol/OStatus.php b/src/Protocol/OStatus.php index 710ce11e8f..fe4572ed5d 100644 --- a/src/Protocol/OStatus.php +++ b/src/Protocol/OStatus.php @@ -2131,6 +2131,7 @@ class OStatus AND NOT `item`.`deleted` AND NOT `item`.`private` AND `item`.`visible` + AND `item`.`wall` AND `thread`.`network` IN ('%s', '%s') $sql_extra ORDER BY `item`.`created` DESC LIMIT %d",