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