function DoGetMessages()
 {
     $_dbStorage = $_settings = $_xmlObj = $_xmlRes = $_accountId = null;
     $this->_initFuncArgs($_dbStorage, $_settings, $_xmlObj, $_xmlRes, $_accountId);
     $_acct_id = $_xmlObj->GetParamValueByName('id_acct');
     if (strlen($_acct_id) == 0) {
         $_acct_id = $_accountId;
     }
     CXmlProcessing::CheckAccountAccess($_acct_id, $_xmlRes);
     $_account =& CXmlProcessing::AccountCheckAndLoad($_xmlRes, $_acct_id, false, false);
     $_processor = new MailProcessor($_account);
     $_page = 1;
     $_folderNode =& $_xmlObj->XmlRoot->GetChildNodeByTagName('folder');
     $log =& CLog::CreateInstance();
     $_folders = $_folder = null;
     if (isset($_folderNode->Attributes['id'])) {
         $_folder = new Folder($_account->Id, $_folderNode->Attributes['id'], $_folderNode->GetChildValueByTagName('full_name'));
         if (!USE_DB) {
             $_folder->SyncType = FOLDERSYNC_DirectMode;
         }
     } else {
         CXmlProcessing::PrintErrorAndExit(PROC_CANT_GET_MSG_LIST, $_xmlRes);
     }
     $_searchNode =& $_xmlObj->XmlRoot->GetChildNodeByTagName('look_for');
     if (!isset($_searchNode->Attributes['fields'])) {
         CXmlProcessing::PrintErrorAndExit(PROC_CANT_GET_MSG_LIST, $_xmlRes);
     }
     $_sortField = $_xmlObj->GetParamValueByName('sort_field');
     $_sortOrder = $_xmlObj->GetParamValueByName('sort_order');
     if ($_sortField + $_sortOrder != $_account->DefaultOrder) {
         $_account->DefaultOrder = $_sortField + $_sortOrder;
         $_account->UpdateDefaultOrder();
     }
     if ($_searchNode->Value === '' || $_searchNode->Value === null) {
         $_processor->GetFolderInfo($_folder);
         $_processor->GetFolderMessageCount($_folder);
         if (ceil($_folder->MessageCount / $_account->MailsPerPage) < (int) $_xmlObj->GetParamValueByName('page')) {
             $_page = $_xmlObj->GetParamValueByName('page') - 1;
             $_page = $_page < 1 ? 1 : $_page;
         } else {
             $_page = $_xmlObj->GetParamValueByName('page');
         }
         $_messageCollection =& $_processor->GetMessageHeaders($_page, $_folder);
     } else {
         if ($_folder->IdDb == -1) {
             if (USE_DB) {
                 $_folders =& $_processor->GetFolders();
             } else {
                 $_Allfolders =& $_processor->GetFolders();
                 $_folder = $_Allfolders->GetFolderByType(FOLDERTYPE_Inbox);
             }
         } else {
             $_processor->GetFolderInfo($_folder);
             $_folders = new FolderCollection();
             $_folders->Add($_folder);
         }
         $_page = (int) $_xmlObj->GetParamValueByName('page');
         $log->WriteLine(print_r($_folder, true));
         if ($_account->MailProtocol == MAILPROTOCOL_IMAP4 && $_folder->SyncType == FOLDERSYNC_DirectMode && $_folder->IdDb > 0) {
             $_processor->GetFolderInfo($_folder);
             $msgCount = 0;
             $_messageCollection =& $_processor->DmImapSearchMessages($_page, $_searchNode->Value, $_folder, (bool) (!$_searchNode->Attributes['fields']), $msgCount);
             $_folder->MessageCount = $msgCount;
         } else {
             if ($_account->MailProtocol == MAILPROTOCOL_IMAP4 && (bool) $_searchNode->Attributes['fields'] && $_folder->IdDb > 0 && ($_folder->SyncType == FOLDERSYNC_AllHeadersOnly || $_folder->SyncType == FOLDERSYNC_NewHeadersOnly)) {
                 $_processor->GetFolderInfo($_folder);
                 $msgCount = 0;
                 $_messageCollection =& $_processor->HeadersFullImapSearchMessages($_page, $_searchNode->Value, $_folder, $msgCount);
                 $_folder->MessageCount = $msgCount;
             } else {
                 $_folder->MessageCount = $_processor->SearchMessagesCount(ConvertUtils::ConvertEncoding($_searchNode->Value, $_account->GetUserCharset(), $_account->DbCharset), $_folders, (bool) (!$_searchNode->Attributes['fields']));
                 $_messageCollection =& $_processor->SearchMessages($_page, ConvertUtils::ConvertEncoding($_searchNode->Value, $_account->GetUserCharset(), $_account->DbCharset), $_folders, (bool) (!$_searchNode->Attributes['fields']), $_folder->MessageCount);
             }
         }
     }
     CXmlProcessing::GetMessagesList($_xmlRes, $_messageCollection, $_account, $_settings, $_processor, $_folder, $_searchNode->Value, $_searchNode->Attributes['fields'], $_page, $_sortField, $_sortOrder);
 }