Separate $parent_item and $toplevel_item in mod/item

This commit is contained in:
Hypolite Petovan 2020-11-11 22:58:34 -05:00
parent 355cd401ae
commit eebcf1ae86

View File

@ -100,29 +100,32 @@ function item_post(App $a) {
} }
// Is this a reply to something? // Is this a reply to something?
$toplevel_item_id = intval($_REQUEST['parent'] ?? 0); $parent_item_id = intval($_REQUEST['parent'] ?? 0);
$thr_parent_uri = trim($_REQUEST['parent_uri'] ?? ''); $thr_parent_uri = trim($_REQUEST['parent_uri'] ?? '');
$parent_item = null;
$toplevel_item = null; $toplevel_item = null;
$parent_user = null; $toplevel_item_id = null;
$toplevel_user_id = null;
$objecttype = null; $objecttype = null;
$profile_uid = ($_REQUEST['profile_uid'] ?? 0) ?: local_user(); $profile_uid = ($_REQUEST['profile_uid'] ?? 0) ?: local_user();
$posttype = ($_REQUEST['post_type'] ?? '') ?: Item::PT_ARTICLE; $posttype = ($_REQUEST['post_type'] ?? '') ?: Item::PT_ARTICLE;
if ($toplevel_item_id || $thr_parent_uri) { if ($parent_item_id || $thr_parent_uri) {
if ($toplevel_item_id) { if ($parent_item_id) {
$toplevel_item = Item::selectFirst([], ['id' => $toplevel_item_id]); $parent_item = Item::selectFirst([], ['id' => $parent_item_id]);
} elseif ($thr_parent_uri) { } elseif ($thr_parent_uri) {
$toplevel_item = Item::selectFirst([], ['uri' => $thr_parent_uri, 'uid' => $profile_uid]); $parent_item = Item::selectFirst([], ['uri' => $thr_parent_uri, 'uid' => $profile_uid]);
} }
// if this isn't the top-level parent of the conversation, find it // if this isn't the top-level parent of the conversation, find it
if (DBA::isResult($toplevel_item)) { if (DBA::isResult($parent_item)) {
// The URI and the contact is taken from the direct parent which needn't to be the top parent // The URI and the contact is taken from the direct parent which needn't to be the top parent
$thr_parent_uri = $toplevel_item['uri']; $thr_parent_uri = $parent_item['uri'];
$toplevel_item = $parent_item;
if ($toplevel_item['gravity'] != GRAVITY_PARENT) { if ($parent_item['gravity'] != GRAVITY_PARENT) {
$toplevel_item = Item::selectFirst([], ['id' => $toplevel_item['parent']]); $toplevel_item = Item::selectFirst([], ['id' => $toplevel_item['parent']]);
} }
} }
@ -146,7 +149,7 @@ function item_post(App $a) {
} }
$toplevel_item_id = $toplevel_item['id']; $toplevel_item_id = $toplevel_item['id'];
$parent_user = $toplevel_item['uid']; $toplevel_user_id = $toplevel_item['uid'];
$objecttype = Activity\ObjectType::COMMENT; $objecttype = Activity\ObjectType::COMMENT;
} }
@ -168,8 +171,8 @@ function item_post(App $a) {
} }
// Ensure that the user id in a thread always stay the same // Ensure that the user id in a thread always stay the same
if (!is_null($parent_user) && in_array($parent_user, [local_user(), 0])) { if (!is_null($toplevel_user_id) && in_array($toplevel_user_id, [local_user(), 0])) {
$profile_uid = $parent_user; $profile_uid = $toplevel_user_id;
} }
// Check for multiple posts with the same message id (when the post was created via API) // Check for multiple posts with the same message id (when the post was created via API)