public function updateAttachmentMessageId($attachmentId, $newMessageId) { if (empty($attachmentId) or !is_numeric($attachmentId)) { throw new InvalidIntegerArgumentException("\$attachmentId have to be non zero integer."); } if (empty($newMessageId) or !is_numeric($newMessageId)) { throw new InvalidIntegerArgumentException("\$newMessageId have to be non zero integer."); } $convMgr = Reg::get(ConfigManager::getConfig("Messaging", "Conversations")->Objects->ConversationManager); $filter = new ConversationMessagesFilter(); $filter->setId($newMessageId); $message = $convMgr->getConversationMessage($filter); $qb = new QueryBuilder(); $qb->update(Tbl::get('TBL_CONVERSATION_ATTACHEMENTS'))->set(new Field('message_id'), $message->id)->where($qb->expr()->equal(new Field('id'), $attachmentId)); MySqlDbManager::getDbObject()->startTransaction(); try { $convMgr->setMessageHasAttachment($message); $affected = $this->query->exec($qb->getSQL())->affected(); if (!MySqlDbManager::getDbObject()->commit()) { MySqlDbManager::getDbObject()->rollBack(); } } catch (Exception $e) { MySqlDbManager::getDbObject()->rollBack(); throw $e; } }
public function run() { $filter = new ConversationMessagesFilter(); $filter->setUUID($this->uuid); $filter->setIdGreater($this->lastId); $messages = Reg::get('convMgr')->getConversationMessages($filter); if (count($messages) > 0) { $this->newMessages = $messages; $this->newLastId = $messages[count($messages) - 1]->id; $this->setIsAnyData(); } }
public function correctConversationHasAttachment($uuid, $userId) { if (empty($userId) or !is_numeric($userId)) { throw new InvalidIntegerArgumentException("\$receiverUserId have to be non zero integer."); } if (empty($uuid) or !is_numeric($uuid)) { throw new InvalidIntegerArgumentException("\$uuid have to be non zero integer."); } // Get Conversation of user $conversationFilter = new ConversationFilter(); $conversationFilter->setUUID($uuid); $conversationFilter->setUserId($userId); $conversation = $this->getConversation($conversationFilter); // Find how much messages with attachments in conversation $filter = new ConversationMessagesFilter(); $filter->setUUID($uuid); $filter->setDeletedStatus(ConversationManager::STATUS_DELETED_NO, $userId); $filter->setHasAttachment(self::STATUS_HAS_ATTACHMENT_YES); if ($conversation->fetchFrom != null) { $filter->setIdGreater($conversation->fetchFrom); } $msgsWithAttachmentsCount = $this->getConversationMessagesCount($filter); // Correct has attachment status accordingly if ($msgsWithAttachmentsCount == 0 and $conversation->hasAttachment == self::STATUS_HAS_ATTACHMENT_YES) { $this->setConversationHasNoAttachment($uuid, $userId); } elseif ($msgsWithAttachmentsCount > 0 and $conversation->hasAttachment == self::STATUS_HAS_ATTACHMENT_NO) { $this->setConversationHasAttachment($uuid, $userId); } }
private function correctConversationReadStatus($uuid, $receiverUserId) { if (empty($receiverUserId) or !is_numeric($receiverUserId)) { throw new InvalidIntegerArgumentException("\$receiverUserId have to be non zero integer."); } if (empty($uuid) or !is_numeric($uuid)) { throw new InvalidIntegerArgumentException("\$uuid have to be non zero integer."); } // Get Conversation of message receiver $conversationFilter = new ConversationFilter(); $conversationFilter->setUUID($uuid); $conversationFilter->setUserId($receiverUserId); $conversation = $this->getConversation($conversationFilter); $unreadFilter = new ConversationMessagesFilter(); $unreadFilter->setReceiverId($receiverUserId); $unreadFilter->setUUID($uuid); if ($conversation->fetchFrom != null) { $unreadFilter->setIdGreater($conversation->fetchFrom); } $unreadFilter->setReadStatus(self::STATUS_READ_UNREAD); $unreadsCount = $this->getConversationMessagesCount($unreadFilter); if ($unreadsCount == 0) { $this->markConversationAsRead($receiverUserId, $uuid); } }