]> git.mxchange.org Git - friendica.git/commitdiff
Removed some more API functions
authorMichael <heluecht@pirati.ca>
Sat, 20 Nov 2021 23:38:52 +0000 (23:38 +0000)
committerMichael <heluecht@pirati.ca>
Sat, 20 Nov 2021 23:38:52 +0000 (23:38 +0000)
include/api.php
tests/legacy/ApiTest.php

index 9a619ce52fabad2e2befdce7ece59cde623bd8a4..d1bd8a9abd50346ae3e9fd5c4faf17c02672a0fe 100644 (file)
@@ -898,9 +898,13 @@ function api_search($type)
 
        $statuses = $statuses ?: Post::selectForUser($uid, [], $condition, $params);
 
-       $data['status'] = api_format_items(Post::toArray($statuses), $type);
+       $ret = [];
+       while ($status = DBA::fetch($statuses)) {
+               $ret[] = api_format_item($status, $type);
+       }
+       DBA::close($statuses);
 
-       bindComments($data['status']);
+       $data['status'] = $ret;
 
        return DI::apiResponse()->formatData('statuses', $type, $data);
 }
@@ -967,15 +971,13 @@ function api_statuses_home_timeline($type)
        $params = ['order' => ['id' => true], 'limit' => [$start, $count]];
        $statuses = Post::selectForUser($uid, [], $condition, $params);
 
-       $items = Post::toArray($statuses);
-
-       $ret = api_format_items($items, $type);
-
-       // Set all posts from the query above to seen
+       $ret = [];
        $idarray = [];
-       foreach ($items as $item) {
-               $idarray[] = intval($item["id"]);
+       while ($status = DBA::fetch($statuses)) {
+               $ret[] = api_format_item($status, $type);
+               $idarray[] = intval($status['id']);
        }
+       DBA::close($statuses);
 
        if (!empty($idarray)) {
                $unseen = Post::exists(['unseen' => true, 'id' => $idarray]);
@@ -984,8 +986,6 @@ function api_statuses_home_timeline($type)
                }
        }
 
-       bindComments($ret);
-
        return DI::apiResponse()->formatData("statuses", $type, ['status' => $ret], Contact::createSelfFromUserId($uid));
 }
 
@@ -1034,8 +1034,6 @@ function api_statuses_public_timeline($type)
 
                $params = ['order' => ['id' => true], 'limit' => [$start, $count]];
                $statuses = Post::selectForUser($uid, [], $condition, $params);
-
-               $r = Post::toArray($statuses);
        } else {
                $condition = ["`gravity` IN (?, ?) AND `id` > ? AND `private` = ? AND `wall` AND `origin` AND NOT `author-hidden`",
                        GRAVITY_PARENT, GRAVITY_COMMENT, $since_id, Item::PUBLIC];
@@ -1051,13 +1049,13 @@ function api_statuses_public_timeline($type)
 
                $params = ['order' => ['id' => true], 'limit' => [$start, $count]];
                $statuses = Post::selectForUser($uid, [], $condition, $params);
-
-               $r = Post::toArray($statuses);
        }
 
-       $ret = api_format_items($r, $type);
-
-       bindComments($ret);
+       $ret = [];
+       while ($status = DBA::fetch($statuses)) {
+               $ret[] = api_format_item($status, $type);
+       }
+       DBA::close($statuses);
 
        return DI::apiResponse()->formatData("statuses", $type, ['status' => $ret], Contact::createSelfFromUserId($uid));
 }
@@ -1099,11 +1097,13 @@ function api_statuses_networkpublic_timeline($type)
        }
 
        $params = ['order' => ['id' => true], 'limit' => [$start, $count]];
-       $statuses = Post::toArray(Post::selectForUser($uid, Item::DISPLAY_FIELDLIST, $condition, $params));
-
-       $ret = api_format_items($statuses, $type);
+       $statuses = Post::selectForUser($uid, Item::DISPLAY_FIELDLIST, $condition, $params);
 
-       bindComments($ret);
+       $ret = [];
+       while ($status = DBA::fetch($statuses)) {
+               $ret[] = api_format_item($status, $type);
+       }
+       DBA::close($statuses);
 
        return DI::apiResponse()->formatData("statuses", $type, ['status' => $ret], Contact::createSelfFromUserId($uid));
 }
@@ -1173,7 +1173,11 @@ function api_statuses_show($type)
                throw new BadRequestException(sprintf("There is no status or conversation with the id %d.", $id));
        }
 
-       $ret = api_format_items(Post::toArray($statuses), $type);
+       $ret = [];
+       while ($status = DBA::fetch($statuses)) {
+               $ret[] = api_format_item($status, $type);
+       }
+       DBA::close($statuses);
 
        if ($conversation) {
                $data = ['status' => $ret];
@@ -1252,7 +1256,11 @@ function api_conversation_show($type)
                throw new BadRequestException("There is no status with id $id.");
        }
 
-       $ret = api_format_items(Post::toArray($statuses), $type);
+       $ret = [];
+       while ($status = DBA::fetch($statuses)) {
+               $ret[] = api_format_item($status, $type);
+       }
+       DBA::close($statuses);
 
        $data = ['status' => $ret];
        return DI::apiResponse()->formatData("statuses", $type, $data);
@@ -1438,7 +1446,11 @@ function api_statuses_mentions($type)
        $params = ['order' => ['id' => true], 'limit' => [$start, $count]];
        $statuses = Post::selectForUser($uid, [], $condition, $params);
 
-       $ret = api_format_items(Post::toArray($statuses), $type);
+       $ret = [];
+       while ($status = DBA::fetch($statuses)) {
+               $ret[] = api_format_item($status, $type);
+       }
+       DBA::close($statuses);
 
        return DI::apiResponse()->formatData("statuses", $type, ['status' => $ret], Contact::createSelfFromUserId($uid));
 }
@@ -1498,9 +1510,11 @@ function api_statuses_user_timeline($type)
        $params = ['order' => ['id' => true], 'limit' => [$start, $count]];
        $statuses = Post::selectForUser($uid, [], $condition, $params);
 
-       $ret = api_format_items(Post::toArray($statuses), $type);
-
-       bindComments($ret);
+       $ret = [];
+       while ($status = DBA::fetch($statuses)) {
+               $ret[] = api_format_item($status, $type);
+       }
+       DBA::close($statuses);
 
        return DI::apiResponse()->formatData("statuses", $type, ['status' => $ret], Contact::createSelfFromUserId($uid));
 }
@@ -1617,9 +1631,11 @@ function api_favorites($type)
 
        $statuses = Post::selectForUser($uid, [], $condition, $params);
 
-       $ret = api_format_items(Post::toArray($statuses), $type);
-
-       bindComments($ret);
+       $ret = [];
+       while ($status = DBA::fetch($statuses)) {
+               $ret[] = api_format_item($status, $type);
+       }
+       DBA::close($statuses);
 
        return DI::apiResponse()->formatData("statuses", $type, ['status' => $ret], Contact::createSelfFromUserId($uid));
 }
@@ -2104,27 +2120,6 @@ function api_format_items_activities($item, $type = "json")
        return $activities;
 }
 
-/**
- * format items to be returned by api
- *
- * @param array  $items       array of items
- * @param string $type        Return type (atom, rss, xml, json)
- * @return array
- * @throws BadRequestException
- * @throws ImagickException
- * @throws InternalServerErrorException
- * @throws UnauthorizedException
- */
-function api_format_items($items, $type = "json")
-{
-       $ret = [];
-       foreach ($items as $item) {
-               $ret[] = api_format_item($item, $type);
-       }
-
-       return $ret;
-}
-
 /**
  * @param array  $item       Item record
  * @param string $type       Return format (atom, rss, xml, json)
@@ -2178,7 +2173,8 @@ function api_format_item($item, $type = "json")
                'external_url' => DI::baseUrl() . "/display/" . $item['guid'],
                'friendica_activities' => api_format_items_activities($item, $type),
                'friendica_title' => $item['title'],
-               'friendica_html' => BBCode::convertForUriId($item['uri-id'], $item['body'], BBCode::EXTERNAL)
+               'friendica_html' => BBCode::convertForUriId($item['uri-id'], $item['body'], BBCode::EXTERNAL),
+               'friendica_comments' => Post::countPosts(['thr-parent-id' => $item['uri-id'], 'deleted' => false, 'gravity' => GRAVITY_COMMENT])
        ];
 
        if (count($converted["attachments"]) > 0) {
@@ -2415,7 +2411,11 @@ function api_lists_statuses($type)
        $params = ['order' => ['id' => true], 'limit' => [$start, $count]];
        $statuses = Post::selectForUser($uid, [], $condition, $params);
 
-       $items = api_format_items(Post::toArray($statuses), $type);
+       $items = [];
+       while ($status = DBA::fetch($statuses)) {
+               $items[] = api_format_item($status, $type);
+       }
+       DBA::close($statuses);
 
        return DI::apiResponse()->formatData("statuses", $type, ['status' => $items], Contact::createSelfFromUserId($uid));
 }
@@ -3646,7 +3646,12 @@ function prepare_photo_data($type, $scale, $photo_id)
        $statuses = Post::selectForUser($uid, [], $condition);
 
        // prepare output of comments
-       $commentData = api_format_items(Post::toArray($statuses), $type);
+       $commentData = [];
+       while ($status = DBA::fetch($statuses)) {
+               $commentData[] = api_format_item($status, $type);
+       }
+       DBA::close($statuses);
+
        $comments = [];
        if ($type == "xml") {
                $k = 0;
@@ -4163,7 +4168,7 @@ function api_friendica_notification_seen($type)
                        $item = Post::selectFirstForUser($uid, [], ['id' => $Notify->iid, 'uid' => $uid]);
                        if (DBA::isResult($item)) {
                                // we found the item, return it to the user
-                               $ret  = api_format_items([$item], $type);
+                               $ret = [api_format_item($item, $type)];
                                $data = ['status' => $ret];
                                return DI::apiResponse()->formatData('status', $type, $data);
                        }
@@ -4247,81 +4252,3 @@ function api_friendica_direct_messages_search($type, $box = "")
 
 /// @TODO move to top of file or somewhere better
 api_register_func('api/friendica/direct_messages_search', 'api_friendica_direct_messages_search', true);
-
-/*
- * Number of comments
- *
- * Bind comment numbers(friendica_comments: Int) on each statuses page of *_timeline / favorites / search
- *
- * @param object $data [Status, Status]
- *
- * @return void
- */
-function bindComments(&$data)
-{
-       if (count($data) == 0) {
-               return;
-       }
-
-       $ids = [];
-       $comments = [];
-       foreach ($data as $item) {
-               $ids[] = $item['id'];
-       }
-
-       $idStr = DBA::escape(implode(', ', $ids));
-       $sql = "SELECT `parent`, COUNT(*) as comments FROM `post-user-view` WHERE `parent` IN ($idStr) AND `deleted` = ? AND `gravity`= ? GROUP BY `parent`";
-       $items = DBA::p($sql, 0, GRAVITY_COMMENT);
-       $itemsData = DBA::toArray($items);
-
-       foreach ($itemsData as $item) {
-               $comments[$item['parent']] = $item['comments'];
-       }
-
-       foreach ($data as $idx => $item) {
-               $id = $item['id'];
-               $data[$idx]['friendica_comments'] = isset($comments[$id]) ? $comments[$id] : 0;
-       }
-}
-
-/*
-@TODO Maybe open to implement?
-To.Do:
-       [pagename] => api/1.1/statuses/lookup.json
-       [id] => 605138389168451584
-       [include_cards] => true
-       [cards_platform] => Android-12
-       [include_entities] => true
-       [include_my_retweet] => 1
-       [include_rts] => 1
-       [include_reply_count] => true
-       [include_descendent_reply_count] => true
-(?)
-
-
-Not implemented by now:
-statuses/retweets_of_me
-friendships/create
-friendships/destroy
-friendships/exists
-friendships/show
-account/update_location
-account/update_profile_background_image
-blocks/create
-blocks/destroy
-friendica/profile/update
-friendica/profile/create
-friendica/profile/delete
-
-Not implemented in status.net:
-statuses/retweeted_to_me
-statuses/retweeted_by_me
-direct_messages/destroy
-account/end_session
-account/update_delivery_device
-notifications/follow
-notifications/leave
-blocks/exists
-blocks/blocking
-lists
-*/
index f654499ef037cfb9b5dcf90e43c4ec3fc4ea8d77..a64ffbf914a604c6556917264096a416332afe49 100644 (file)
@@ -2236,8 +2236,8 @@ class ApiTest extends FixtureTest
                                'plink'          => '',
                        ]
                ];
-               $result = api_format_items($items, ['id' => 0], true);
-               foreach ($result as $status) {
+               foreach ($items as $item) {
+                       $status = api_format_item($item);
                        self::assertStatus($status);
                }
        }
@@ -2259,8 +2259,9 @@ class ApiTest extends FixtureTest
                                'plink'          => '',
                        ]
                ];
-               $result = api_format_items($items, ['id' => 0], true, 'xml');
-               foreach ($result as $status) {
+
+               foreach ($items as $item) {
+                       $status = api_format_item($item, 'xml');
                        self::assertStatus($status);
                }
        }