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/IMAP
diff options
context:
space:
mode:
authorChristoph Wurst <christoph@winzerhof-wurst.at>2020-08-11 22:10:49 +0300
committerChristoph Wurst <christoph@winzerhof-wurst.at>2020-08-24 21:21:40 +0300
commit9498ebac6eccde201526b9a6131a76c02ca5db62 (patch)
tree7256f1fc6de4dee185f5cc116e45247cf27f28cb /lib/IMAP
parent430500712496242526eed2aedb5afc42d60ca1b9 (diff)
Rework the routing
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
Diffstat (limited to 'lib/IMAP')
-rw-r--r--lib/IMAP/MessageMapper.php18
-rw-r--r--lib/IMAP/Sync/Response.php13
-rw-r--r--lib/IMAP/Threading/ThreadBuilder.php3
3 files changed, 19 insertions, 15 deletions
diff --git a/lib/IMAP/MessageMapper.php b/lib/IMAP/MessageMapper.php
index 2d0f3cee8..3b4fde341 100644
--- a/lib/IMAP/MessageMapper.php
+++ b/lib/IMAP/MessageMapper.php
@@ -364,14 +364,14 @@ class MessageMapper {
/**
* @param Horde_Imap_Client_Socket $client
* @param string $mailbox
- * @param int $id
+ * @param int $uid
*
* @return string|null
* @throws ServiceException
*/
public function getSource(Horde_Imap_Client_Socket $client,
string $mailbox,
- int $id): ?string {
+ int $uid): ?string {
$query = new Horde_Imap_Client_Fetch_Query();
$query->uid();
$query->fullText([
@@ -380,7 +380,7 @@ class MessageMapper {
try {
$result = iterator_to_array($client->fetch($mailbox, $query, [
- 'ids' => new Horde_Imap_Client_Ids($id),
+ 'ids' => new Horde_Imap_Client_Ids($uid),
]), false);
} catch (Horde_Imap_Client_Exception $e) {
throw new ServiceException("Could not fetch message source: " . $e->getMessage(), $e->getCode(), $e);
@@ -399,13 +399,13 @@ class MessageMapper {
public function getHtmlBody(Horde_Imap_Client_Socket $client,
string $mailbox,
- int $id): ?string {
+ int $uid): ?string {
$messageQuery = new Horde_Imap_Client_Fetch_Query();
$messageQuery->envelope();
$messageQuery->structure();
$result = $client->fetch($mailbox, $messageQuery, [
- 'ids' => new Horde_Imap_Client_Ids([$id]),
+ 'ids' => new Horde_Imap_Client_Ids([$uid]),
]);
if (($message = $result->first()) === null) {
@@ -435,7 +435,7 @@ class MessageMapper {
}
$parts = $client->fetch($mailbox, $partsQuery, [
- 'ids' => new Horde_Imap_Client_Ids([$id]),
+ 'ids' => new Horde_Imap_Client_Ids([$uid]),
]);
foreach ($parts as $part) {
@@ -456,12 +456,12 @@ class MessageMapper {
public function getRawAttachments(Horde_Imap_Client_Socket $client,
string $mailbox,
- int $id): array {
+ int $uid): array {
$messageQuery = new Horde_Imap_Client_Fetch_Query();
$messageQuery->structure();
$result = $client->fetch($mailbox, $messageQuery, [
- 'ids' => new Horde_Imap_Client_Ids([$id]),
+ 'ids' => new Horde_Imap_Client_Ids([$uid]),
]);
if (($structureResult = $result->first()) === null) {
@@ -488,7 +488,7 @@ class MessageMapper {
}
$parts = $client->fetch($mailbox, $partsQuery, [
- 'ids' => new Horde_Imap_Client_Ids([$id]),
+ 'ids' => new Horde_Imap_Client_Ids([$uid]),
]);
if (($messageData = $parts->first()) === null) {
throw new DoesNotExistException('Message does not exist');
diff --git a/lib/IMAP/Sync/Response.php b/lib/IMAP/Sync/Response.php
index 9e95b342e..d12625775 100644
--- a/lib/IMAP/Sync/Response.php
+++ b/lib/IMAP/Sync/Response.php
@@ -24,14 +24,15 @@ declare(strict_types=1);
namespace OCA\Mail\IMAP\Sync;
use JsonSerializable;
+use OCA\Mail\Db\Message;
use OCA\Mail\Model\IMAPMessage;
class Response implements JsonSerializable {
- /** @var IMAPMessage[] */
+ /** @var IMAPMessage|Message[] */
private $newMessages;
- /** @var IMAPMessage[] */
+ /** @var IMAPMessage|Message[] */
private $changedMessages;
/** @var int[] */
@@ -39,8 +40,8 @@ class Response implements JsonSerializable {
/**
* @param string $syncToken
- * @param IMAPMessage[] $newMessages
- * @param IMAPMessage[] $changedMessages
+ * @param IMAPMessage|Message[] $newMessages
+ * @param IMAPMessage|Message[] $changedMessages
* @param int[] $vanishedMessageUids
*/
public function __construct(array $newMessages = [],
@@ -52,14 +53,14 @@ class Response implements JsonSerializable {
}
/**
- * @return IMAPMessage[]
+ * @return IMAPMessage|Message[]
*/
public function getNewMessages(): array {
return $this->newMessages;
}
/**
- * @return IMAPMessage[]
+ * @return IMAPMessage|Message[]
*/
public function getChangedMessages(): array {
return $this->changedMessages;
diff --git a/lib/IMAP/Threading/ThreadBuilder.php b/lib/IMAP/Threading/ThreadBuilder.php
index 72283423f..8053d045d 100644
--- a/lib/IMAP/Threading/ThreadBuilder.php
+++ b/lib/IMAP/Threading/ThreadBuilder.php
@@ -110,6 +110,9 @@ class ThreadBuilder {
// Step 1.C
//$parentId = $message->getReferences()[count($message->getReferences()) - 1] ?? null;
//$container->setParent($idTable[$parentId] ?? null);
+ if ($parent === $container) {
+ throw new \Exception("about to run into a nasty endless loop");
+ }
if ($parent === null || !$parent->hasAncestor($container)) {
$container->setParent($parent);
}