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")); }
// 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); }
// 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")); }
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")); }
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")); } } }
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")); }