2020-08-12 14:36:18 +03:00
|
|
|
|
<?php declare(strict_types=1);
|
|
|
|
|
namespace openvk\VKAPI\Handlers;
|
|
|
|
|
use openvk\Web\Models\Repositories\Clubs as ClubsRepo;
|
2021-10-22 23:49:25 +03:00
|
|
|
|
use openvk\Web\Models\Repositories\Users as UsersRepo;
|
VKAPI: методы для подарков, заметок, статусов, обсуждений и немного для фоток и групп (#876)
* API methods for gifts, notes, statuses
* Some fixes
Строки локализации у gifts.send теперь не костыльные и можно прикрепить до 10 аттачей к посту
* Small imp
Пофиксил пагинацию у заметков и подарок
Перенёс структуру заметок
Добавил аттачи к комментариям
Добавил проверку на удалённость аттача
Ну и пофиксил сортировку заметок
* VKAPI: Some methods for topics and photos
Добавлены методы для обсуждений (addTopic, closeTopic(), createComment(), deleteComment(), deleteTopic(), editTopic(), fixTopic(), getComments(), getTopics(), openTopic(), unfixTopic())
и для фотографий (createAlbum(), editAlbum(), getAlbums(), getAlbumsCount(), getById(), get(), deleteAlbum(), edit(), delete(), deleteComment(), createComment(), getAll(), getComments())
* fixsex
2023-06-13 21:03:43 +03:00
|
|
|
|
use openvk\Web\Models\Entities\Club;
|
2020-08-12 14:36:18 +03:00
|
|
|
|
|
|
|
|
|
final class Groups extends VKAPIRequestHandler
|
|
|
|
|
{
|
2021-10-22 23:49:25 +03:00
|
|
|
|
function get(int $user_id = 0, string $fields = "", int $offset = 0, int $count = 6, bool $online = false): object
|
2020-08-12 14:36:18 +03:00
|
|
|
|
{
|
|
|
|
|
$this->requireUser();
|
|
|
|
|
|
2022-07-21 22:13:09 +03:00
|
|
|
|
if($user_id == 0) {
|
2022-10-11 03:46:49 +03:00
|
|
|
|
foreach($this->getUser()->getClubs($offset, false, $count, true) as $club)
|
2021-10-22 23:49:25 +03:00
|
|
|
|
$clbs[] = $club;
|
|
|
|
|
$clbsCount = $this->getUser()->getClubCount();
|
|
|
|
|
} else {
|
|
|
|
|
$users = new UsersRepo;
|
2022-07-21 22:13:09 +03:00
|
|
|
|
$user = $users->get($user_id);
|
|
|
|
|
|
|
|
|
|
if(is_null($user))
|
2021-10-22 23:49:25 +03:00
|
|
|
|
$this->fail(15, "Access denied");
|
2022-07-21 22:13:09 +03:00
|
|
|
|
|
2022-10-11 03:46:49 +03:00
|
|
|
|
foreach($user->getClubs($offset, false, $count, true) as $club)
|
2021-10-22 23:49:25 +03:00
|
|
|
|
$clbs[] = $club;
|
2022-07-21 22:13:09 +03:00
|
|
|
|
|
2021-10-22 23:49:25 +03:00
|
|
|
|
$clbsCount = $user->getClubCount();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$rClubs;
|
2020-08-12 14:36:18 +03:00
|
|
|
|
|
|
|
|
|
$ic = sizeof($clbs);
|
2022-07-21 22:13:09 +03:00
|
|
|
|
if(sizeof($clbs) > $count)
|
|
|
|
|
$ic = $count;
|
2020-08-12 14:36:18 +03:00
|
|
|
|
|
2022-07-21 22:13:09 +03:00
|
|
|
|
if(!empty($clbs)) {
|
|
|
|
|
for($i=0; $i < $ic; $i++) {
|
2022-07-21 00:37:31 +03:00
|
|
|
|
$usr = $clbs[$i];
|
2022-10-11 03:22:32 +03:00
|
|
|
|
if(is_null($usr)) {
|
2020-08-12 14:36:18 +03:00
|
|
|
|
|
2022-07-21 22:13:09 +03:00
|
|
|
|
} else {
|
|
|
|
|
$rClubs[$i] = (object) [
|
2022-07-21 00:37:31 +03:00
|
|
|
|
"id" => $usr->getId(),
|
|
|
|
|
"name" => $usr->getName(),
|
|
|
|
|
"screen_name" => $usr->getShortCode(),
|
|
|
|
|
"is_closed" => false,
|
|
|
|
|
"can_access_closed" => true,
|
|
|
|
|
];
|
2020-08-12 14:36:18 +03:00
|
|
|
|
|
2022-07-21 00:37:31 +03:00
|
|
|
|
$flds = explode(',', $fields);
|
2020-08-12 14:36:18 +03:00
|
|
|
|
|
2022-07-21 00:37:31 +03:00
|
|
|
|
foreach($flds as $field) {
|
2022-07-21 22:13:09 +03:00
|
|
|
|
switch($field) {
|
|
|
|
|
case "verified":
|
2022-07-21 00:37:31 +03:00
|
|
|
|
$rClubs[$i]->verified = intval($usr->isVerified());
|
|
|
|
|
break;
|
2022-07-21 22:13:09 +03:00
|
|
|
|
case "has_photo":
|
2022-07-21 00:37:31 +03:00
|
|
|
|
$rClubs[$i]->has_photo = is_null($usr->getAvatarPhoto()) ? 0 : 1;
|
|
|
|
|
break;
|
2022-07-21 22:13:09 +03:00
|
|
|
|
case "photo_max_orig":
|
2022-07-21 00:37:31 +03:00
|
|
|
|
$rClubs[$i]->photo_max_orig = $usr->getAvatarURL();
|
|
|
|
|
break;
|
2022-07-21 22:13:09 +03:00
|
|
|
|
case "photo_max":
|
2022-07-21 00:37:31 +03:00
|
|
|
|
$rClubs[$i]->photo_max = $usr->getAvatarURL("original"); // ORIGINAL ANDREI CHINITEL 🥵🥵🥵🥵
|
|
|
|
|
break;
|
2022-07-21 22:13:09 +03:00
|
|
|
|
case "photo_50":
|
2022-07-21 00:37:31 +03:00
|
|
|
|
$rClubs[$i]->photo_50 = $usr->getAvatarURL();
|
|
|
|
|
break;
|
2022-07-21 22:13:09 +03:00
|
|
|
|
case "photo_100":
|
2022-07-21 00:37:31 +03:00
|
|
|
|
$rClubs[$i]->photo_100 = $usr->getAvatarURL("tiny");
|
|
|
|
|
break;
|
2022-07-21 22:13:09 +03:00
|
|
|
|
case "photo_200":
|
2022-07-21 00:37:31 +03:00
|
|
|
|
$rClubs[$i]->photo_200 = $usr->getAvatarURL("normal");
|
|
|
|
|
break;
|
2022-07-21 22:13:09 +03:00
|
|
|
|
case "photo_200_orig":
|
2022-07-21 00:37:31 +03:00
|
|
|
|
$rClubs[$i]->photo_200_orig = $usr->getAvatarURL("normal");
|
|
|
|
|
break;
|
2022-07-21 22:13:09 +03:00
|
|
|
|
case "photo_400_orig":
|
2022-07-21 00:37:31 +03:00
|
|
|
|
$rClubs[$i]->photo_400_orig = $usr->getAvatarURL("normal");
|
|
|
|
|
break;
|
2022-07-21 22:13:09 +03:00
|
|
|
|
case "members_count":
|
2022-07-21 00:37:31 +03:00
|
|
|
|
$rClubs[$i]->members_count = $usr->getFollowersCount();
|
|
|
|
|
break;
|
|
|
|
|
}
|
2020-08-12 14:36:18 +03:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2022-07-21 00:37:31 +03:00
|
|
|
|
} else {
|
|
|
|
|
$rClubs = [];
|
2020-08-12 14:36:18 +03:00
|
|
|
|
}
|
|
|
|
|
|
2021-10-22 23:49:25 +03:00
|
|
|
|
return (object) [
|
|
|
|
|
"count" => $clbsCount,
|
|
|
|
|
"items" => $rClubs
|
|
|
|
|
];
|
2020-08-12 14:36:18 +03:00
|
|
|
|
}
|
2022-03-21 17:15:51 +03:00
|
|
|
|
|
2022-10-09 18:06:43 +03:00
|
|
|
|
function getById(string $group_ids = "", string $group_id = "", string $fields = "", int $offset = 0, int $count = 500): ?array
|
2022-03-21 17:15:51 +03:00
|
|
|
|
{
|
2022-10-09 18:06:43 +03:00
|
|
|
|
/* Both offset and count SHOULD be used only in OpenVK code,
|
|
|
|
|
not in your app or script, since it's not oficially documented by VK */
|
|
|
|
|
|
2022-03-21 17:15:51 +03:00
|
|
|
|
$clubs = new ClubsRepo;
|
|
|
|
|
|
2022-10-09 18:06:43 +03:00
|
|
|
|
if(empty($group_ids) && !empty($group_id))
|
2022-03-21 17:15:51 +03:00
|
|
|
|
$group_ids = $group_id;
|
|
|
|
|
|
2022-10-09 18:06:43 +03:00
|
|
|
|
if(empty($group_ids) && empty($group_id))
|
2022-03-21 17:15:51 +03:00
|
|
|
|
$this->fail(100, "One of the parameters specified was missing or invalid: group_ids is undefined");
|
|
|
|
|
|
|
|
|
|
$clbs = explode(',', $group_ids);
|
2022-10-09 18:06:43 +03:00
|
|
|
|
$response = array();
|
2022-03-21 17:15:51 +03:00
|
|
|
|
|
|
|
|
|
$ic = sizeof($clbs);
|
|
|
|
|
|
2022-10-09 18:06:43 +03:00
|
|
|
|
if(sizeof($clbs) > $count)
|
|
|
|
|
$ic = $count;
|
|
|
|
|
|
|
|
|
|
$clbs = array_slice($clbs, $offset * $count);
|
|
|
|
|
|
|
|
|
|
|
2022-07-21 22:13:09 +03:00
|
|
|
|
for($i=0; $i < $ic; $i++) {
|
2022-10-09 18:06:43 +03:00
|
|
|
|
if($i > 500 || $clbs[$i] == 0)
|
2022-03-21 17:15:51 +03:00
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
if($clbs[$i] < 0)
|
|
|
|
|
$this->fail(100, "ты ошибся чутка, у айди группы убери минус");
|
|
|
|
|
|
|
|
|
|
$clb = $clubs->get((int) $clbs[$i]);
|
2022-07-21 22:13:09 +03:00
|
|
|
|
if(is_null($clb)) {
|
2022-03-21 17:15:51 +03:00
|
|
|
|
$response[$i] = (object)[
|
2022-07-21 22:13:09 +03:00
|
|
|
|
"id" => intval($clbs[$i]),
|
|
|
|
|
"name" => "DELETED",
|
2022-03-21 17:15:51 +03:00
|
|
|
|
"screen_name" => "club".intval($clbs[$i]),
|
2022-07-21 22:13:09 +03:00
|
|
|
|
"type" => "group",
|
2022-03-21 17:15:51 +03:00
|
|
|
|
"description" => "This group was deleted or it doesn't exist"
|
|
|
|
|
];
|
2022-07-21 22:13:09 +03:00
|
|
|
|
} else if($clbs[$i] == NULL) {
|
2022-03-21 17:15:51 +03:00
|
|
|
|
|
2022-07-21 22:13:09 +03:00
|
|
|
|
} else {
|
2022-03-21 17:15:51 +03:00
|
|
|
|
$response[$i] = (object)[
|
2022-07-21 22:13:09 +03:00
|
|
|
|
"id" => $clb->getId(),
|
|
|
|
|
"name" => $clb->getName(),
|
|
|
|
|
"screen_name" => $clb->getShortCode() ?? "club".$clb->getId(),
|
|
|
|
|
"is_closed" => false,
|
|
|
|
|
"type" => "group",
|
2022-10-11 03:22:32 +03:00
|
|
|
|
"is_member" => !is_null($this->getUser()) ? (int) $clb->getSubscriptionStatus($this->getUser()) : 0,
|
2022-03-21 17:15:51 +03:00
|
|
|
|
"can_access_closed" => true,
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
$flds = explode(',', $fields);
|
|
|
|
|
|
|
|
|
|
foreach($flds as $field) {
|
2022-07-21 22:13:09 +03:00
|
|
|
|
switch($field) {
|
|
|
|
|
case "verified":
|
2022-03-21 17:15:51 +03:00
|
|
|
|
$response[$i]->verified = intval($clb->isVerified());
|
|
|
|
|
break;
|
2022-07-21 22:13:09 +03:00
|
|
|
|
case "has_photo":
|
2022-03-21 17:15:51 +03:00
|
|
|
|
$response[$i]->has_photo = is_null($clb->getAvatarPhoto()) ? 0 : 1;
|
|
|
|
|
break;
|
2022-07-21 22:13:09 +03:00
|
|
|
|
case "photo_max_orig":
|
2022-03-21 17:15:51 +03:00
|
|
|
|
$response[$i]->photo_max_orig = $clb->getAvatarURL();
|
|
|
|
|
break;
|
2022-07-21 22:13:09 +03:00
|
|
|
|
case "photo_max":
|
2022-03-21 17:15:51 +03:00
|
|
|
|
$response[$i]->photo_max = $clb->getAvatarURL();
|
|
|
|
|
break;
|
2022-07-23 03:47:08 +03:00
|
|
|
|
case "photo_50":
|
|
|
|
|
$response[$i]->photo_50 = $clb->getAvatarURL();
|
|
|
|
|
break;
|
|
|
|
|
case "photo_100":
|
|
|
|
|
$response[$i]->photo_100 = $clb->getAvatarURL("tiny");
|
|
|
|
|
break;
|
|
|
|
|
case "photo_200":
|
|
|
|
|
$response[$i]->photo_200 = $clb->getAvatarURL("normal");
|
|
|
|
|
break;
|
|
|
|
|
case "photo_200_orig":
|
|
|
|
|
$response[$i]->photo_200_orig = $clb->getAvatarURL("normal");
|
|
|
|
|
break;
|
|
|
|
|
case "photo_400_orig":
|
|
|
|
|
$response[$i]->photo_400_orig = $clb->getAvatarURL("normal");
|
|
|
|
|
break;
|
2022-07-21 22:13:09 +03:00
|
|
|
|
case "members_count":
|
2022-03-21 17:15:51 +03:00
|
|
|
|
$response[$i]->members_count = $clb->getFollowersCount();
|
|
|
|
|
break;
|
2022-07-21 22:13:09 +03:00
|
|
|
|
case "site":
|
2022-03-21 17:15:51 +03:00
|
|
|
|
$response[$i]->site = $clb->getWebsite();
|
|
|
|
|
break;
|
2022-07-21 22:13:09 +03:00
|
|
|
|
case "description":
|
2022-12-17 14:31:37 +03:00
|
|
|
|
$response[$i]->description = $clb->getDescription();
|
2022-03-21 17:15:51 +03:00
|
|
|
|
break;
|
2022-07-21 22:13:09 +03:00
|
|
|
|
case "contacts":
|
2022-03-21 17:15:51 +03:00
|
|
|
|
$contacts;
|
|
|
|
|
$contactTmp = $clb->getManagers(1, true);
|
2022-07-21 22:13:09 +03:00
|
|
|
|
|
|
|
|
|
foreach($contactTmp as $contact)
|
2022-03-21 17:15:51 +03:00
|
|
|
|
$contacts[] = array(
|
2022-07-21 22:13:09 +03:00
|
|
|
|
"user_id" => $contact->getUser()->getId(),
|
|
|
|
|
"desc" => $contact->getComment()
|
2022-03-21 17:15:51 +03:00
|
|
|
|
);
|
2022-07-21 22:13:09 +03:00
|
|
|
|
|
2022-03-21 17:15:51 +03:00
|
|
|
|
$response[$i]->contacts = $contacts;
|
|
|
|
|
break;
|
2022-07-21 22:13:09 +03:00
|
|
|
|
case "can_post":
|
2022-07-21 19:57:03 +03:00
|
|
|
|
if(!is_null($this->getUser()))
|
|
|
|
|
if($clb->canBeModifiedBy($this->getUser()))
|
|
|
|
|
$response[$i]->can_post = true;
|
|
|
|
|
else
|
|
|
|
|
$response[$i]->can_post = $clb->canPost();
|
2022-03-21 17:15:51 +03:00
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return $response;
|
|
|
|
|
}
|
2022-10-09 18:06:43 +03:00
|
|
|
|
|
|
|
|
|
function search(string $q, int $offset = 0, int $count = 100)
|
|
|
|
|
{
|
|
|
|
|
$clubs = new ClubsRepo;
|
|
|
|
|
|
|
|
|
|
$array = [];
|
|
|
|
|
$find = $clubs->find($q);
|
|
|
|
|
|
|
|
|
|
foreach ($find as $group)
|
|
|
|
|
$array[] = $group->getId();
|
|
|
|
|
|
|
|
|
|
return (object) [
|
|
|
|
|
"count" => $find->size(),
|
|
|
|
|
"items" => $this->getById(implode(',', $array), "", "is_admin,is_member,is_advertiser,photo_50,photo_100,photo_200", $offset, $count)
|
|
|
|
|
/*
|
|
|
|
|
* As there is no thing as "fields" by the original documentation
|
|
|
|
|
* i'll just bake this param by the example shown here: https://dev.vk.com/method/groups.search
|
|
|
|
|
*/
|
|
|
|
|
];
|
|
|
|
|
}
|
2022-11-06 16:06:57 +03:00
|
|
|
|
|
|
|
|
|
function join(int $group_id)
|
|
|
|
|
{
|
|
|
|
|
$this->requireUser();
|
2023-02-08 14:20:50 +03:00
|
|
|
|
$this->willExecuteWriteAction();
|
2022-11-06 16:06:57 +03:00
|
|
|
|
|
|
|
|
|
$club = (new ClubsRepo)->get($group_id);
|
|
|
|
|
|
|
|
|
|
$isMember = !is_null($this->getUser()) ? (int) $club->getSubscriptionStatus($this->getUser()) : 0;
|
|
|
|
|
|
|
|
|
|
if($isMember == 0)
|
|
|
|
|
$club->toggleSubscription($this->getUser());
|
|
|
|
|
|
|
|
|
|
return 1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function leave(int $group_id)
|
|
|
|
|
{
|
|
|
|
|
$this->requireUser();
|
2023-02-08 14:20:50 +03:00
|
|
|
|
$this->willExecuteWriteAction();
|
2022-11-06 16:06:57 +03:00
|
|
|
|
|
|
|
|
|
$club = (new ClubsRepo)->get($group_id);
|
|
|
|
|
|
|
|
|
|
$isMember = !is_null($this->getUser()) ? (int) $club->getSubscriptionStatus($this->getUser()) : 0;
|
|
|
|
|
|
|
|
|
|
if($isMember == 1)
|
|
|
|
|
$club->toggleSubscription($this->getUser());
|
|
|
|
|
|
|
|
|
|
return 1;
|
|
|
|
|
}
|
VKAPI: методы для подарков, заметок, статусов, обсуждений и немного для фоток и групп (#876)
* API methods for gifts, notes, statuses
* Some fixes
Строки локализации у gifts.send теперь не костыльные и можно прикрепить до 10 аттачей к посту
* Small imp
Пофиксил пагинацию у заметков и подарок
Перенёс структуру заметок
Добавил аттачи к комментариям
Добавил проверку на удалённость аттача
Ну и пофиксил сортировку заметок
* VKAPI: Some methods for topics and photos
Добавлены методы для обсуждений (addTopic, closeTopic(), createComment(), deleteComment(), deleteTopic(), editTopic(), fixTopic(), getComments(), getTopics(), openTopic(), unfixTopic())
и для фотографий (createAlbum(), editAlbum(), getAlbums(), getAlbumsCount(), getById(), get(), deleteAlbum(), edit(), delete(), deleteComment(), createComment(), getAll(), getComments())
* fixsex
2023-06-13 21:03:43 +03:00
|
|
|
|
|
|
|
|
|
function create(string $title, string $description = "", string $type = "group", int $public_category = 1, int $public_subcategory = 1, int $subtype = 1)
|
|
|
|
|
{
|
|
|
|
|
$this->requireUser();
|
|
|
|
|
$this->willExecuteWriteAction();
|
|
|
|
|
|
|
|
|
|
$club = new Club;
|
|
|
|
|
|
|
|
|
|
$club->setName($title);
|
|
|
|
|
$club->setAbout($description);
|
|
|
|
|
$club->setOwner($this->getUser()->getId());
|
|
|
|
|
$club->save();
|
|
|
|
|
|
|
|
|
|
$club->toggleSubscription($this->getUser());
|
|
|
|
|
|
|
|
|
|
return $this->getById((string)$club->getId());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function edit(
|
|
|
|
|
int $group_id,
|
|
|
|
|
string $title = NULL,
|
|
|
|
|
string $description = NULL,
|
|
|
|
|
string $screen_name = NULL,
|
|
|
|
|
string $website = NULL,
|
|
|
|
|
int $wall = NULL,
|
|
|
|
|
int $topics = NULL,
|
|
|
|
|
int $adminlist = NULL,
|
|
|
|
|
int $topicsAboveWall = NULL,
|
|
|
|
|
int $hideFromGlobalFeed = NULL)
|
|
|
|
|
{
|
|
|
|
|
$this->requireUser();
|
|
|
|
|
$this->willExecuteWriteAction();
|
|
|
|
|
|
|
|
|
|
$club = (new ClubsRepo)->get($group_id);
|
|
|
|
|
|
|
|
|
|
if(!$club) $this->fail(203, "Club not found");
|
|
|
|
|
if(!$club || !$club->canBeModifiedBy($this->getUser())) $this->fail(15, "You can't modify this group.");
|
|
|
|
|
if(!empty($screen_name) && !$club->setShortcode($screen_name)) $this->fail(103, "Invalid shortcode.");
|
|
|
|
|
|
|
|
|
|
!is_null($title) ? $club->setName($title) : NULL;
|
|
|
|
|
!is_null($description) ? $club->setAbout($description) : NULL;
|
|
|
|
|
!is_null($screen_name) ? $club->setShortcode($screen_name) : NULL;
|
|
|
|
|
!is_null($website) ? $club->setWebsite((!parse_url($website, PHP_URL_SCHEME) ? "https://" : "") . $website) : NULL;
|
|
|
|
|
!is_null($wall) ? $club->setWall($wall) : NULL;
|
|
|
|
|
!is_null($topics) ? $club->setEveryone_Can_Create_Topics($topics) : NULL;
|
|
|
|
|
!is_null($adminlist) ? $club->setAdministrators_List_Display($adminlist) : NULL;
|
|
|
|
|
!is_null($topicsAboveWall) ? $club->setDisplay_Topics_Above_Wall($topicsAboveWall) : NULL;
|
|
|
|
|
!is_null($hideFromGlobalFeed) ? $club->setHide_From_Global_Feed($hideFromGlobalFeed) : NULL;
|
|
|
|
|
|
|
|
|
|
$club->save();
|
|
|
|
|
|
|
|
|
|
return 1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function getMembers(string $group_id, string $sort = "id_asc", int $offset = 0, int $count = 100, string $fields = "", string $filter = "any")
|
|
|
|
|
{
|
|
|
|
|
# bdate,can_post,can_see_all_posts,can_see_audio,can_write_private_message,city,common_count,connections,contacts,country,domain,education,has_mobile,last_seen,lists,online,online_mobile,photo_100,photo_200,photo_200_orig,photo_400_orig,photo_50,photo_max,photo_max_orig,relation,relatives,schools,sex,site,status,universities
|
|
|
|
|
$club = (new ClubsRepo)->get((int) $group_id);
|
|
|
|
|
if(!$club)
|
|
|
|
|
$this->fail(125, "Invalid group id");
|
|
|
|
|
|
|
|
|
|
$sorter = "follower ASC";
|
|
|
|
|
|
|
|
|
|
switch($sort) {
|
|
|
|
|
default:
|
|
|
|
|
case "time_asc":
|
|
|
|
|
case "id_asc":
|
|
|
|
|
$sorter = "follower ASC";
|
|
|
|
|
break;
|
|
|
|
|
case "time_desc":
|
|
|
|
|
case "id_desc":
|
|
|
|
|
$sorter = "follower DESC";
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$members = array_slice(iterator_to_array($club->getFollowers(1, $count, $sorter)), $offset);
|
|
|
|
|
$arr = (object) [
|
|
|
|
|
"count" => count($members),
|
|
|
|
|
"items" => array()];
|
|
|
|
|
|
|
|
|
|
$filds = explode(",", $fields);
|
|
|
|
|
|
|
|
|
|
$i = 0;
|
|
|
|
|
foreach($members as $member) {
|
|
|
|
|
if($i > $count) {
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$arr->items[] = (object) [
|
|
|
|
|
"id" => $member->getId(),
|
|
|
|
|
"name" => $member->getCanonicalName(),
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
foreach($filds as $fild) {
|
|
|
|
|
switch($fild) {
|
|
|
|
|
case "bdate":
|
|
|
|
|
$arr->items[$i]->bdate = $member->getBirthday()->format('%e.%m.%Y');
|
|
|
|
|
break;
|
|
|
|
|
case "can_post":
|
|
|
|
|
$arr->items[$i]->can_post = $club->canBeModifiedBy($member);
|
|
|
|
|
break;
|
|
|
|
|
case "can_see_all_posts":
|
|
|
|
|
$arr->items[$i]->can_see_all_posts = 1;
|
|
|
|
|
break;
|
|
|
|
|
case "can_see_audio":
|
|
|
|
|
$arr->items[$i]->can_see_audio = 0;
|
|
|
|
|
break;
|
|
|
|
|
case "can_write_private_message":
|
|
|
|
|
$arr->items[$i]->can_write_private_message = 0;
|
|
|
|
|
break;
|
|
|
|
|
case "common_count":
|
|
|
|
|
$arr->items[$i]->common_count = 420;
|
|
|
|
|
break;
|
|
|
|
|
case "connections":
|
|
|
|
|
$arr->items[$i]->connections = 1;
|
|
|
|
|
break;
|
|
|
|
|
case "contacts":
|
|
|
|
|
$arr->items[$i]->contacts = $member->getContactEmail();
|
|
|
|
|
break;
|
|
|
|
|
case "country":
|
|
|
|
|
$arr->items[$i]->country = 1;
|
|
|
|
|
break;
|
|
|
|
|
case "domain":
|
|
|
|
|
$arr->items[$i]->domain = "";
|
|
|
|
|
break;
|
|
|
|
|
case "education":
|
|
|
|
|
$arr->items[$i]->education = "";
|
|
|
|
|
break;
|
|
|
|
|
case "has_mobile":
|
|
|
|
|
$arr->items[$i]->has_mobile = false;
|
|
|
|
|
break;
|
|
|
|
|
case "last_seen":
|
|
|
|
|
$arr->items[$i]->last_seen = $member->getOnline()->timestamp();
|
|
|
|
|
break;
|
|
|
|
|
case "lists":
|
|
|
|
|
$arr->items[$i]->lists = "";
|
|
|
|
|
break;
|
|
|
|
|
case "online":
|
|
|
|
|
$arr->items[$i]->online = $member->isOnline();
|
|
|
|
|
break;
|
|
|
|
|
case "online_mobile":
|
|
|
|
|
$arr->items[$i]->online_mobile = $member->getOnlinePlatform() == "android" || $member->getOnlinePlatform() == "iphone" || $member->getOnlinePlatform() == "mobile";
|
|
|
|
|
break;
|
|
|
|
|
case "photo_100":
|
|
|
|
|
$arr->items[$i]->photo_100 = $member->getAvatarURL("tiny");
|
|
|
|
|
break;
|
|
|
|
|
case "photo_200":
|
|
|
|
|
$arr->items[$i]->photo_200 = $member->getAvatarURL("normal");
|
|
|
|
|
break;
|
|
|
|
|
case "photo_200_orig":
|
|
|
|
|
$arr->items[$i]->photo_200_orig = $member->getAvatarURL("normal");
|
|
|
|
|
break;
|
|
|
|
|
case "photo_400_orig":
|
|
|
|
|
$arr->items[$i]->photo_400_orig = $member->getAvatarURL("normal");
|
|
|
|
|
break;
|
|
|
|
|
case "photo_max":
|
|
|
|
|
$arr->items[$i]->photo_max = $member->getAvatarURL("original");
|
|
|
|
|
break;
|
|
|
|
|
case "photo_max_orig":
|
|
|
|
|
$arr->items[$i]->photo_max_orig = $member->getAvatarURL();
|
|
|
|
|
break;
|
|
|
|
|
case "relation":
|
|
|
|
|
$arr->items[$i]->relation = $member->getMaritalStatus();
|
|
|
|
|
break;
|
|
|
|
|
case "relatives":
|
|
|
|
|
$arr->items[$i]->relatives = 0;
|
|
|
|
|
break;
|
|
|
|
|
case "schools":
|
|
|
|
|
$arr->items[$i]->schools = 0;
|
|
|
|
|
break;
|
|
|
|
|
case "sex":
|
|
|
|
|
$arr->items[$i]->sex = $member->isFemale() ? 1 : 2;
|
|
|
|
|
break;
|
|
|
|
|
case "site":
|
|
|
|
|
$arr->items[$i]->site = $member->getWebsite();
|
|
|
|
|
break;
|
|
|
|
|
case "status":
|
|
|
|
|
$arr->items[$i]->status = $member->getStatus();
|
|
|
|
|
break;
|
|
|
|
|
case "universities":
|
|
|
|
|
$arr->items[$i]->universities = 0;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
$i++;
|
|
|
|
|
}
|
|
|
|
|
return $arr;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function getSettings(string $group_id)
|
|
|
|
|
{
|
|
|
|
|
$this->requireUser();
|
|
|
|
|
$club = (new ClubsRepo)->get((int)$group_id);
|
|
|
|
|
|
|
|
|
|
if(!$club || !$club->canBeModifiedBy($this->getUser()))
|
|
|
|
|
$this->fail(15, "You can't get settings of this group.");
|
|
|
|
|
|
|
|
|
|
$arr = (object) [
|
|
|
|
|
"title" => $club->getName(),
|
|
|
|
|
"description" => $club->getDescription() != NULL ? $club->getDescription() : "",
|
|
|
|
|
"address" => $club->getShortcode(),
|
|
|
|
|
"wall" => $club->canPost() == true ? 1 : 0,
|
|
|
|
|
"photos" => 1,
|
|
|
|
|
"video" => 0,
|
|
|
|
|
"audio" => 0,
|
|
|
|
|
"docs" => 0,
|
|
|
|
|
"topics" => $club->isEveryoneCanCreateTopics() == true ? 1 : 0,
|
|
|
|
|
"wiki" => 0,
|
|
|
|
|
"messages" => 0,
|
|
|
|
|
"obscene_filter" => 0,
|
|
|
|
|
"obscene_stopwords" => 0,
|
|
|
|
|
"obscene_words" => "",
|
|
|
|
|
"access" => 1,
|
|
|
|
|
"subject" => 1,
|
|
|
|
|
"subject_list" => [
|
|
|
|
|
0 => "в",
|
|
|
|
|
1 => "опенвк",
|
|
|
|
|
2 => "нет",
|
|
|
|
|
3 => "категорий",
|
|
|
|
|
4 => "групп",
|
|
|
|
|
],
|
|
|
|
|
"rss" => "/club".$club->getId()."/rss",
|
|
|
|
|
"website" => $club->getWebsite(),
|
|
|
|
|
"age_limits" => 0,
|
|
|
|
|
"market" => [],
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
return $arr;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function isMember(string $group_id, int $user_id, string $user_ids = "", bool $extended = false)
|
|
|
|
|
{
|
|
|
|
|
$this->requireUser();
|
|
|
|
|
$id = $user_id != NULL ? $user_id : explode(",", $user_ids);
|
|
|
|
|
|
|
|
|
|
if($group_id < 0)
|
|
|
|
|
$this->fail(228, "Remove the minus from group_id");
|
|
|
|
|
|
|
|
|
|
$club = (new ClubsRepo)->get((int)$group_id);
|
|
|
|
|
$usver = (new UsersRepo)->get((int)$id);
|
|
|
|
|
|
|
|
|
|
if(!$club || $group_id == 0)
|
|
|
|
|
$this->fail(203, "Invalid club");
|
|
|
|
|
|
|
|
|
|
if(!$usver || $usver->isDeleted() || $user_id == 0)
|
|
|
|
|
$this->fail(30, "Invalid user");
|
|
|
|
|
|
|
|
|
|
if($extended == false) {
|
|
|
|
|
return $club->getSubscriptionStatus($usver) ? 1 : 0;
|
|
|
|
|
} else {
|
|
|
|
|
return (object)
|
|
|
|
|
[
|
|
|
|
|
"member" => $club->getSubscriptionStatus($usver) ? 1 : 0,
|
|
|
|
|
"request" => 0,
|
|
|
|
|
"invitation" => 0,
|
|
|
|
|
"can_invite" => 0,
|
|
|
|
|
"can_recall" => 0
|
|
|
|
|
];
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function remove(int $group_id, int $user_id)
|
|
|
|
|
{
|
|
|
|
|
$this->requireUser();
|
|
|
|
|
|
|
|
|
|
$this->fail(501, "Not implemented");
|
|
|
|
|
}
|
2020-08-12 14:36:18 +03:00
|
|
|
|
}
|