Exemplo n.º 1
0
        public void EmptyJunkEmail()
        {
            Folder folder = Utilities.SafeFolderBind(base.UserContext.MailboxSession, DefaultFolderType.JunkEmail, new PropertyDefinition[0]);
            NavigationTreeDirtyFlag flag = NavigationTreeDirtyFlag.None;

            if (folder != null)
            {
                using (folder)
                {
                    flag = this.CheckNavigationTreeDirtyFlag(folder, false);
                }
            }
            base.UserContext.MailboxSession.DeleteAllObjects(DeleteItemFlags.SoftDelete | DeleteItemFlags.SuppressReadReceipt, base.UserContext.JunkEmailFolderId);
            RenderingUtilities.RenderNavigationTreeDirtyFlag(this.Writer, base.UserContext, flag, (NavigationModule[])base.GetParameter("cms"));
        }
Exemplo n.º 2
0
        // Token: 0x06002FB0 RID: 12208 RVA: 0x00115220 File Offset: 0x00113420
        private NavigationTreeDirtyFlag CheckNavigationTreeDirtyFlag(Folder folder, bool includeSelf)
        {
            NavigationTreeDirtyFlag navigationTreeDirtyFlag = includeSelf ? FolderTreeNode.GetAffectedTreeFromContainerClass(folder.ClassName) : NavigationTreeDirtyFlag.None;

            object[][] array;
            using (QueryResult queryResult = folder.FolderQuery(FolderQueryFlags.DeepTraversal, null, null, new PropertyDefinition[]
            {
                FolderSchema.IsHidden,
                StoreObjectSchema.ContainerClass
            }))
            {
                array = Utilities.FetchRowsFromQueryResult(queryResult, 10000);
            }
            for (int i = 0; i < array.Length; i++)
            {
                if (!(array[i][0] is bool) || !(bool)array[i][0])
                {
                    navigationTreeDirtyFlag |= FolderTreeNode.GetAffectedTreeFromContainerClass(array[i][1] as string);
                }
            }
            return(navigationTreeDirtyFlag);
        }
Exemplo n.º 3
0
        // Token: 0x06002FA1 RID: 12193 RVA: 0x0011436C File Offset: 0x0011256C
        private void CopyOrMoveFolder(bool isCopy)
        {
            ExTraceGlobals.MailCallTracer.TraceDebug((long)this.GetHashCode(), "TreeEventHandler." + (isCopy ? "Copy" : "Move"));
            OwaStoreObjectId owaStoreObjectId  = (OwaStoreObjectId)base.GetParameter("id");
            OwaStoreObjectId owaStoreObjectId2 = (OwaStoreObjectId)base.GetParameter("destId");
            bool             isExpanded        = (bool)base.GetParameter("exp");

            if (owaStoreObjectId.IsOtherMailbox || owaStoreObjectId2.IsOtherMailbox)
            {
                throw new OwaInvalidRequestException("Cannot copy or move a shared folder");
            }
            if (Utilities.IsDefaultFolderId(base.UserContext, owaStoreObjectId, DefaultFolderType.SearchFolders) || Utilities.IsDefaultFolderId(base.UserContext, owaStoreObjectId2, DefaultFolderType.SearchFolders))
            {
                throw new OwaInvalidRequestException("Cannot Copy or Move Search Folder");
            }
            NavigationTreeDirtyFlag navigationTreeDirtyFlag = NavigationTreeDirtyFlag.None;
            string displayName;

            using (Folder folder = Utilities.GetFolder <Folder>(base.UserContext, owaStoreObjectId, new PropertyDefinition[]
            {
                FolderSchema.DisplayName,
                StoreObjectSchema.ContainerClass,
                FolderSchema.IsOutlookSearchFolder,
                FolderSchema.AdminFolderFlags,
                StoreObjectSchema.ParentEntryId
            }))
            {
                displayName = folder.DisplayName;
                string className = folder.ClassName;
                if (Utilities.IsOutlookSearchFolder(folder))
                {
                    throw new OwaInvalidRequestException("Cannot Copy or Move Search Folders");
                }
                if (!this.CanFolderHaveSubFolders(owaStoreObjectId2))
                {
                    throw new OwaInvalidRequestException("Cannot Copy or Move a folder to this destination");
                }
                if (Utilities.IsELCFolder(folder))
                {
                    throw new OwaInvalidRequestException(string.Format("Cannot {0} ELC folders.", isCopy ? "Copy" : "Move"));
                }
                if (!isCopy && ((!owaStoreObjectId.IsPublic && Utilities.IsSpecialFolderForSession(folder.Session as MailboxSession, owaStoreObjectId.StoreObjectId)) || Utilities.IsOneOfTheFolderFlagsSet(folder, new ExtendedFolderFlags[]
                {
                    ExtendedFolderFlags.RemoteHierarchy
                })))
                {
                    throw new OwaInvalidRequestException("Cannot move folders that are special or controlled remotely.");
                }
                if (base.UserContext.IsPublicFolderRootId(owaStoreObjectId.StoreObjectId))
                {
                    throw new OwaEventHandlerException("Copy/move public root folder is not supported", LocalizedStrings.GetNonEncoded(-177785786), true);
                }
                bool flag  = owaStoreObjectId.IsPublic || (bool)base.GetParameter("fSrcD");
                bool flag2 = owaStoreObjectId2.IsPublic || (bool)base.GetParameter("fDstD");
                bool flag3 = !isCopy && owaStoreObjectId.IsArchive != owaStoreObjectId2.IsArchive;
                if (((!flag || !flag2) && (!isCopy || !flag2) && (isCopy || flag || flag2)) || flag3)
                {
                    navigationTreeDirtyFlag = this.CheckNavigationTreeDirtyFlag(folder, true);
                    if (isCopy || flag)
                    {
                        navigationTreeDirtyFlag &= ~NavigationTreeDirtyFlag.Favorites;
                    }
                }
            }
            if (owaStoreObjectId2.IsArchive)
            {
                navigationTreeDirtyFlag |= NavigationTreeDirtyFlag.Favorites;
            }
            OperationResult operationResult = Utilities.CopyOrMoveFolder(base.UserContext, isCopy, owaStoreObjectId2, new OwaStoreObjectId[]
            {
                owaStoreObjectId
            }).OperationResult;

            if (operationResult == OperationResult.Failed)
            {
                throw new OwaEventHandlerException(isCopy ? "Copy returned an OperationResult.Failed" : "Move returned an OperationResult.Failed", LocalizedStrings.GetNonEncoded(-1597406995));
            }
            if (operationResult == OperationResult.PartiallySucceeded)
            {
                throw new OwaEventHandlerException((isCopy ? "Copy" : "Move") + " returned an OperationResult.PartiallySucceeded", LocalizedStrings.GetNonEncoded(2109230231));
            }
            bool flag4 = true;

            if (!isCopy && owaStoreObjectId.IsPublic == owaStoreObjectId2.IsPublic && owaStoreObjectId.IsArchive == owaStoreObjectId2.IsArchive && StringComparer.InvariantCultureIgnoreCase.Equals(owaStoreObjectId.MailboxOwnerLegacyDN, owaStoreObjectId2.MailboxOwnerLegacyDN))
            {
                flag4 = false;
            }
            OwaStoreObjectId newFolderId;

            if (flag4)
            {
                newFolderId = this.GetSubFolderIdByName(owaStoreObjectId2, displayName);
            }
            else
            {
                newFolderId = owaStoreObjectId;
            }
            this.RenderFolderTreeChangedNode(owaStoreObjectId2, newFolderId, isExpanded, owaStoreObjectId2.IsArchive, (FolderTreeRenderType)base.GetParameter("rdt"));
            RenderingUtilities.RenderNavigationTreeDirtyFlag(this.Writer, base.UserContext, navigationTreeDirtyFlag, (NavigationModule[])base.GetParameter("cms"));
        }
Exemplo n.º 4
0
        public void Delete()
        {
            OwaStoreObjectId owaStoreObjectId = (OwaStoreObjectId)base.GetParameter("id");

            if (owaStoreObjectId.IsOtherMailbox || owaStoreObjectId.IsGSCalendar)
            {
                throw new OwaInvalidRequestException("Cannot perform delete on shared folder");
            }
            ExTraceGlobals.MailCallTracer.TraceDebug((long)this.GetHashCode(), "TreeEventHandler.Delete");
            if (Utilities.IsDefaultFolderId(base.UserContext, owaStoreObjectId, DefaultFolderType.SearchFolders))
            {
                throw new OwaInvalidRequestException("Cannot Delete Search Folders");
            }
            bool flag  = (bool)base.GetParameter("fSrcD");
            bool flag2 = flag || owaStoreObjectId.IsPublic || (bool)base.GetParameter("pd");
            NavigationTreeDirtyFlag flag3 = NavigationTreeDirtyFlag.None;

            using (Folder folder = Utilities.GetFolder <Folder>(base.UserContext, owaStoreObjectId, new PropertyDefinition[]
            {
                StoreObjectSchema.ContainerClass,
                FolderSchema.IsOutlookSearchFolder,
                FolderSchema.AdminFolderFlags,
                StoreObjectSchema.ParentEntryId
            }))
            {
                string className = folder.ClassName;
                if (Utilities.IsOutlookSearchFolder(folder))
                {
                    throw new OwaInvalidRequestException("Cannot Delete Search Folders");
                }
                if (Utilities.IsELCFolder(folder))
                {
                    throw new OwaInvalidRequestException("Cannot Delete ELC folders.");
                }
                if (Utilities.IsOneOfTheFolderFlagsSet(folder, new ExtendedFolderFlags[]
                {
                    ExtendedFolderFlags.RemoteHierarchy
                }))
                {
                    throw new OwaInvalidRequestException("Cannot delete a folder that is controlled remotely.");
                }
                if (!flag2 || (!owaStoreObjectId.IsPublic && !flag))
                {
                    flag3 = this.CheckNavigationTreeDirtyFlag(folder, true);
                }
            }
            OperationResult operationResult = Utilities.Delete(base.UserContext, flag2, new OwaStoreObjectId[]
            {
                owaStoreObjectId
            }).OperationResult;

            if (operationResult == OperationResult.Failed)
            {
                Strings.IDs localizedId = flag2 ? -1691273193 : 1041829989;
                throw new OwaEventHandlerException("Delete returned an OperationResult.Failed", LocalizedStrings.GetNonEncoded(localizedId));
            }
            if (operationResult == OperationResult.PartiallySucceeded)
            {
                throw new OwaAccessDeniedException(LocalizedStrings.GetNonEncoded(995407892));
            }
            if (!flag2)
            {
                this.RenderFolderTreeChangedNode(base.UserContext.GetDeletedItemsFolderId((MailboxSession)owaStoreObjectId.GetSession(base.UserContext)), owaStoreObjectId, false, false, FolderTreeRenderType.None);
            }
            RenderingUtilities.RenderNavigationTreeDirtyFlag(this.Writer, base.UserContext, flag3, (NavigationModule[])base.GetParameter("cms"));
        }
Exemplo n.º 5
0
        public void New()
        {
            ExTraceGlobals.MailCallTracer.TraceDebug((long)this.GetHashCode(), "TreeEventHandler.New");
            OwaStoreObjectId owaStoreObjectId = (OwaStoreObjectId)base.GetParameter("destId");

            if (owaStoreObjectId.IsOtherMailbox)
            {
                throw new OwaInvalidRequestException("Cannot add new folder underneath a shared folder");
            }
            string text       = (string)base.GetParameter("fC");
            string text2      = (string)base.GetParameter("fN");
            bool   isExpanded = (bool)base.GetParameter("exp");

            if (Utilities.IsDefaultFolderId(base.UserContext, owaStoreObjectId, DefaultFolderType.SearchFolders))
            {
                throw new OwaInvalidRequestException("Cannot Create new Search Folder through OWA");
            }
            if (Utilities.IsELCRootFolder(owaStoreObjectId, base.UserContext))
            {
                throw new OwaInvalidRequestException("Cannot create new folders under the root ELC folder.");
            }
            text2 = text2.Trim();
            if (text2.Length == 0)
            {
                throw new OwaEventHandlerException("User did not provide name for new folder", LocalizedStrings.GetNonEncoded(-41080803), true);
            }
            StoreObjectType objectType = owaStoreObjectId.StoreObjectId.ObjectType;

            if (!this.CanFolderHaveSubFolders(owaStoreObjectId))
            {
                throw new OwaInvalidRequestException("Cannot Create new Search Folder through OWA");
            }
            using (Folder folder = Utilities.CreateSubFolder(owaStoreObjectId, objectType, text2, base.UserContext))
            {
                folder.ClassName = text;
                try
                {
                    folder.Save();
                }
                catch (ObjectExistedException)
                {
                    throw;
                }
                catch (StoragePermanentException innerException)
                {
                    throw new OwaAccessDeniedException(LocalizedStrings.GetNonEncoded(995407892), innerException);
                }
                folder.Load();
                OwaStoreObjectId newFolderId = OwaStoreObjectId.CreateFromStoreObject(folder);
                this.RenderFolderTreeChangedNode(owaStoreObjectId, newFolderId, isExpanded, owaStoreObjectId.IsArchive, (FolderTreeRenderType)base.GetParameter("rdt"));
                NavigationTreeDirtyFlag navigationTreeDirtyFlag = FolderTreeNode.GetAffectedTreeFromContainerClass(text);
                if (owaStoreObjectId.IsArchive)
                {
                    navigationTreeDirtyFlag |= NavigationTreeDirtyFlag.Favorites;
                }
                if (navigationTreeDirtyFlag != NavigationTreeDirtyFlag.Favorites || owaStoreObjectId.IsArchive)
                {
                    RenderingUtilities.RenderNavigationTreeDirtyFlag(this.Writer, base.UserContext, navigationTreeDirtyFlag, (NavigationModule[])base.GetParameter("cms"));
                }
            }
        }
Exemplo n.º 6
0
        public void Remove()
        {
            base.ThrowIfCannotActAsOwner();
            StoreObjectId nodeId = (StoreObjectId)base.GetParameter("srcNId");
            NavigationNodeGroupSection navigationNodeGroupSection = (NavigationNodeGroupSection)base.GetParameter("GS");
            NavigationNodeCollection   navigationNodeCollection   = NavigationNodeCollection.TryCreateNavigationNodeCollection(base.UserContext, base.UserContext.MailboxSession, navigationNodeGroupSection);
            List <OwaStoreObjectId>    list           = new List <OwaStoreObjectId>();
            NavigationNode             navigationNode = navigationNodeCollection.FindNavigationNodeByNodeId(nodeId);

            if (navigationNode == null)
            {
                base.RenderPartialFailure(-289549140, OwaEventHandlerErrorCode.NotSet);
            }
            else
            {
                OperationResult operationResult = (OperationResult)0;
                if (navigationNodeGroupSection != NavigationNodeGroupSection.First)
                {
                    List <NavigationNodeFolder> list2 = new List <NavigationNodeFolder>();
                    if (navigationNode is NavigationNodeFolder)
                    {
                        list2.Add(navigationNode as NavigationNodeFolder);
                    }
                    else if (navigationNode is NavigationNodeGroup)
                    {
                        NavigationNodeGroup navigationNodeGroup = navigationNode as NavigationNodeGroup;
                        foreach (NavigationNodeFolder item in navigationNodeGroup.Children)
                        {
                            list2.Add(item);
                        }
                    }
                    foreach (NavigationNodeFolder navigationNodeFolder in list2)
                    {
                        if (navigationNodeFolder.IsValid)
                        {
                            OwaStoreObjectId owaStoreObjectId = OwaStoreObjectId.CreateFromNavigationNodeFolder(base.UserContext, navigationNodeFolder);
                            MailboxSession   mailboxSession   = owaStoreObjectId.IsArchive ? ((MailboxSession)owaStoreObjectId.GetSession(base.UserContext)) : base.UserContext.MailboxSession;
                            if (navigationNodeFolder.IsFolderInSpecificMailboxSession(mailboxSession))
                            {
                                if (Utilities.IsSpecialFolderForSession(mailboxSession, navigationNodeFolder.FolderId))
                                {
                                    throw new OwaEventHandlerException("Cannot delete default folders.", LocalizedStrings.GetNonEncoded(-1164567320), true);
                                }
                                if (operationResult == (OperationResult)0)
                                {
                                    operationResult = OperationResult.Succeeded;
                                }
                                AggregateOperationResult aggregateOperationResult = mailboxSession.Delete(DeleteItemFlags.MoveToDeletedItems, new StoreId[]
                                {
                                    navigationNodeFolder.FolderId
                                });
                                if (aggregateOperationResult.OperationResult == OperationResult.Succeeded)
                                {
                                    list.Add(OwaStoreObjectId.CreateFromNavigationNodeFolder(base.UserContext, navigationNodeFolder));
                                }
                                else
                                {
                                    operationResult = OperationResult.PartiallySucceeded;
                                }
                            }
                        }
                    }
                    if (operationResult != (OperationResult)0 && list.Count == 0)
                    {
                        operationResult = OperationResult.Failed;
                    }
                    if (operationResult == OperationResult.Failed)
                    {
                        base.RenderPartialFailure(1041829989, OwaEventHandlerErrorCode.NotSet);
                    }
                    else if (operationResult == OperationResult.PartiallySucceeded)
                    {
                        base.RenderPartialFailure(995407892, OwaEventHandlerErrorCode.NotSet);
                    }
                }
                else
                {
                    NavigationNodeFolder navigationNodeFolder2 = navigationNode as NavigationNodeFolder;
                    if (navigationNodeFolder2 != null && navigationNodeFolder2.IsFilteredView)
                    {
                        OwaStoreObjectId owaStoreObjectId2 = OwaStoreObjectId.CreateFromNavigationNodeFolder(base.UserContext, navigationNodeFolder2);
                        using (SearchFolder searchFolder = SearchFolder.Bind(owaStoreObjectId2.GetSession(base.UserContext), owaStoreObjectId2.StoreObjectId, FolderList.FolderTreeQueryProperties))
                        {
                            searchFolder[FolderSchema.SearchFolderAllowAgeout] = true;
                            searchFolder.DisplayName = Utilities.GetRandomNameForTempFilteredView(base.UserContext);
                            searchFolder.Save();
                        }
                    }
                }
                if (operationResult == (OperationResult)0 || operationResult == OperationResult.Succeeded)
                {
                    if (navigationNodeCollection.RemoveFolderOrGroupByNodeId(nodeId) != null)
                    {
                        navigationNodeCollection.Save(base.UserContext.MailboxSession);
                    }
                }
                else if (operationResult == OperationResult.PartiallySucceeded)
                {
                    foreach (OwaStoreObjectId owaStoreObjectId3 in list)
                    {
                        navigationNodeCollection.RemoveFolderByLegacyDNandId(owaStoreObjectId3.MailboxOwnerLegacyDN ?? base.UserContext.MailboxOwnerLegacyDN, owaStoreObjectId3.StoreObjectId);
                    }
                    navigationNodeCollection.Save(base.UserContext.MailboxSession);
                }
            }
            NavigationTreeDirtyFlag navigationTreeDirtyFlag = NavigationTreeDirtyFlag.None;

            if (navigationNodeGroupSection == NavigationNodeGroupSection.First)
            {
                navigationTreeDirtyFlag = NavigationTreeDirtyFlag.Favorites;
            }
            else
            {
                if (list.Count > 0)
                {
                    List <FolderTreeNode> list3 = FolderTreeNode.CreateDeletedNodesWithDirtyCheck(base.UserContext, list, out navigationTreeDirtyFlag);
                    this.Writer.Write("<div id=tn>");
                    foreach (FolderTreeNode folderTreeNode in list3)
                    {
                        folderTreeNode.RenderUndecoratedNode(this.Writer);
                    }
                    this.Writer.Write("</div>");
                }
                switch (navigationNodeGroupSection)
                {
                case NavigationNodeGroupSection.Calendar:
                    navigationTreeDirtyFlag |= NavigationTreeDirtyFlag.Calendar;
                    break;

                case NavigationNodeGroupSection.Contacts:
                    navigationTreeDirtyFlag |= NavigationTreeDirtyFlag.Contact;
                    break;

                case NavigationNodeGroupSection.Tasks:
                    navigationTreeDirtyFlag |= NavigationTreeDirtyFlag.Task;
                    break;
                }
            }
            RenderingUtilities.RenderNavigationTreeDirtyFlag(this.Writer, base.UserContext, navigationTreeDirtyFlag, (NavigationModule[])base.GetParameter("cms"));
        }