void CmFile::CleanFolder(CStr& dir, bool subFolder) { vecS names; int fNum = CmFile::GetNames(dir + "/*.*", names); for (int i = 0; i < fNum; i++) RmFile(dir + "/" + names[i]); vecS subFolders; int subNum = GetSubFolders(dir, subFolders); if (subFolder) for (int i = 0; i < subNum; i++) CleanFolder(dir + "/" + subFolders[i], true); }
void IMVLFile::CleanFolder(const string& dir, bool subFolder) { vector<string> names; int fNum = IMVLFile::GetNames(dir + "/*.*", names); for (int i = 0; i < fNum; i++) RmFile(dir + "/" + names[i]); vector<string> subFolders; int subNum = GetSubFolders(dir, subFolders); if (subFolder) for (int i = 0; i < subNum; i++) CleanFolder(dir + "/" + subFolders[i], true); }
bool IMAPFolder::XMLLoadSubItems(XNode *pFolderNode, int iRestoreOptions) { // Should we restore messages as well? if (!GetMessages()->XMLLoad(pFolderNode, iRestoreOptions)) return false; // Load sub folders. if (!GetSubFolders()->XMLLoad(pFolderNode, iRestoreOptions)) return false; // Restore ACL permisisons. if (IsPublicFolder()) { if (!GetPermissions()->XMLLoad(pFolderNode, iRestoreOptions)) return false; } return true; }
int IMAPFolder::GetFolderDepth(int &iRecursion) { iRecursion++; if (iRecursion > 100) { String sMessage = Formatter::Format("Excessive folder recursion. Giving up. Account: {0}, Folder: {1}", account_id_, folder_name_); ErrorManager::Instance()->ReportError(ErrorManager::Medium, 5019, "IMAPFolder::GetFolderDepth", sMessage); return 0; } int iDepth = 1; std::shared_ptr<IMAPFolders> pSubFolders = GetSubFolders(); std::vector<std::shared_ptr<IMAPFolder> > vecSubFolders = pSubFolders->GetVector(); auto iterCurFolder = vecSubFolders.begin(); int iSubDepth = 0; int iMaxSubDepth = 0; while (iterCurFolder != vecSubFolders.end()) { std::shared_ptr<IMAPFolder> pFolder = (*iterCurFolder); iSubDepth = pFolder->GetFolderDepth(iRecursion); if (iSubDepth > iMaxSubDepth) iMaxSubDepth = iSubDepth; iterCurFolder++; } iRecursion--; iDepth = iDepth + iMaxSubDepth; return iDepth; }
bool IMAPFolder::XMLStore(XNode *pParentNode, int iBackupOptions) { XNode *pNode = pParentNode->AppendChild(_T("Folder")); pNode->AppendAttr(_T("Name"), String(folder_name_)); pNode->AppendAttr(_T("Subscribed"), folder_is_subscribed_ ? _T("1") : _T("0")); pNode->AppendAttr(_T("CreateTime"), String(Time::GetTimeStampFromDateTime(create_time_))); pNode->AppendAttr(_T("CurrentUID"), StringParser::IntToString(current_uid_)); if (!GetMessages()->XMLStore(pNode, iBackupOptions)) return false; if (!GetSubFolders()->XMLStore(pNode, iBackupOptions)) return false; if (IsPublicFolder()) { if (!GetPermissions()->XMLStore(pNode, iBackupOptions)) return false; } return true; }