mirror of
https://github.com/friendica/friendica
synced 2025-04-30 17:04:23 +02:00
API: moved several lists
This commit is contained in:
parent
b03b1fe367
commit
0de9ae913b
6 changed files with 306 additions and 207 deletions
176
include/api.php
176
include/api.php
|
@ -1186,182 +1186,6 @@ function api_lists_ownerships($type)
|
|||
|
||||
api_register_func('api/lists/ownerships', 'api_lists_ownerships', true);
|
||||
|
||||
/**
|
||||
* Returns either the friends of the follower list
|
||||
*
|
||||
* Considers friends and followers lists to be private and won't return
|
||||
* anything if any user_id parameter is passed.
|
||||
*
|
||||
* @param string $qtype Either "friends" or "followers"
|
||||
* @return boolean|array
|
||||
* @throws BadRequestException
|
||||
* @throws ForbiddenException
|
||||
* @throws ImagickException
|
||||
* @throws InternalServerErrorException
|
||||
* @throws UnauthorizedException
|
||||
*/
|
||||
function api_statuses_f($qtype)
|
||||
{
|
||||
BaseApi::checkAllowedScope(BaseApi::SCOPE_READ);
|
||||
$uid = BaseApi::getCurrentUserID();
|
||||
|
||||
// pagination
|
||||
$count = $_GET['count'] ?? 20;
|
||||
$page = $_GET['page'] ?? 1;
|
||||
|
||||
$start = max(0, ($page - 1) * $count);
|
||||
|
||||
if (!empty($_GET['cursor']) && $_GET['cursor'] == 'undefined') {
|
||||
/* this is to stop Hotot to load friends multiple times
|
||||
* I'm not sure if I'm missing return something or
|
||||
* is a bug in hotot. Workaround, meantime
|
||||
*/
|
||||
|
||||
/*$ret=Array();
|
||||
return array('$users' => $ret);*/
|
||||
return false;
|
||||
}
|
||||
|
||||
$sql_extra = '';
|
||||
if ($qtype == 'friends') {
|
||||
$sql_extra = sprintf(" AND ( `rel` = %d OR `rel` = %d ) ", intval(Contact::SHARING), intval(Contact::FRIEND));
|
||||
} elseif ($qtype == 'followers') {
|
||||
$sql_extra = sprintf(" AND ( `rel` = %d OR `rel` = %d ) ", intval(Contact::FOLLOWER), intval(Contact::FRIEND));
|
||||
}
|
||||
|
||||
if ($qtype == 'blocks') {
|
||||
$sql_filter = 'AND `blocked` AND NOT `pending`';
|
||||
} elseif ($qtype == 'incoming') {
|
||||
$sql_filter = 'AND `pending`';
|
||||
} else {
|
||||
$sql_filter = 'AND (NOT `blocked` OR `pending`)';
|
||||
}
|
||||
|
||||
// @todo This query most likely can be replaced with a Contact::select...
|
||||
$r = DBA::toArray(DBA::p(
|
||||
"SELECT `id`
|
||||
FROM `contact`
|
||||
WHERE `uid` = ?
|
||||
AND NOT `self`
|
||||
$sql_filter
|
||||
$sql_extra
|
||||
ORDER BY `nick`
|
||||
LIMIT ?, ?",
|
||||
$uid,
|
||||
$start,
|
||||
$count
|
||||
));
|
||||
|
||||
$ret = [];
|
||||
foreach ($r as $cid) {
|
||||
$user = DI::twitterUser()->createFromContactId($cid['id'], $uid, false)->toArray();
|
||||
// "uid" is only needed for some internal stuff, so remove it from here
|
||||
unset($user['uid']);
|
||||
|
||||
if ($user) {
|
||||
$ret[] = $user;
|
||||
}
|
||||
}
|
||||
|
||||
return ['user' => $ret];
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the list of friends of the provided user
|
||||
*
|
||||
* @deprecated By Twitter API in favor of friends/list
|
||||
*
|
||||
* @param string $type Either "json" or "xml"
|
||||
* @return boolean|string|array
|
||||
* @throws BadRequestException
|
||||
* @throws ForbiddenException
|
||||
*/
|
||||
function api_statuses_friends($type)
|
||||
{
|
||||
BaseApi::checkAllowedScope(BaseApi::SCOPE_READ);
|
||||
$data = api_statuses_f("friends");
|
||||
if ($data === false) {
|
||||
return false;
|
||||
}
|
||||
return DI::apiResponse()->formatData("users", $type, $data);
|
||||
}
|
||||
|
||||
api_register_func('api/statuses/friends', 'api_statuses_friends', true);
|
||||
|
||||
/**
|
||||
* Returns the list of followers of the provided user
|
||||
*
|
||||
* @deprecated By Twitter API in favor of friends/list
|
||||
*
|
||||
* @param string $type Either "json" or "xml"
|
||||
* @return boolean|string|array
|
||||
* @throws BadRequestException
|
||||
* @throws ForbiddenException
|
||||
*/
|
||||
function api_statuses_followers($type)
|
||||
{
|
||||
BaseApi::checkAllowedScope(BaseApi::SCOPE_READ);
|
||||
$data = api_statuses_f("followers");
|
||||
if ($data === false) {
|
||||
return false;
|
||||
}
|
||||
return DI::apiResponse()->formatData("users", $type, $data);
|
||||
}
|
||||
|
||||
api_register_func('api/statuses/followers', 'api_statuses_followers', true);
|
||||
|
||||
/**
|
||||
* Returns the list of blocked users
|
||||
*
|
||||
* @see https://developer.twitter.com/en/docs/accounts-and-users/mute-block-report-users/api-reference/get-blocks-list
|
||||
*
|
||||
* @param string $type Either "json" or "xml"
|
||||
*
|
||||
* @return boolean|string|array
|
||||
* @throws BadRequestException
|
||||
* @throws ForbiddenException
|
||||
*/
|
||||
function api_blocks_list($type)
|
||||
{
|
||||
BaseApi::checkAllowedScope(BaseApi::SCOPE_READ);
|
||||
$data = api_statuses_f('blocks');
|
||||
if ($data === false) {
|
||||
return false;
|
||||
}
|
||||
return DI::apiResponse()->formatData("users", $type, $data);
|
||||
}
|
||||
|
||||
api_register_func('api/blocks/list', 'api_blocks_list', true);
|
||||
|
||||
/**
|
||||
* Returns the list of pending users IDs
|
||||
*
|
||||
* @see https://developer.twitter.com/en/docs/accounts-and-users/follow-search-get-users/api-reference/get-friendships-incoming
|
||||
*
|
||||
* @param string $type Either "json" or "xml"
|
||||
*
|
||||
* @return boolean|string|array
|
||||
* @throws BadRequestException
|
||||
* @throws ForbiddenException
|
||||
*/
|
||||
function api_friendships_incoming($type)
|
||||
{
|
||||
BaseApi::checkAllowedScope(BaseApi::SCOPE_READ);
|
||||
$data = api_statuses_f('incoming');
|
||||
if ($data === false) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$ids = [];
|
||||
foreach ($data['user'] as $user) {
|
||||
$ids[] = $user['id'];
|
||||
}
|
||||
|
||||
return DI::apiResponse()->formatData("ids", $type, ['id' => $ids]);
|
||||
}
|
||||
|
||||
api_register_func('api/friendships/incoming', 'api_friendships_incoming', true);
|
||||
|
||||
/**
|
||||
* Sends a new direct message.
|
||||
*
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue