function DoGetFoldersList()
 {
     $_dbStorage = $_settings = $_xmlObj = $_xmlRes = $_accountId = null;
     $this->_initFuncArgs($_dbStorage, $_settings, $_xmlObj, $_xmlRes, $_accountId);
     $_idAcct = (int) $_xmlObj->GetParamValueByName('id_acct');
     $_syncType = (int) $_xmlObj->GetParamValueByName('sync');
     $_changeAccount = false;
     if ($_syncType != -1) {
         if ($_idAcct != $_SESSION[ACCOUNT_ID] && CXmlProcessing::CheckAccountAccess($_idAcct, $_xmlRes)) {
             if ($_syncType != 2) {
                 $_changeAccount = true;
                 $_SESSION[ACCOUNT_ID] = $_idAcct;
             }
         } else {
             $_idAcct = $_SESSION[ACCOUNT_ID];
         }
     }
     $_folders = null;
     $_account =& CXmlProcessing::AccountCheckAndLoad($_xmlRes, $_idAcct, false, false);
     $_processor = new MailProcessor($_account);
     $_syncRes = true;
     switch ($_syncType) {
         case -1:
         case 0:
         case 1:
             $_folders =& $_processor->GetFolders();
             break;
         case 2:
             $_syncRes = $_processor->SynchronizeFolders();
             if ($_syncRes) {
                 $_folders =& $_processor->GetFolders();
             }
             break;
     }
     if (!$_syncRes) {
         CXmlProcessing::PrintErrorAndExit(getGlobalError(), $_xmlRes);
     } else {
         if ($_folders != null) {
             $_foldersList = new XmlDomNode('folders_list');
             $_foldersList->AppendAttribute('sync', $_syncType);
             $_foldersList->AppendAttribute('id_acct', $_idAcct);
             $_foldersList->AppendAttribute('namespace', $_account->NameSpace);
             CXmlProcessing::GetFoldersTreeXml($_folders, $_foldersList, $_processor);
             $_xmlRes->XmlRoot->AppendChild($_foldersList);
         } else {
             CXmlProcessing::PrintErrorAndExit(PROC_CANT_GET_FLDS, $_xmlRes);
         }
     }
 }