123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199 |
- #ifndef ARCHIVECONTROLIMPL_H_INCLUDED
- #define ARCHIVECONTROLIMPL_H_INCLUDED
- #include <set>
- #include <kopano/zcdefs.h>
- #include "operations/operations_fwd.h"
- #include "helpers/ArchiveHelper.h"
- namespace KC {
- class ECConfig;
- class ECLogger;
- class ECArchiverLogger;
- class ArchiveControlImpl _kc_final : public ArchiveControl {
- public:
- static HRESULT Create(ArchiverSessionPtr ptrSession, ECConfig *lpConfig, ECLogger *lpLogger, bool bForceCleanup, ArchiveControlPtr *lpptrArchiveControl);
- eResult ArchiveAll(bool bLocalOnly, bool bAutoAttach, unsigned int ulFlags) _kc_override;
- eResult Archive(const tstring &strUser, bool bAutoAttach, unsigned int ulFlags) _kc_override;
- eResult CleanupAll(bool bLocalOnly) _kc_override;
- eResult Cleanup(const tstring &strUser) _kc_override;
- ~ArchiveControlImpl();
- private:
- class ReferenceLessCompare {
- public:
- typedef std::pair<entryid_t, entryid_t> value_type;
- bool operator()(const value_type &lhs, const value_type &rhs) const
- {
- return lhs.second < rhs.second;
- }
- };
-
- typedef HRESULT(ArchiveControlImpl::*fnProcess_t)(const tstring&);
- typedef std::set<entryid_t> EntryIDSet;
- typedef std::set<std::pair<entryid_t, entryid_t>, ReferenceLessCompare> ReferenceSet;
- ArchiveControlImpl(ArchiverSessionPtr ptrSession, ECConfig *lpConfig, ECLogger *lpLogger, bool bForceCleanup);
- HRESULT Init();
- HRESULT DoArchive(const tstring& strUser);
- HRESULT DoCleanup(const tstring& strUser);
-
- HRESULT ProcessFolder(MAPIFolderPtr &ptrFolder, operations::ArchiveOperationPtr ptrArchiveOperation);
- HRESULT ProcessAll(bool bLocalOnly, fnProcess_t fnProcess);
- HRESULT PurgeArchives(const ObjectEntryList &lstArchives);
- HRESULT PurgeArchiveFolder(MsgStorePtr &ptrArchive, const entryid_t &folderEntryID, const LPSRestriction lpRestriction);
- HRESULT CleanupArchive(const SObjectEntry &archiveEntry, IMsgStore* lpUserStore, LPSRestriction lpRestriction);
- HRESULT GetAllReferences(LPMDB lpUserStore, LPGUID lpArchiveGuid, EntryIDSet *lpMsgReferences);
- HRESULT AppendAllReferences(LPMAPIFOLDER lpRoot, LPGUID lpArchiveGuid, EntryIDSet *lpMsgReferences);
- HRESULT GetAllEntries(helpers::ArchiveHelperPtr, LPMAPIFOLDER arc, LPSRestriction, EntryIDSet *entries);
- HRESULT AppendAllEntries(LPMAPIFOLDER lpArchive, LPSRestriction lpRestriction, EntryIDSet *lpMsgEntries);
- HRESULT CleanupHierarchy(helpers::ArchiveHelperPtr, LPMAPIFOLDER arc_root, LPMDB user_store);
- HRESULT MoveAndDetachMessages(helpers::ArchiveHelperPtr, LPMAPIFOLDER arc_folder, const EntryIDSet &);
- HRESULT MoveAndDetachFolder(helpers::ArchiveHelperPtr, LPMAPIFOLDER arc_folder);
- HRESULT DeleteMessages(LPMAPIFOLDER lpArchiveFolder, const EntryIDSet &setEIDs);
- HRESULT DeleteFolder(LPMAPIFOLDER lpArchiveFolder);
-
- HRESULT AppendFolderEntries(LPMAPIFOLDER lpBase, EntryIDSet *lpEntries);
-
- HRESULT CheckSafeCleanupSettings();
- HRESULT purgesoftdeletedmessages(const tstring& strUser);
- tstring getfoldername(LPMAPIFOLDER folder);
- HRESULT purgesoftdeleteditems(LPMAPIFOLDER folder, const tstring& strUser);
-
- enum eCleanupAction { caDelete, caStore, caNone };
- ArchiverSessionPtr m_ptrSession;
- ECConfig *m_lpConfig = nullptr;
- ECArchiverLogger *m_lpLogger = nullptr;
- FILETIME m_ftCurrent = {0, 0};
- bool m_bArchiveEnable = true;
- int m_ulArchiveAfter = 30;
- bool m_bDeleteEnable = false;
- bool m_bDeleteUnread = false;
- int m_ulDeleteAfter = 0;
- bool m_bStubEnable = false;
- bool m_bStubUnread = false;
- int m_ulStubAfter = 0;
- bool m_bPurgeEnable = false;
- int m_ulPurgeAfter = 2555;
- eCleanupAction m_cleanupAction;
- bool m_bCleanupFollowPurgeAfter = false;
- bool m_bForceCleanup;
-
- PROPMAP_DECL()
- PROPMAP_DEF_NAMED_ID(ARCHIVE_STORE_ENTRYIDS)
- PROPMAP_DEF_NAMED_ID(ARCHIVE_ITEM_ENTRYIDS)
- PROPMAP_DEF_NAMED_ID(ORIGINAL_SOURCEKEY)
- PROPMAP_DEF_NAMED_ID(STUBBED)
- PROPMAP_DEF_NAMED_ID(DIRTY)
- };
- }
- #endif
|