/** * @param array $messageIdSet * @param Folder $folder * @return MessageCollection */ function GetMessages(&$messageIdUidSet, &$folder, $setRead = false) { $mailCollection = new WebMailMessageCollection(); $GLOBALS[MailDefaultCharset] = $this->_account->GetDefaultIncCharset(); $GLOBALS[MailOutputCharset] = $this->_account->GetUserCharset(); ConvertUtils::SetLimits(); $messageIdSet = array_keys($messageIdUidSet); $messageUidSet = array_values($messageIdUidSet); for ($i = 0, $c = count($messageIdUidSet); $i < $c; $i++) { $messageId =& $messageIdSet[$i]; $messageUid =& $messageUidSet[$i]; $mailMess = null; if ($folder->SyncType == FOLDERSYNC_DirectMode) { if ($this->MailStorage->Connect()) { $mailMess =& $this->MailStorage->LoadMessage($messageUid, true, $folder); } } elseif ($this->DbStorage->Connect()) { if ($this->DbStorage->GetMessageDownloadedFlag($messageId, $folder)) { $mailMess =& $this->DbStorage->LoadMessage($messageId, false, $folder); } elseif ($this->MailStorage->Connect()) { $mailMess =& $this->MailStorage->LoadMessage($messageUid, true, $folder); } } if ($setRead && $mailMess) { $mailMess->Flags = $mailMess->Flags | MESSAGEFLAGS_Seen; } if ($mailMess) { $mailMess->IdFolder = $folder->IdDb; } $mailCollection->Add($mailMess); unset($mailMess); } return $mailCollection; }
/** * @param int $messageId * @param string $messageUid * @param Folder $folder * @return WebMailMessage */ function &GetMessage($messageId, $messageUid, &$folder) { $mailMess = null; $GLOBALS[MailDefaultCharset] = $this->_account->GetDefaultIncCharset(); $GLOBALS[MailOutputCharset] = $this->_account->GetUserCharset(); @ini_set('memory_limit', MEMORYLIMIT); @set_time_limit(TIMELIMIT); if ($folder->SyncType == FOLDERSYNC_DirectMode) { if ($this->MailStorage->Connect()) { $mailMess =& $this->MailStorage->LoadMessage($messageUid, true, $folder); } } elseif ($this->DbStorage->Connect()) { if ($this->DbStorage->GetMessageDownloadedFlag($messageId, $folder)) { $mailMess =& $this->DbStorage->LoadMessage($messageId, false, $folder); } elseif ($this->MailStorage->Connect()) { $mailMess =& $this->MailStorage->LoadMessage($messageUid, true, $folder); } } return $mailMess; }