function DoNewFolder()
 {
     $_dbStorage = $_settings = $_xmlObj = $_xmlRes = $_accountId = null;
     $this->_initFuncArgs($_dbStorage, $_settings, $_xmlObj, $_xmlRes, $_accountId);
     $_acctId = (int) $_xmlObj->GetParamValueByName('id_acct');
     CXmlProcessing::CheckAccountAccess($_acctId, $_xmlRes);
     $_account =& CXmlProcessing::AccountCheckAndLoad($_xmlRes, $_acctId, false, false);
     $_folder = null;
     $_parentId = $_xmlObj->GetParamValueByName('id_parent');
     $_folderName = ConvertUtils::ConvertEncoding($_xmlObj->GetParamTagValueByName('name'), $_account->GetUserCharset(), CPAGE_UTF7_Imap);
     $_parentPath = $_parentId == -1 ? '' : $_xmlObj->GetParamTagValueByName('full_name_parent') . $_account->Delimiter;
     $_create = (bool) $_xmlObj->GetParamValueByName('create');
     if ($_account->MailProtocol == MAILPROTOCOL_WMSERVER) {
         $_folder = new Folder($_acctId, -1, $_parentPath . $_folderName, $_folderName, FOLDERSYNC_AllHeadersOnly);
     } else {
         if ($_account->MailProtocol == MAILPROTOCOL_IMAP4) {
             $_folderSync = $_account->GetDefaultFolderSync($_settings);
             $_folder = new Folder($_acctId, -1, $_parentPath . $_folderName, $_folderName, $_create ? $_folderSync : FOLDERSYNC_DontSync);
         } else {
             $_folder = new Folder($_acctId, -1, $_parentPath . $_folderName, $_folderName);
         }
     }
     $_folder->IdParent = $_parentId;
     $_folder->Type = FOLDERTYPE_Custom;
     $_folder->Hide = false;
     $_validate = $_folder->ValidateData();
     if (true !== $_validate) {
         CXmlProcessing::PrintErrorAndExit($_validate, $_xmlRes);
     }
     $_processor = new MailProcessor($_account);
     $_folders =& $_processor->GetFolders();
     $_folderList =& $_folders->CreateFolderListFromTree();
     $_folderExist = false;
     $_folderListKeys = array_keys($_folderList->Instance());
     foreach ($_folderListKeys as $_key) {
         $_listFolder =& $_folderList->Get($_key);
         if (strtolower($_listFolder->FullName) == strtolower($_folder->FullName)) {
             $_folderExist = true;
             break;
         }
         unset($_listFolder);
     }
     if ($_folderExist) {
         CXmlProcessing::PrintErrorAndExit(PROC_FOLDER_EXIST, $_xmlRes);
     } else {
         if ($_account->IsDemo || $_processor->CreateFolder($_folder, $_create)) {
             if (!$_account->IsDemo) {
                 $log =& CLog::CreateInstance();
                 $log->WriteEvent('User create personal folder ("' . $_folder->FullName . '")', $_account);
             }
             $_folders =& $_processor->GetFolders();
             $_foldersList = new XmlDomNode('folders_list');
             $_foldersList->AppendAttribute('sync', -1);
             $_foldersList->AppendAttribute('id_acct', $_acctId);
             $_foldersList->AppendAttribute('namespace', $_account->NameSpace);
             CXmlProcessing::GetFoldersTreeXml($_folders, $_foldersList, $_processor);
             $_xmlRes->XmlRoot->AppendChild($_foldersList);
         } else {
             CXmlProcessing::PrintErrorAndExit(PROC_CANT_CREATE_FLD, $_xmlRes);
         }
     }
 }