mirror of
https://github.com/openvk/openvk
synced 2024-12-24 01:21:07 +03:00
48 lines
1.3 KiB
PHP
48 lines
1.3 KiB
PHP
|
<?php declare(strict_types=1);
|
||
|
namespace openvk\Web\Models\Repositories;
|
||
|
use openvk\Web\Models\Entities\{Messages as M, User};
|
||
|
use Chandler\Database\DatabaseConnection as DB;
|
||
|
use Nette\Database\Table\ActiveRow;
|
||
|
|
||
|
class Conversations
|
||
|
{
|
||
|
private $context;
|
||
|
private $convos;
|
||
|
|
||
|
function __construct()
|
||
|
{
|
||
|
$this->context = DB::i()->getContext();
|
||
|
$this->convos = $this->context->table("conversations");
|
||
|
}
|
||
|
|
||
|
private function toConversation(?ActiveRow $ar): ?M\AbstractConversation
|
||
|
{
|
||
|
if(is_null($ar))
|
||
|
return NULL;
|
||
|
else if($ar->is_pm)
|
||
|
return new M\PrivateConversation($ar);
|
||
|
else
|
||
|
return new M\Conversation($ar);
|
||
|
}
|
||
|
|
||
|
function get(int $id): ?M\AbstractConversation
|
||
|
{
|
||
|
return $this->toConversation($this->convos->get($id));
|
||
|
}
|
||
|
|
||
|
function getConversationsByUser(User $user, int $page = 1, ?int $perPage = NULL) : \Traversable
|
||
|
{
|
||
|
$rels = $this->context->table("conversation_members")->where([
|
||
|
"deleted" => false,
|
||
|
"user" => $user->getId(),
|
||
|
])->page($page, $perPage ?? OPENVK_DEFAULT_PER_PAGE);
|
||
|
foreach($rels as $rel)
|
||
|
yield $this->get($rel->conversation);
|
||
|
}
|
||
|
|
||
|
function getPrivateConversation(User $user, int $peer): M\PrivateConversation
|
||
|
{
|
||
|
;
|
||
|
}
|
||
|
}
|