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); }