$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']
- );
- $comments = dba::inArray($thread_items);
+ $thread_items = dba::p(item_query()."AND `item`.`parent-uri` = ?
+ AND `item`.`uid` IN (0, ?) $block_sql
+ ORDER BY `parent` DESC, `gravity` ASC, `id` ASC" . $limit,
+ $parent['uri'], local_user());
- // 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);
- }
+ $comments = dba::inArray($thread_items);
if (count($comments) != 0) {
$items = array_merge($items, $comments);