mirror of
https://github.com/openvk/openvk
synced 2024-11-11 01:19:53 +03:00
Begin refactoring Correspondence::getMessage to be compatible with VK API
This commit is contained in:
parent
9dc25aa938
commit
82af3a27cc
1 changed files with 29 additions and 11 deletions
|
@ -27,6 +27,9 @@ class Correspondence
|
|||
*/
|
||||
private $messages;
|
||||
|
||||
const CAP_BEHAVIOUR_END_MESSAGE_ID = 1;
|
||||
const CAP_BEHAVIOUR_START_MESSAGE_ID = 2;
|
||||
|
||||
/**
|
||||
* Correspondence constructor.
|
||||
*
|
||||
|
@ -69,24 +72,36 @@ class Correspondence
|
|||
*
|
||||
* Fetch messages on per page basis.
|
||||
*
|
||||
* @param $page - page (defaults to first)
|
||||
* @param $perPage - messages per page (defaults to default per page count)
|
||||
* @param $cap - page (defaults to first)
|
||||
* @param $limit - messages per page (defaults to default per page count)
|
||||
* @returns \Traversable - iterable messages cursor
|
||||
*/
|
||||
function getMessages(?float $offset = NULL, ?int $perPage = NULL): array
|
||||
function getMessages(int $capBehavior = 1, ?int $cap = NULL, ?int $limit = NULL, ?int $padding = NULL, bool $reverse = false): array
|
||||
{
|
||||
$query = file_get_contents(__DIR__ . "/../sql/get-messages.tsql");
|
||||
$params = [
|
||||
[get_class($this->correspondents[0]), get_class($this->correspondents[1])],
|
||||
[$this->correspondents[0]->getId(), $this->correspondents[1]->getId()],
|
||||
[$perPage ?? OPENVK_DEFAULT_PER_PAGE]
|
||||
[$limit ?? OPENVK_DEFAULT_PER_PAGE]
|
||||
];
|
||||
$params = array_merge($params[0], $params[1], array_reverse($params[0]), array_reverse($params[1]), $params[2]);
|
||||
|
||||
if(is_null($offset))
|
||||
$query = str_replace("\n AND (`id` < ?)", "", $query);
|
||||
if(is_null($cap)) {
|
||||
$query = str_replace("\n AND (`id` > ?)", "", $query);
|
||||
} else {
|
||||
if($capBehavior === 1)
|
||||
$query = str_replace("\n AND (`id` > ?)", "\n AND (`id` < ?)", $query);
|
||||
|
||||
array_unshift($params, $cap);
|
||||
}
|
||||
|
||||
if(is_null($padding))
|
||||
$query = str_replace("\nOFFSET\n?", "", $query);
|
||||
else
|
||||
array_unshift($params, $offset);
|
||||
$params[] = $padding;
|
||||
|
||||
if($reverse)
|
||||
$query = str_replace("`created` DESC", "`created` ASC", $query);
|
||||
|
||||
$msgs = DatabaseConnection::i()->getConnection()->query($query, ...$params);
|
||||
$msgs = array_map(function($message) {
|
||||
|
@ -105,7 +120,7 @@ class Correspondence
|
|||
*/
|
||||
function getPreviewMessage(): ?Message
|
||||
{
|
||||
$messages = $this->getMessages(null, 1);
|
||||
$messages = $this->getMessages(1, null, 1);
|
||||
return $messages[0] ?? NULL;
|
||||
}
|
||||
|
||||
|
@ -117,12 +132,15 @@ class Correspondence
|
|||
*/
|
||||
function sendMessage(Message $message, bool $dontReverse = false)
|
||||
{
|
||||
$user = (new Users)->getByChandlerUser(Authenticator::i()->getUser());
|
||||
if(!$user) return false;
|
||||
if(!$dontReverse) {
|
||||
$user = (new Users)->getByChandlerUser(Authenticator::i()->getUser());
|
||||
if(!$user)
|
||||
return false;
|
||||
}
|
||||
|
||||
$ids = [$this->correspondents[0]->getId(), $this->correspondents[1]->getId()];
|
||||
$classes = [get_class($this->correspondents[0]), get_class($this->correspondents[1])];
|
||||
if($ids[1] === $user->getId() && !$dontReverse) {
|
||||
if(!$dontReverse && $ids[1] === $user->getId()) {
|
||||
$ids = array_reverse($ids);
|
||||
$classes = array_reverse($classes);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue