/** * @param Account $account; * @param int $messId * @param string $messUid * @param int $folderId * @param string $folderFullName * @return GetMessageBase */ function GetMessageBase(&$account, $messId, $messUid, $folderId, $folderFullName, $charset) { $this->messId = $messId; $this->messUid = $messUid; $this->folderId = $folderId; $this->folderFullName = $folderFullName; $this->charset = $charset; $this->accountId = $account->Id; $this->account =& $account; $this->processor = new MailProcessor($this->account); $this->folder = new Folder($this->accountId, $folderId, $folderFullName); $this->processor->GetFolderInfo($this->folder); $msgIdUid = array(); if (!empty($messId) && !empty($messUid)) { $msgIdUid[$messId] = $messUid; } $charsetNum = -1; if ($charset != -1) { $GLOBALS[MailInputCharset] = $charset; $charsetNum = ConvertUtils::GetCodePageNumber($charset); } $this->msg =& $this->processor->GetMessage($messId, $messUid, $this->folder); if ($this->msg) { if (!(($this->msg->Flags & MESSAGEFLAGS_Seen) == MESSAGEFLAGS_Seen)) { $this->processor->SetFlag($msgIdUid, $this->folder, MESSAGEFLAGS_Seen, ACTION_Set); } if ($this->folder->SyncType != FOLDERSYNC_DirectMode && $this->processor->DbStorage->Connect()) { $this->processor->DbStorage->UpdateMessageCharset($messId, $charsetNum, $this->msg); } } }
function DoGetMessage() { $_dbStorage = $_settings = $_xmlObj = $_xmlRes = $_accountId = null; $this->_initFuncArgs($_dbStorage, $_settings, $_xmlObj, $_xmlRes, $_accountId); $_account =& CXmlProcessing::AccountCheckAndLoad($_xmlRes, $_accountId, true, false); $_charsetNum = $_xmlObj->GetParamValueByName('charset'); if ($_charsetNum > 0) { $_account->DefaultIncCharset = ConvertUtils::GetCodePageName($_charsetNum); $GLOBALS[MailInputCharset] = $_account->DefaultIncCharset; $_account->UpdateDefaultIncCharset(); } $_processor = new MailProcessor($_account); $_folderNodeRequest =& $_xmlObj->XmlRoot->GetChildNodeByTagName('folder'); $_folder = null; if (isset($_folderNodeRequest->Attributes['id'])) { $_folder = new Folder($_accountId, $_folderNodeRequest->Attributes['id'], $_folderNodeRequest->GetChildValueByTagName('full_name')); $_processor->GetFolderInfo($_folder); if (!$_folder || $_folder->IdDb < 1) { CXmlProcessing::PrintErrorAndExit(WebMailException, $_xmlRes); } } else { CXmlProcessing::PrintErrorAndExit(WebMailException, $_xmlRes); } $_msgId = $_xmlObj->GetParamValueByName('id'); $_msgUid = $_xmlObj->GetParamTagValueByName('uid'); $_msgSize = $_xmlObj->GetParamValueByName('size'); $_msgIdUid = array($_msgId => $_msgUid); $_mode = (int) $_xmlObj->GetParamValueByName('mode'); $_modeForGet = $_mode; if (empty($_msgSize) || (int) $_msgSize < BODYSTRUCTURE_MGSSIZE_LIMIT || $_folder && FOLDERTYPE_Drafts == $_folder->Type || (($_mode & 8) == 8 || ($_mode & 16) == 16 || ($_mode & 32) == 32 || ($_mode & 64) == 64)) { $_modeForGet = null; } $_message = null; $_message =& $_processor->GetMessage($_msgId, $_msgUid, $_folder, $_modeForGet); if (null != $_message) { if (($_message->Flags & MESSAGEFLAGS_Seen) != MESSAGEFLAGS_Seen) { $_processor->SetFlag($_msgIdUid, $_folder, MESSAGEFLAGS_Seen, ACTION_Set); } $_isFromSave = false; if (USE_DB && ($_modeForGet === null || ($_modeForGet & 1) == 1)) { $_fromObj = new EmailAddress(); $_fromObj->Parse($_message->GetFromAsString(true)); if ($_fromObj->Email) { $_isFromSave = $_processor->DbStorage->SelectSenderSafetyByEmail($_fromObj->Email, $_account->IdUser); } if ($_folder->SyncType != FOLDERSYNC_DirectMode && $_processor->DbStorage->Connect()) { $_processor->DbStorage->UpdateMessageCharset($_msgId, $_charsetNum, $_message); } } CXmlProcessing::GetMessageNode($_xmlRes, $_message, $_folder, $_processor, $_account, $_settings, $_mode, $_charsetNum, $_isFromSave); } else { CXmlProcessing::PrintErrorAndExit(getGlobalError(), $_xmlRes); } }
} } else { ///!!!! } $msgIdUid = array($mes_id => $mes_uid); $_messageInfo = new CMessageInfo(); $_messageInfo->SetInfo($mes_id, $mes_uid, $folder->IdDb, $folder->FullName); $modeForGet = $mode; if (empty($msgSize) || (int) $msgSize < BODYSTRUCTURE_MGSSIZE_LIMIT || $folder && FOLDERTYPE_Drafts == $folder->Type || (($mode & 8) == 8 || ($mode & 16) == 16 || ($mode & 32) == 32 || ($mode & 64) == 64)) { $modeForGet = null; } $message = null; $message =& $processor->GetMessage($mes_id, $mes_uid, $folder, $modeForGet); if (null != $message) { if (($message->Flags & MESSAGEFLAGS_Seen) != MESSAGEFLAGS_Seen) { $processor->SetFlag($msgIdUid, $folder, MESSAGEFLAGS_Seen, ACTION_Set); } $_isFromSave = false; if (USE_DB && ($modeForGet === null || ($modeForGet & 1) == 1)) { $_fromObj = new EmailAddress(); $_fromObj->Parse($message->GetFromAsString(true)); if ($_fromObj->Email) { $_isFromSave = $processor->DbStorage->SelectSenderSafetyByEmail($_fromObj->Email, $account->IdUser); } if ($folder->SyncType != FOLDERSYNC_DirectMode && $processor->DbStorage->Connect()) { $processor->DbStorage->UpdateMessageCharset($mes_id, $mes_charset, $message); } } $textCharset = $message->GetTextCharset(); $isRTL = false; if (null !== $textCharset) {