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 wipeConversationMessage($conversationMessageId) { if (empty($conversationMessageId) or !is_numeric($conversationMessageId)) { throw new InvalidIntegerArgumentException("\$conversationMessageId have to be non zero integer."); } // Get message $filter = new ConversationMessagesFilter(); $filter->setId($conversationMessageId); $message = $this->getConversationMessage($filter, true); $qb = new QueryBuilder(); $qb->delete(Tbl::get('TBL_CONVERSATION_MESSAGES'))->where($qb->expr()->equal(new Field('id'), $message->id)); $affected = $this->query->exec($qb->getSQL())->affected(); $this->correctConversationReadStatus($message->uuid, $message->senderId); $this->correctConversationHasAttachment($message->uuid, $message->senderId); $this->correctConversationReadStatus($message->uuid, $message->receiverId); $this->correctConversationHasAttachment($message->uuid, $message->receiverId); return $affected; }
public function markConversationMessageAsRead($conversationMessageId) { if (empty($conversationMessageId) or !is_numeric($conversationMessageId)) { throw new InvalidIntegerArgumentException("\$conversationMessageId have to be non zero integer."); } // Get message $filter = new ConversationMessagesFilter(); $filter->setId($conversationMessageId); $message = $this->getConversationMessage($filter, true); // Change read status $qb = new QueryBuilder(); $qb->update(Tbl::get('TBL_CONVERSATION_MESSAGES'))->set(new Field('read'), self::STATUS_READ_READ)->where($qb->expr()->equal(new Field('id'), $message->id)); $this->query->exec($qb->getSQL())->affected(); $this->correctConversationReadStatus($message->uuid, $message->receiverId); }