mirror of
https://github.com/friendica/friendica
synced 2024-11-14 03:42:53 +00:00
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);
|
$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);
|
return DI::apiResponse()->formatData('statuses', $type, $data);
|
||||||
}
|
}
|
||||||
|
@ -967,15 +971,13 @@ function api_statuses_home_timeline($type)
|
||||||
$params = ['order' => ['id' => true], 'limit' => [$start, $count]];
|
$params = ['order' => ['id' => true], 'limit' => [$start, $count]];
|
||||||
$statuses = Post::selectForUser($uid, [], $condition, $params);
|
$statuses = Post::selectForUser($uid, [], $condition, $params);
|
||||||
|
|
||||||
$items = Post::toArray($statuses);
|
$ret = [];
|
||||||
|
|
||||||
$ret = api_format_items($items, $type);
|
|
||||||
|
|
||||||
// Set all posts from the query above to seen
|
|
||||||
$idarray = [];
|
$idarray = [];
|
||||||
foreach ($items as $item) {
|
while ($status = DBA::fetch($statuses)) {
|
||||||
$idarray[] = intval($item["id"]);
|
$ret[] = api_format_item($status, $type);
|
||||||
|
$idarray[] = intval($status['id']);
|
||||||
}
|
}
|
||||||
|
DBA::close($statuses);
|
||||||
|
|
||||||
if (!empty($idarray)) {
|
if (!empty($idarray)) {
|
||||||
$unseen = Post::exists(['unseen' => true, 'id' => $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));
|
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]];
|
$params = ['order' => ['id' => true], 'limit' => [$start, $count]];
|
||||||
$statuses = Post::selectForUser($uid, [], $condition, $params);
|
$statuses = Post::selectForUser($uid, [], $condition, $params);
|
||||||
|
|
||||||
$r = Post::toArray($statuses);
|
|
||||||
} else {
|
} else {
|
||||||
$condition = ["`gravity` IN (?, ?) AND `id` > ? AND `private` = ? AND `wall` AND `origin` AND NOT `author-hidden`",
|
$condition = ["`gravity` IN (?, ?) AND `id` > ? AND `private` = ? AND `wall` AND `origin` AND NOT `author-hidden`",
|
||||||
GRAVITY_PARENT, GRAVITY_COMMENT, $since_id, Item::PUBLIC];
|
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]];
|
$params = ['order' => ['id' => true], 'limit' => [$start, $count]];
|
||||||
$statuses = Post::selectForUser($uid, [], $condition, $params);
|
$statuses = Post::selectForUser($uid, [], $condition, $params);
|
||||||
|
|
||||||
$r = Post::toArray($statuses);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$ret = api_format_items($r, $type);
|
$ret = [];
|
||||||
|
while ($status = DBA::fetch($statuses)) {
|
||||||
bindComments($ret);
|
$ret[] = api_format_item($status, $type);
|
||||||
|
}
|
||||||
|
DBA::close($statuses);
|
||||||
|
|
||||||
return DI::apiResponse()->formatData("statuses", $type, ['status' => $ret], Contact::createSelfFromUserId($uid));
|
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]];
|
$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);
|
$ret = [];
|
||||||
|
while ($status = DBA::fetch($statuses)) {
|
||||||
bindComments($ret);
|
$ret[] = api_format_item($status, $type);
|
||||||
|
}
|
||||||
|
DBA::close($statuses);
|
||||||
|
|
||||||
return DI::apiResponse()->formatData("statuses", $type, ['status' => $ret], Contact::createSelfFromUserId($uid));
|
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));
|
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) {
|
if ($conversation) {
|
||||||
$data = ['status' => $ret];
|
$data = ['status' => $ret];
|
||||||
|
@ -1252,7 +1256,11 @@ function api_conversation_show($type)
|
||||||
throw new BadRequestException("There is no status with id $id.");
|
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];
|
$data = ['status' => $ret];
|
||||||
return DI::apiResponse()->formatData("statuses", $type, $data);
|
return DI::apiResponse()->formatData("statuses", $type, $data);
|
||||||
|
@ -1438,7 +1446,11 @@ function api_statuses_mentions($type)
|
||||||
$params = ['order' => ['id' => true], 'limit' => [$start, $count]];
|
$params = ['order' => ['id' => true], 'limit' => [$start, $count]];
|
||||||
$statuses = Post::selectForUser($uid, [], $condition, $params);
|
$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));
|
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]];
|
$params = ['order' => ['id' => true], 'limit' => [$start, $count]];
|
||||||
$statuses = Post::selectForUser($uid, [], $condition, $params);
|
$statuses = Post::selectForUser($uid, [], $condition, $params);
|
||||||
|
|
||||||
$ret = api_format_items(Post::toArray($statuses), $type);
|
$ret = [];
|
||||||
|
while ($status = DBA::fetch($statuses)) {
|
||||||
bindComments($ret);
|
$ret[] = api_format_item($status, $type);
|
||||||
|
}
|
||||||
|
DBA::close($statuses);
|
||||||
|
|
||||||
return DI::apiResponse()->formatData("statuses", $type, ['status' => $ret], Contact::createSelfFromUserId($uid));
|
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);
|
$statuses = Post::selectForUser($uid, [], $condition, $params);
|
||||||
|
|
||||||
$ret = api_format_items(Post::toArray($statuses), $type);
|
$ret = [];
|
||||||
|
while ($status = DBA::fetch($statuses)) {
|
||||||
bindComments($ret);
|
$ret[] = api_format_item($status, $type);
|
||||||
|
}
|
||||||
|
DBA::close($statuses);
|
||||||
|
|
||||||
return DI::apiResponse()->formatData("statuses", $type, ['status' => $ret], Contact::createSelfFromUserId($uid));
|
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;
|
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 array $item Item record
|
||||||
* @param string $type Return format (atom, rss, xml, json)
|
* @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'],
|
'external_url' => DI::baseUrl() . "/display/" . $item['guid'],
|
||||||
'friendica_activities' => api_format_items_activities($item, $type),
|
'friendica_activities' => api_format_items_activities($item, $type),
|
||||||
'friendica_title' => $item['title'],
|
'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) {
|
if (count($converted["attachments"]) > 0) {
|
||||||
|
@ -2415,7 +2411,11 @@ function api_lists_statuses($type)
|
||||||
$params = ['order' => ['id' => true], 'limit' => [$start, $count]];
|
$params = ['order' => ['id' => true], 'limit' => [$start, $count]];
|
||||||
$statuses = Post::selectForUser($uid, [], $condition, $params);
|
$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));
|
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);
|
$statuses = Post::selectForUser($uid, [], $condition);
|
||||||
|
|
||||||
// prepare output of comments
|
// 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 = [];
|
$comments = [];
|
||||||
if ($type == "xml") {
|
if ($type == "xml") {
|
||||||
$k = 0;
|
$k = 0;
|
||||||
|
@ -4163,7 +4168,7 @@ function api_friendica_notification_seen($type)
|
||||||
$item = Post::selectFirstForUser($uid, [], ['id' => $Notify->iid, 'uid' => $uid]);
|
$item = Post::selectFirstForUser($uid, [], ['id' => $Notify->iid, 'uid' => $uid]);
|
||||||
if (DBA::isResult($item)) {
|
if (DBA::isResult($item)) {
|
||||||
// we found the item, return it to the user
|
// we found the item, return it to the user
|
||||||
$ret = api_format_items([$item], $type);
|
$ret = [api_format_item($item, $type)];
|
||||||
$data = ['status' => $ret];
|
$data = ['status' => $ret];
|
||||||
return DI::apiResponse()->formatData('status', $type, $data);
|
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
|
/// @TODO move to top of file or somewhere better
|
||||||
api_register_func('api/friendica/direct_messages_search', 'api_friendica_direct_messages_search', true);
|
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' => '',
|
'plink' => '',
|
||||||
]
|
]
|
||||||
];
|
];
|
||||||
$result = api_format_items($items, ['id' => 0], true);
|
foreach ($items as $item) {
|
||||||
foreach ($result as $status) {
|
$status = api_format_item($item);
|
||||||
self::assertStatus($status);
|
self::assertStatus($status);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2259,8 +2259,9 @@ class ApiTest extends FixtureTest
|
||||||
'plink' => '',
|
'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);
|
self::assertStatus($status);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue