Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/mail.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/lib/Model
diff options
context:
space:
mode:
authorChristoph Wurst <christoph@winzerhof-wurst.at>2019-10-02 12:47:00 +0300
committerChristoph Wurst <christoph@winzerhof-wurst.at>2020-01-31 18:43:51 +0300
commitc287787f8df599b567f399f6022ffc88db3a0582 (patch)
tree6d1863eff65f5c43db73c1e36df6938c505ef58e /lib/Model
parent31f89d71f860c8c2f75234537a8d64f38da696ab (diff)
Add a cache for IMAP message in the database
Co-authored-by: Roeland Jago Douma <roeland@famdouma.nl> Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at> Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
Diffstat (limited to 'lib/Model')
-rw-r--r--lib/Model/IMAPMessage.php43
1 files changed, 42 insertions, 1 deletions
diff --git a/lib/Model/IMAPMessage.php b/lib/Model/IMAPMessage.php
index 714342d6a..be30a78ad 100644
--- a/lib/Model/IMAPMessage.php
+++ b/lib/Model/IMAPMessage.php
@@ -48,6 +48,7 @@ use OCP\AppFramework\Db\DoesNotExistException;
use OCP\Files\File;
use OCP\Files\SimpleFS\ISimpleFile;
use function base64_encode;
+use function json_encode;
use function mb_convert_encoding;
class IMAPMessage implements IMessage, JsonSerializable {
@@ -69,6 +70,7 @@ class IMAPMessage implements IMessage, JsonSerializable {
* @param Horde_Imap_Client_Data_Fetch|null $fetch
* @param bool $loadHtmlMessage
* @param Html|null $htmlService
+ *
* @throws DoesNotExistException
*/
public function __construct($conn,
@@ -145,6 +147,7 @@ class IMAPMessage implements IMessage, JsonSerializable {
/**
* @param array $flags
+ *
* @throws Exception
*/
public function setFlags(array $flags) {
@@ -168,6 +171,7 @@ class IMAPMessage implements IMessage, JsonSerializable {
/**
* @param AddressList $from
+ *
* @throws Exception
*/
public function setFrom(AddressList $from) {
@@ -183,6 +187,7 @@ class IMAPMessage implements IMessage, JsonSerializable {
/**
* @param AddressList $to
+ *
* @throws Exception
*/
public function setTo(AddressList $to) {
@@ -198,6 +203,7 @@ class IMAPMessage implements IMessage, JsonSerializable {
/**
* @param AddressList $cc
+ *
* @throws Exception
*/
public function setCC(AddressList $cc) {
@@ -213,6 +219,7 @@ class IMAPMessage implements IMessage, JsonSerializable {
/**
* @param AddressList $bcc
+ *
* @throws Exception
*/
public function setBcc(AddressList $bcc) {
@@ -237,6 +244,7 @@ class IMAPMessage implements IMessage, JsonSerializable {
/**
* @param string $subject
+ *
* @throws Exception
*/
public function setSubject(string $subject) {
@@ -259,6 +267,7 @@ class IMAPMessage implements IMessage, JsonSerializable {
/**
* @param Horde_Mime_Part $part
+ *
* @return bool
*/
private function hasAttachments($part) {
@@ -319,7 +328,7 @@ class IMAPMessage implements IMessage, JsonSerializable {
} else {
if (!is_null($structure->findBody())) {
// get the body from the server
- $partId = (int) $structure->findBody();
+ $partId = (int)$structure->findBody();
$this->getPart($structure->getPart($partId), $partId);
}
}
@@ -328,6 +337,7 @@ class IMAPMessage implements IMessage, JsonSerializable {
/**
* @param Horde_Mime_Part $p
* @param mixed $partNo
+ *
* @throws DoesNotExistException
*/
private function getPart(Horde_Mime_Part $p, $partNo) {
@@ -427,6 +437,7 @@ class IMAPMessage implements IMessage, JsonSerializable {
* @param int $accountId
* @param string $folderId
* @param int $messageId
+ *
* @return string
*/
public function getHtmlBody(int $accountId, string $folderId, int $messageId): string {
@@ -457,6 +468,7 @@ class IMAPMessage implements IMessage, JsonSerializable {
/**
* @param Horde_Mime_Part $part
* @param mixed $partNo
+ *
* @throws DoesNotExistException
*/
private function handleMultiPartMessage(Horde_Mime_Part $part, $partNo) {
@@ -470,6 +482,7 @@ class IMAPMessage implements IMessage, JsonSerializable {
/**
* @param Horde_Mime_Part $p
* @param mixed $partNo
+ *
* @throws DoesNotExistException
*/
private function handleTextMessage(Horde_Mime_Part $p, $partNo) {
@@ -480,6 +493,7 @@ class IMAPMessage implements IMessage, JsonSerializable {
/**
* @param Horde_Mime_Part $p
* @param mixed $partNo
+ *
* @throws DoesNotExistException
*/
private function handleHtmlMessage(Horde_Mime_Part $p, $partNo) {
@@ -493,6 +507,7 @@ class IMAPMessage implements IMessage, JsonSerializable {
/**
* @param Horde_Mime_Part $p
* @param mixed $partNo
+ *
* @return string
* @throws DoesNotExistException
* @throws Exception
@@ -582,4 +597,30 @@ class IMAPMessage implements IMessage, JsonSerializable {
throw new Exception('not implemented');
}
+ public function toDbMessage(int $mailboxId): \OCA\Mail\Db\Message {
+ $msg = new \OCA\Mail\Db\Message();
+
+ $msg->setUid($this->getUid());
+ $msg->setMessageId($this->getMessageId());
+ $msg->setMailboxId($mailboxId);
+ $msg->setFrom($this->getFrom());
+ $msg->setTo($this->getTo());
+ $msg->setCc($this->getCc());
+ $msg->setBcc($this->getBcc());
+ $msg->setSubject(mb_substr($this->getSubject(), 0, 255));
+ $msg->setSentAt($this->getSentDate()->getTimestamp());
+
+ $flags = $this->fetch->getFlags();
+ $msg->setFlagAnswered(in_array(Horde_Imap_Client::FLAG_ANSWERED, $flags, true));
+ $msg->setFlagDeleted(in_array(Horde_Imap_Client::FLAG_DELETED, $flags, true));
+ $msg->setFlagDraft(in_array(Horde_Imap_Client::FLAG_DRAFT, $flags, true));
+ $msg->setFlagFlagged(in_array(Horde_Imap_Client::FLAG_FLAGGED, $flags, true));
+ $msg->setFlagSeen(in_array(Horde_Imap_Client::FLAG_SEEN, $flags, true));
+ $msg->setFlagForwarded(in_array(Horde_Imap_Client::FLAG_FORWARDED, $flags, true));
+ $msg->setFlagJunk(in_array(Horde_Imap_Client::FLAG_JUNK, $flags, true));
+ $msg->setFlagNotjunk(in_array(Horde_Imap_Client::FLAG_NOTJUNK, $flags, true));
+
+ return $msg;
+ }
+
}