mirror of
https://github.com/openvk/openvk
synced 2024-12-23 00:51:03 +03:00
VKAPI: Make offset actually work in groups.get method
Users: add count and offset (acting like switch for literal offset) param to getClubs
This commit is contained in:
parent
7b1182f4e8
commit
699df76619
2 changed files with 8 additions and 7 deletions
|
@ -10,7 +10,7 @@ final class Groups extends VKAPIRequestHandler
|
||||||
$this->requireUser();
|
$this->requireUser();
|
||||||
|
|
||||||
if($user_id == 0) {
|
if($user_id == 0) {
|
||||||
foreach($this->getUser()->getClubs((int) floor($offset/$count)+1) as $club)
|
foreach($this->getUser()->getClubs($offset, false, $count, true) as $club)
|
||||||
$clbs[] = $club;
|
$clbs[] = $club;
|
||||||
$clbsCount = $this->getUser()->getClubCount();
|
$clbsCount = $this->getUser()->getClubCount();
|
||||||
} else {
|
} else {
|
||||||
|
@ -20,7 +20,7 @@ final class Groups extends VKAPIRequestHandler
|
||||||
if(is_null($user))
|
if(is_null($user))
|
||||||
$this->fail(15, "Access denied");
|
$this->fail(15, "Access denied");
|
||||||
|
|
||||||
foreach($user->getClubs($offset+1) as $club)
|
foreach($user->getClubs($offset, false, $count, true) as $club)
|
||||||
$clbs[] = $club;
|
$clbs[] = $club;
|
||||||
|
|
||||||
$clbsCount = $user->getClubCount();
|
$clbsCount = $user->getClubCount();
|
||||||
|
@ -33,8 +33,6 @@ final class Groups extends VKAPIRequestHandler
|
||||||
$ic = $count;
|
$ic = $count;
|
||||||
|
|
||||||
if(!empty($clbs)) {
|
if(!empty($clbs)) {
|
||||||
$clbs = array_slice($clbs, $offset * $count);
|
|
||||||
|
|
||||||
for($i=0; $i < $ic; $i++) {
|
for($i=0; $i < $ic; $i++) {
|
||||||
$usr = $clbs[$i];
|
$usr = $clbs[$i];
|
||||||
if(is_null($usr)) {
|
if(is_null($usr)) {
|
||||||
|
|
|
@ -535,12 +535,15 @@ class User extends RowModel
|
||||||
return sizeof(DatabaseConnection::i()->getContext()->table("messages")->where(["recipient_id" => $this->getId(), "unread" => 1]));
|
return sizeof(DatabaseConnection::i()->getContext()->table("messages")->where(["recipient_id" => $this->getId(), "unread" => 1]));
|
||||||
}
|
}
|
||||||
|
|
||||||
function getClubs(int $page = 1, bool $admin = false): \Traversable
|
function getClubs(int $page = 1, bool $admin = false, int $count = OPENVK_DEFAULT_PER_PAGE, bool $offset = false): \Traversable
|
||||||
{
|
{
|
||||||
|
if(!$offset)
|
||||||
|
$page = ($page - 1) * $count;
|
||||||
|
|
||||||
if($admin) {
|
if($admin) {
|
||||||
$id = $this->getId();
|
$id = $this->getId();
|
||||||
$query = "SELECT `id` FROM `groups` WHERE `owner` = ? UNION SELECT `club` as `id` FROM `group_coadmins` WHERE `user` = ?";
|
$query = "SELECT `id` FROM `groups` WHERE `owner` = ? UNION SELECT `club` as `id` FROM `group_coadmins` WHERE `user` = ?";
|
||||||
$query .= " LIMIT " . OPENVK_DEFAULT_PER_PAGE . " OFFSET " . ($page - 1) * OPENVK_DEFAULT_PER_PAGE;
|
$query .= " LIMIT " . $count . " OFFSET " . $page;
|
||||||
|
|
||||||
$sel = DatabaseConnection::i()->getConnection()->query($query, $id, $id);
|
$sel = DatabaseConnection::i()->getConnection()->query($query, $id, $id);
|
||||||
foreach($sel as $target) {
|
foreach($sel as $target) {
|
||||||
|
@ -550,7 +553,7 @@ class User extends RowModel
|
||||||
yield $target;
|
yield $target;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
$sel = $this->getRecord()->related("subscriptions.follower")->page($page, OPENVK_DEFAULT_PER_PAGE);
|
$sel = $this->getRecord()->related("subscriptions.follower")->limit($count, $page);
|
||||||
foreach($sel->where("model", "openvk\\Web\\Models\\Entities\\Club") as $target) {
|
foreach($sel->where("model", "openvk\\Web\\Models\\Entities\\Club") as $target) {
|
||||||
$target = (new Clubs)->get($target->target);
|
$target = (new Clubs)->get($target->target);
|
||||||
if(!$target) continue;
|
if(!$target) continue;
|
||||||
|
|
Loading…
Reference in a new issue