diff --git a/include/conversation.php b/include/conversation.php index ae12cf4827..5b7ebb78a1 100644 --- a/include/conversation.php +++ b/include/conversation.php @@ -900,38 +900,13 @@ function conversation_add_children($parents, $block_authors, $order) { $block_sql = $block_authors ? "AND NOT `author`.`hidden` AND NOT `author`.`blocked`" : ""; foreach ($parents AS $parent) { - $thread_items = dba::p(item_query()." AND `item`.`uid` = ? - AND `item`.`parent-uri` = ? $block_sql - ORDER BY `item`.`commented` DESC" . $limit, - local_user(), - $parent['uri'] - ); + $thread_items = dba::p(item_query()."AND `item`.`parent-uri` = ? + AND `item`.`uid` IN (0, ?) $block_sql + ORDER BY `item`.`uid` ASC, `item`.`commented` DESC" . $limit, + $parent['uri'], local_user()); + $comments = dba::inArray($thread_items); - // Check if the original item is in the result. - // When commenting from the community page there can be incomplete threads - if (count($comments) > 0) { - $parent_found = false; - foreach ($comments as $comment) { - if ($comment['uri'] == $comment['parent-uri']) { - $parent_found = true; - break; - } - } - if (!$parent_found) { - $comments = []; - } - } - - if (count($comments) == 0) { - $thread_items = dba::p(item_query()." AND `item`.`uid` = 0 - AND `item`.`parent-uri` = ? - ORDER BY `item`.`commented` DESC LIMIT ".intval($max_comments + 1), - $parent['uri'] - ); - $comments = dba::inArray($thread_items); - } - if (count($comments) != 0) { $items = array_merge($items, $comments); } diff --git a/mod/display.php b/mod/display.php index eaf72c093f..13a0ba465f 100644 --- a/mod/display.php +++ b/mod/display.php @@ -344,10 +344,10 @@ function display_content(App $a, $update = false, $update_uid = 0) { } } - $r = dba::p(item_query()."AND `item`.`parent` = (SELECT `parent` FROM `item` WHERE `id` = ?) - $sql_extra - ORDER BY `parent` DESC, `gravity` ASC, `id` ASC", - $item_id + $r = dba::p(item_query()."AND `item`.`parent-uri` = (SELECT `parent-uri` FROM `item` WHERE `id` = ?) + AND `item`.`uid` IN (0, ?) $sql_extra + ORDER BY `item`.`uid` ASC, `parent` DESC, `gravity` ASC, `id` ASC", + $item_id, local_user() ); if (!DBM::is_result($r)) {