X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=include%2Fapi.php;h=4aa4b21e29199e4a0c339cb884d94b251f2062fd;hb=73ca1096ecc9d8b26cc0f768e81477b7b3e6fe0d;hp=1e43081070c323db407b311eb9a7c481e61dfae7;hpb=be9abc341a04e0ab9740683b2b7ae4330bce93e2;p=friendica.git diff --git a/include/api.php b/include/api.php index 1e43081070..4aa4b21e29 100644 --- a/include/api.php +++ b/include/api.php @@ -1881,14 +1881,14 @@ function api_statuses_show($type) $conversation = !empty($_REQUEST['conversation']); // try to fetch the item for the local user - or the public item, if there is no local one - $uri_item = Post::selectFirst(['uri'], ['id' => $id]); + $uri_item = Post::selectFirst(['uri-id'], ['id' => $id]); if (!DBA::isResult($uri_item)) { - throw new BadRequestException("There is no status with this id."); + throw new BadRequestException(sprintf("There is no status with the id %d", $id)); } - $item = Post::selectFirst(['id'], ['uri' => $uri_item['uri'], 'uid' => [0, api_user()]], ['order' => ['uid' => true]]); + $item = Post::selectFirst(['id'], ['uri-id' => $uri_item['uri-id'], 'uid' => [0, api_user()]], ['order' => ['uid' => true]]); if (!DBA::isResult($item)) { - throw new BadRequestException("There is no status with this id."); + throw new BadRequestException(sprintf("There is no status with the uri-id %d for the given user.", $uri_item['uri-id'])); } $id = $item['id']; @@ -1905,7 +1905,7 @@ function api_statuses_show($type) /// @TODO How about copying this to above methods which don't check $r ? if (!DBA::isResult($statuses)) { - throw new BadRequestException("There is no status with this id."); + throw new BadRequestException(sprintf("There is no status or conversation with the id %d.", $id)); } $ret = api_format_items(Post::toArray($statuses), $user_info, false, $type); @@ -1964,12 +1964,12 @@ function api_conversation_show($type) Logger::info(API_LOG_PREFIX . '{subaction}', ['module' => 'api', 'action' => 'conversation', 'subaction' => 'show', 'id' => $id]); // try to fetch the item for the local user - or the public item, if there is no local one - $item = Post::selectFirst(['parent-uri'], ['id' => $id]); + $item = Post::selectFirst(['parent-uri-id'], ['id' => $id]); if (!DBA::isResult($item)) { throw new BadRequestException("There is no status with this id."); } - $parent = Post::selectFirst(['id'], ['uri' => $item['parent-uri'], 'uid' => [0, api_user()]], ['order' => ['uid' => true]]); + $parent = Post::selectFirst(['id'], ['uri-id' => $item['parent-uri-id'], 'uid' => [0, api_user()]], ['order' => ['uid' => true]]); if (!DBA::isResult($parent)) { throw new BadRequestException("There is no status with this id."); } @@ -2041,9 +2041,9 @@ function api_statuses_repeat($type) Logger::log('API: api_statuses_repeat: '.$id); $fields = ['uri-id', 'network', 'body', 'title', 'author-name', 'author-link', 'author-avatar', 'guid', 'created', 'plink']; - $item = Item::selectFirst($fields, ['id' => $id, 'private' => [Item::PUBLIC, Item::UNLISTED]]); - - if (DBA::isResult($item) && $item['body'] != "") { + $item = Post::selectFirst($fields, ['id' => $id, 'private' => [Item::PUBLIC, Item::UNLISTED]]); + + if (DBA::isResult($item) && !empty($item['body'])) { if (in_array($item['network'], [Protocol::ACTIVITYPUB, Protocol::DFRN, Protocol::TWITTER])) { if (!Item::performActivity($id, 'announce', local_user())) { throw new InternalServerErrorException(); @@ -2171,11 +2171,11 @@ function api_statuses_mentions($type) $start = max(0, ($page - 1) * $count); - $query = "SELECT `item`.`id` FROM `user-item` - INNER JOIN `item` ON `item`.`id` = `user-item`.`iid` AND `item`.`gravity` IN (?, ?) - WHERE (`user-item`.`hidden` IS NULL OR NOT `user-item`.`hidden`) AND - `user-item`.`uid` = ? AND `user-item`.`notification-type` & ? != 0 - AND `user-item`.`iid` > ?"; + $query = "`gravity` IN (?, ?) AND `id` IN (SELECT `iid` FROM `user-item` + WHERE (`hidden` IS NULL OR NOT `hidden`) AND + `uid` = ? AND `notification-type` & ? != 0 + AND `iid` > ?"; + $condition = [GRAVITY_PARENT, GRAVITY_COMMENT, api_user(), UserItem::NOTIF_EXPLICIT_TAGGED | UserItem::NOTIF_IMPLICIT_TAGGED | UserItem::NOTIF_THREAD_COMMENT | UserItem::NOTIF_DIRECT_COMMENT | @@ -2183,23 +2183,16 @@ function api_statuses_mentions($type) $since_id]; if ($max_id > 0) { - $query .= " AND `item`.`id` <= ?"; + $query .= " AND `iid` <= ?"; $condition[] = $max_id; } - $query .= " ORDER BY `user-item`.`iid` DESC LIMIT ?, ?"; - $condition[] = $start; - $condition[] = $count; + $query .= ")"; - $useritems = DBA::p($query, $condition); - $itemids = []; - while ($useritem = DBA::fetch($useritems)) { - $itemids[] = $useritem['id']; - } - DBA::close($useritems); + array_unshift($condition, $query); $params = ['order' => ['id' => true], 'limit' => [$start, $count]]; - $statuses = Post::selectForUser(api_user(), [], ['id' => $itemids], $params); + $statuses = Post::selectForUser(api_user(), [], $condition, $params); $ret = api_format_items(Post::toArray($statuses), $user_info, false, $type); @@ -2875,7 +2868,7 @@ function api_format_items_activities($item, $type = "json") $condition = ['uid' => $item['uid'], 'thr-parent' => $item['uri'], 'gravity' => GRAVITY_ACTIVITY]; $ret = Post::selectForUser($item['uid'], ['author-id', 'verb'], $condition); - while ($parent_item = Item::fetch($ret)) { + while ($parent_item = Post::fetch($ret)) { // not used as result should be structured like other user data //builtin_activity_puller($i, $activities); @@ -3304,7 +3297,7 @@ function api_lists_statuses($type) $start = max(0, ($page - 1) * $count); - $condition = ["`uid` = ? AND `gravity` IN (?, ?) AND `id` > ? AND `group_member`.`gid` = ?", + $condition = ["`uid` = ? AND `gravity` IN (?, ?) AND `id` > ? AND `group-id` = ?", api_user(), GRAVITY_PARENT, GRAVITY_COMMENT, $since_id, $_REQUEST['list_id']]; if ($max_id > 0) { @@ -6014,7 +6007,7 @@ function bindComments(&$data) } $idStr = DBA::escape(implode(', ', $ids)); - $sql = "SELECT `parent`, COUNT(*) as comments FROM `item` WHERE `parent` IN ($idStr) AND `deleted` = ? AND `gravity`= ? GROUP BY `parent`"; + $sql = "SELECT `parent`, COUNT(*) as comments FROM `post-view` WHERE `parent` IN ($idStr) AND `deleted` = ? AND `gravity`= ? GROUP BY `parent`"; $items = DBA::p($sql, 0, GRAVITY_COMMENT); $itemsData = DBA::toArray($items);