Removed some more API functions
This commit is contained in:
parent
647ecd4bd3
commit
f04b07b20a
2 changed files with 66 additions and 138 deletions
195
include/api.php
195
include/api.php
|
@ -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));
|
||||
$statuses = Post::selectForUser($uid, Item::DISPLAY_FIELDLIST, $condition, $params);
|
||||
|
||||
$ret = api_format_items($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));
|
||||
}
|
||||
|
@ -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
|
||||
*/
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue