Merge pull request #4079 from MrPetovan/task/4069-add-pagination-to-statuses-api
Add pagination to API statuses/friends and statuses/followers
This commit is contained in:
commit
de56a3a824
1 changed files with 49 additions and 12 deletions
|
@ -486,9 +486,8 @@ function api_unique_id_to_url($id)
|
|||
*
|
||||
* @param object $a App
|
||||
* @param int|string $contact_id Contact ID or URL
|
||||
* @param string $type Return type (for errors)
|
||||
*/
|
||||
function api_get_user(App $a, $contact_id = null, $type = "json")
|
||||
function api_get_user(App $a, $contact_id = null)
|
||||
{
|
||||
global $called_api;
|
||||
|
||||
|
@ -2912,11 +2911,16 @@ function api_lists_list($type)
|
|||
api_register_func('api/lists/list', 'api_lists_list', true);
|
||||
|
||||
/**
|
||||
* https://dev.twitter.com/docs/api/1/get/statuses/friends
|
||||
* This function is deprecated by Twitter
|
||||
* returns: json, xml
|
||||
* @brief Returns either the friends of the follower list
|
||||
*
|
||||
* Note: 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 ForbiddenException
|
||||
*/
|
||||
function api_statuses_f($type, $qtype)
|
||||
function api_statuses_f($qtype)
|
||||
{
|
||||
$a = get_app();
|
||||
|
||||
|
@ -2924,6 +2928,14 @@ function api_statuses_f($type, $qtype)
|
|||
throw new ForbiddenException();
|
||||
}
|
||||
|
||||
// pagination
|
||||
$count = x($_GET, 'count') ? $_GET['count'] : 20;
|
||||
$page = x($_GET, 'page') ? $_GET['page'] : 1;
|
||||
if ($page < 1) {
|
||||
$page = 1;
|
||||
}
|
||||
$start = ($page - 1) * $count;
|
||||
|
||||
$user_info = api_get_user($a);
|
||||
|
||||
if (x($_GET, 'cursor') && $_GET['cursor'] == 'undefined') {
|
||||
|
@ -2950,8 +2962,17 @@ function api_statuses_f($type, $qtype)
|
|||
}
|
||||
|
||||
$r = q(
|
||||
"SELECT `nurl` FROM `contact` WHERE `uid` = %d AND NOT `self` AND (NOT `blocked` OR `pending`) $sql_extra ORDER BY `nick`",
|
||||
intval(api_user())
|
||||
"SELECT `nurl`
|
||||
FROM `contact`
|
||||
WHERE `uid` = %d
|
||||
AND NOT `self`
|
||||
AND (NOT `blocked` OR `pending`)
|
||||
$sql_extra
|
||||
ORDER BY `nick`
|
||||
LIMIT %d, %d",
|
||||
intval(api_user()),
|
||||
intval($start),
|
||||
intval($count)
|
||||
);
|
||||
|
||||
$ret = array();
|
||||
|
@ -2967,21 +2988,37 @@ function api_statuses_f($type, $qtype)
|
|||
}
|
||||
|
||||
return array('user' => $ret);
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief 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
|
||||
*/
|
||||
function api_statuses_friends($type)
|
||||
{
|
||||
$data = api_statuses_f($type, "friends");
|
||||
$data = api_statuses_f("friends");
|
||||
if ($data === false) {
|
||||
return false;
|
||||
}
|
||||
return api_format_data("users", $type, $data);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 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
|
||||
*/
|
||||
function api_statuses_followers($type)
|
||||
{
|
||||
$data = api_statuses_f($type, "followers");
|
||||
$data = api_statuses_f("followers");
|
||||
if ($data === false) {
|
||||
return false;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue