Merge pull request #11012 from annando/api-relations

Fix followers/following for the Mastodon API
This commit is contained in:
Hypolite Petovan 2021-11-21 10:14:07 -05:00 committed by GitHub
commit e9b3a9426a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 24 additions and 19 deletions

View file

@ -51,6 +51,7 @@ class Followers extends BaseApi
$request = self::getRequest([ $request = self::getRequest([
'max_id' => 0, // Return results older than this id 'max_id' => 0, // Return results older than this id
'since_id' => 0, // Return results newer than this id 'since_id' => 0, // Return results newer than this id
'min_id' => 0, // Return results immediately newer than id
'limit' => 40, // Maximum number of results to return. Defaults to 40. 'limit' => 40, // Maximum number of results to return. Defaults to 40.
]); ]);
@ -66,20 +67,20 @@ class Followers extends BaseApi
$condition = DBA::mergeConditions($condition, ["`relation-cid` > ?", $request['since_id']]); $condition = DBA::mergeConditions($condition, ["`relation-cid` > ?", $request['since_id']]);
} }
if (!empty($min_id)) { if (!empty($request['min_id'])) {
$condition = DBA::mergeConditions($condition, ["`relation-cid` > ?", $min_id]); $condition = DBA::mergeConditions($condition, ["`relation-cid` > ?", $request['min_id']]);
$params['order'] = ['cid']; $params['order'] = ['cid'];
} }
$followers = DBA::select('contact-relation', ['relation-cid'], $condition, $this->parameters); $followers = DBA::select('contact-relation', ['relation-cid'], $condition, $params);
while ($follower = DBA::fetch($followers)) { while ($follower = DBA::fetch($followers)) {
self::setBoundaries($follower['relation-cid']); self::setBoundaries($follower['relation-cid']);
$accounts[] = DI::mstdnAccount()->createFromContactId($follower['relation-cid'], $uid); $accounts[] = DI::mstdnAccount()->createFromContactId($follower['relation-cid'], $uid);
} }
DBA::close($followers); DBA::close($followers);
if (!empty($min_id)) { if (!empty($request['min_id'])) {
array_reverse($accounts); array_reverse($accounts);
} }

View file

@ -51,6 +51,7 @@ class Following extends BaseApi
$request = self::getRequest([ $request = self::getRequest([
'max_id' => 0, // Return results older than this id 'max_id' => 0, // Return results older than this id
'since_id' => 0, // Return results newer than this id 'since_id' => 0, // Return results newer than this id
'min_id' => 0, // Return results immediately newer than id
'limit' => 40, // Maximum number of results to return. Defaults to 40. 'limit' => 40, // Maximum number of results to return. Defaults to 40.
]); ]);
@ -66,20 +67,20 @@ class Following extends BaseApi
$condition = DBA::mergeConditions($condition, ["`cid` > ?", $request['since_id']]); $condition = DBA::mergeConditions($condition, ["`cid` > ?", $request['since_id']]);
} }
if (!empty($min_id)) { if (!empty($request['min_id'])) {
$condition = DBA::mergeConditions($condition, ["`cid` > ?", $min_id]); $condition = DBA::mergeConditions($condition, ["`cid` > ?", $request['min_id']]);
$params['order'] = ['cid']; $params['order'] = ['cid'];
} }
$followers = DBA::select('contact-relation', ['cid'], $condition, $this->parameters); $followers = DBA::select('contact-relation', ['cid'], $condition, $params);
while ($follower = DBA::fetch($followers)) { while ($follower = DBA::fetch($followers)) {
self::setBoundaries($follower['cid']); self::setBoundaries($follower['cid']);
$accounts[] = DI::mstdnAccount()->createFromContactId($follower['cid'], $uid); $accounts[] = DI::mstdnAccount()->createFromContactId($follower['cid'], $uid);
} }
DBA::close($followers); DBA::close($followers);
if (!empty($min_id)) { if (!empty($request['min_id'])) {
array_reverse($accounts); array_reverse($accounts);
} }

View file

@ -51,6 +51,7 @@ class Blocks extends BaseApi
$request = self::getRequest([ $request = self::getRequest([
'max_id' => 0, // Return results older than this id 'max_id' => 0, // Return results older than this id
'since_id' => 0, // Return results newer than this id 'since_id' => 0, // Return results newer than this id
'min_id' => 0, // Return results immediately newer than id
'limit' => 40, // Maximum number of results. Defaults to 40. 'limit' => 40, // Maximum number of results. Defaults to 40.
]); ]);
@ -66,20 +67,20 @@ class Blocks extends BaseApi
$condition = DBA::mergeConditions($condition, ["`cid` > ?", $request['since_id']]); $condition = DBA::mergeConditions($condition, ["`cid` > ?", $request['since_id']]);
} }
if (!empty($min_id)) { if (!empty($request['min_id'])) {
$condition = DBA::mergeConditions($condition, ["`cid` > ?", $min_id]); $condition = DBA::mergeConditions($condition, ["`cid` > ?", $request['min_id']]);
$params['order'] = ['cid']; $params['order'] = ['cid'];
} }
$followers = DBA::select('user-contact', ['cid'], $condition, $this->parameters); $followers = DBA::select('user-contact', ['cid'], $condition, $params);
while ($follower = DBA::fetch($followers)) { while ($follower = DBA::fetch($followers)) {
self::setBoundaries($follower['cid']); self::setBoundaries($follower['cid']);
$accounts[] = DI::mstdnAccount()->createFromContactId($follower['cid'], $uid); $accounts[] = DI::mstdnAccount()->createFromContactId($follower['cid'], $uid);
} }
DBA::close($followers); DBA::close($followers);
if (!empty($min_id)) { if (!empty($request['min_id'])) {
array_reverse($accounts); array_reverse($accounts);
} }

View file

@ -65,6 +65,7 @@ class Accounts extends BaseApi
$request = self::getRequest([ $request = self::getRequest([
'max_id' => 0, // Return results older than this id 'max_id' => 0, // Return results older than this id
'since_id' => 0, // Return results newer than this id 'since_id' => 0, // Return results newer than this id
'min_id' => 0, // Return results immediately newer than id
'limit' => 40, // Maximum number of results. Defaults to 40. Max 40. Set to 0 in order to get all accounts without pagination. 'limit' => 40, // Maximum number of results. Defaults to 40. Max 40. Set to 0 in order to get all accounts without pagination.
]); ]);
@ -84,8 +85,8 @@ class Accounts extends BaseApi
$condition = DBA::mergeConditions($condition, ["`contact-id` > ?", $request['since_id']]); $condition = DBA::mergeConditions($condition, ["`contact-id` > ?", $request['since_id']]);
} }
if (!empty($min_id)) { if (!empty($request['min_id'])) {
$condition = DBA::mergeConditions($condition, ["`contact-id` > ?", $min_id]); $condition = DBA::mergeConditions($condition, ["`contact-id` > ?", $request['min_id']]);
$params['order'] = ['contact-id']; $params['order'] = ['contact-id'];
} }
@ -99,7 +100,7 @@ class Accounts extends BaseApi
} }
DBA::close($members); DBA::close($members);
if (!empty($min_id)) { if (!empty($request['min_id'])) {
array_reverse($accounts); array_reverse($accounts);
} }

View file

@ -51,6 +51,7 @@ class Mutes extends BaseApi
$request = self::getRequest([ $request = self::getRequest([
'max_id' => 0, // Return results older than this id 'max_id' => 0, // Return results older than this id
'since_id' => 0, // Return results newer than this id 'since_id' => 0, // Return results newer than this id
'min_id' => 0, // Return results immediately newer than id
'limit' => 40, // Maximum number of results. Defaults to 40. 'limit' => 40, // Maximum number of results. Defaults to 40.
]); ]);
@ -66,20 +67,20 @@ class Mutes extends BaseApi
$condition = DBA::mergeConditions($condition, ["`cid` > ?", $request['since_id']]); $condition = DBA::mergeConditions($condition, ["`cid` > ?", $request['since_id']]);
} }
if (!empty($min_id)) { if (!empty($request['min_id'])) {
$condition = DBA::mergeConditions($condition, ["`cid` > ?", $min_id]); $condition = DBA::mergeConditions($condition, ["`cid` > ?", $request['min_id']]);
$params['order'] = ['cid']; $params['order'] = ['cid'];
} }
$followers = DBA::select('user-contact', ['cid'], $condition, $this->parameters); $followers = DBA::select('user-contact', ['cid'], $condition, $params);
while ($follower = DBA::fetch($followers)) { while ($follower = DBA::fetch($followers)) {
self::setBoundaries($follower['cid']); self::setBoundaries($follower['cid']);
$accounts[] = DI::mstdnAccount()->createFromContactId($follower['cid'], $uid); $accounts[] = DI::mstdnAccount()->createFromContactId($follower['cid'], $uid);
} }
DBA::close($followers); DBA::close($followers);
if (!empty($min_id)) { if (!empty($request['min_id'])) {
array_reverse($accounts); array_reverse($accounts);
} }