/**
  * @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);
     }
 }
Example #3
0
     }
 } 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) {