function DoDeleteFolders() { $_dbStorage = $_settings = $_xmlObj = $_xmlRes = $_accountId = null; $this->_initFuncArgs($_dbStorage, $_settings, $_xmlObj, $_xmlRes, $_accountId); $_acctId = $_xmlObj->GetParamValueByName('id_acct'); CXmlProcessing::CheckAccountAccess($_acctId, $_xmlRes); $_account =& CXmlProcessing::AccountCheckAndLoad($_xmlRes, $_acctId, false, false); $_processor = new MailProcessor($_account); $_foldersNode =& $_xmlObj->XmlRoot->GetChildNodeByTagName('folders'); $_result = true; $_foldersKeys = array_keys($_foldersNode->Children); foreach ($_foldersKeys as $_key) { $_fc =& $_foldersNode->Children[$_key]; if (isset($_fc->Attributes['id'])) { $_folder = new Folder($_acctId, $_fc->Attributes['id'], $_fc->GetChildValueByTagName('full_name')); } else { $_result = false; unset($_fc); break; } $_processor->GetFolderInfo($_folder); $_processor->GetFolderMessageCount($_folder); $_childCount = USE_DB ? $_processor->DbStorage->GetFolderChildCount($_folder) : 0; if ($_account->MailProtocol != MAILPROTOCOL_POP3 && ($_folder->MessageCount > 0 || $_childCount != 0)) { $_result = false; } else { $_result &= $_account->IsDemo ? true : $_processor->DeleteFolder($_folder); if ($_result && !$_account->IsDemo) { $log =& CLog::CreateInstance(); $log->WriteEvent('User delete personal folder ("' . $_folder->FullName . '")', $_account); } } unset($_fc, $_folder); } if ($_result) { $_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_ERROR_DEL_FLD, $_xmlRes); } }