Example #1
0
 internal static void UpgradeElcFolder(bool userIsOnRetentionPolcyTags, MailboxSession mailboxSession, StoreId folderId, Dictionary <Guid, AdTagData> allAdTags)
 {
     using (Folder folder = Folder.Bind(mailboxSession, folderId, ProvisionedFolderReader.ElcFolderProps))
     {
         ElcMailboxHelper.UpgradeElcFolder(userIsOnRetentionPolcyTags, mailboxSession, folder, allAdTags);
         ProvisionedFolderCreator.SaveELCFolder(folder, false);
     }
 }
Example #2
0
        internal static bool RemoveElcFolder(bool userIsOnRetentionPolcyTags, MailboxSession mailboxSession, StoreId folderId, Dictionary <Guid, AdTagData> allAdTags, out UpgradeStatus status)
        {
            status = UpgradeStatus.None;
            Stack <ElcMailboxHelper.FolderNode> stack = new Stack <ElcMailboxHelper.FolderNode>(50);

            ElcMailboxHelper.FolderNode folderNode = new ElcMailboxHelper.FolderNode(folderId, null);
            stack.Push(folderNode);
            while (stack.Count > 0)
            {
                ElcMailboxHelper.FolderNode folderNode2 = stack.Peek();
                if (folderNode2.ChildCount == -1)
                {
                    using (Folder folder = Folder.Bind(mailboxSession, folderNode2.FolderId, ProvisionedFolderReader.ElcFolderProps))
                    {
                        folderNode2.ChildCount = folder.ItemCount + folder.SubfolderCount;
                        using (QueryResult queryResult = folder.FolderQuery(FolderQueryFlags.None, null, null, ProvisionedFolderReader.ElcFolderProps))
                        {
                            for (;;)
                            {
                                object[][] rows = queryResult.GetRows(100);
                                if (rows.Length <= 0)
                                {
                                    break;
                                }
                                foreach (object[] array in rows)
                                {
                                    stack.Push(new ElcMailboxHelper.FolderNode((VersionedId)array[0], folderNode2));
                                }
                            }
                        }
                        if (ElcMailboxHelper.IsElcFolder(folder))
                        {
                            status |= ElcMailboxHelper.UpgradeElcFolder(userIsOnRetentionPolcyTags, mailboxSession, folder, allAdTags);
                            ProvisionedFolderCreator.SaveELCFolder(folder, false);
                        }
                        continue;
                    }
                }
                if (folderNode2.ChildCount == 0)
                {
                    if (folderNode2.Parent != null)
                    {
                        folderNode2.Parent.ChildCount--;
                    }
                    mailboxSession.Delete(DeleteItemFlags.HardDelete, new StoreId[]
                    {
                        folderNode2.FolderId
                    });
                }
                stack.Pop();
            }
            return(folderNode.ChildCount == 0);
        }
Example #3
0
        private static bool ScrubElcMailbox(bool userIsOnRetentionPolcyTags, MailboxSession mailboxSession, Dictionary <Guid, AdTagData> allAdTags, out UpgradeStatus status)
        {
            status = UpgradeStatus.None;
            bool          result          = true;
            StoreObjectId elcRootFolderId = ElcMailboxHelper.GetElcRootFolderId(mailboxSession);

            if (elcRootFolderId != null)
            {
                result = ElcMailboxHelper.RemoveElcFolder(userIsOnRetentionPolcyTags, mailboxSession, elcRootFolderId, allAdTags, out status);
            }
            object[] array = null;
            using (Folder folder = Folder.Bind(mailboxSession, DefaultFolderType.Root, ProvisionedFolderReader.ElcFolderProps))
            {
                array = folder.GetProperties(ProvisionedFolderReader.ElcFolderProps);
                using (QueryResult queryResult = folder.FolderQuery(FolderQueryFlags.None, null, null, ProvisionedFolderReader.ElcFolderProps))
                {
                    for (;;)
                    {
                        object[][] rows = queryResult.GetRows(100);
                        if (rows.Length <= 0)
                        {
                            break;
                        }
                        foreach (object[] array2 in rows)
                        {
                            if (ElcMailboxHelper.IsElcFolder(array2))
                            {
                                ElcMailboxHelper.UpgradeElcFolder(userIsOnRetentionPolcyTags, mailboxSession, (VersionedId)array2[0], allAdTags);
                            }
                        }
                    }
                }
            }
            if (ElcMailboxHelper.IsElcFolder(array))
            {
                ElcMailboxHelper.UpgradeElcFolder(userIsOnRetentionPolcyTags, mailboxSession, (VersionedId)array[0], null);
            }
            StoreId defaultFolderId = mailboxSession.GetDefaultFolderId(DefaultFolderType.Inbox);

            mailboxSession.UserConfigurationManager.DeleteFolderConfigurations(defaultFolderId, new string[]
            {
                "ELC"
            });
            return(result);
        }