public void ApplyInheritanceFlags() { this.Flags &= ~(FolderMappingFlags.InheritedInclude | FolderMappingFlags.InheritedExclude); if ((this.Flags & FolderMappingFlags.Inherit) == FolderMappingFlags.None) { FolderMapping folderMapping = (FolderMapping)base.Parent; FolderMappingFlags folderMappingFlags = (folderMapping != null) ? folderMapping.Flags : FolderMappingFlags.None; if ((folderMappingFlags & FolderMappingFlags.InheritedInclude) != FolderMappingFlags.None) { this.Flags |= FolderMappingFlags.InheritedInclude; } if ((folderMappingFlags & FolderMappingFlags.InheritedExclude) != FolderMappingFlags.None) { this.Flags |= FolderMappingFlags.InheritedExclude; } return; } if ((this.Flags & FolderMappingFlags.Exclude) != FolderMappingFlags.None) { this.Flags |= FolderMappingFlags.InheritedExclude; return; } this.Flags |= FolderMappingFlags.InheritedInclude; }
private FolderMapping FindFolderByPath(string folderRoot, string folderPath, bool createIfNeeded, out FolderMappingFlags parsedInheritanceFlags) { WellKnownFolderType wkfType; List <string> list; FolderFilterParser.Parse(folderPath, out wkfType, out list, out parsedInheritanceFlags); FolderMapping folderMapping = null; if (base.IsPublicFolderMailbox && this.rootFolder != null && (string.Compare(folderPath, "/*") == 0 || !string.IsNullOrEmpty(folderRoot))) { folderMapping = this.rootFolder; } else { folderMapping = this.GetWellKnownFolder(wkfType); } if (folderMapping != null) { foreach (string text in list) { FolderMapping folderMapping2 = (FolderMapping)folderMapping.FindChildByName(text, base.TargetMailboxCulture); if (folderMapping2 == null) { if (!createIfNeeded) { return(null); } folderMapping2 = new FolderMapping(text, FolderType.Generic, null); folderMapping2.Parent = folderMapping; } folderMapping = folderMapping2; } return(folderMapping); } return(folderMapping); }
public static void Parse(string folderPath, out WellKnownFolderType root, out List <string> folderNames, out FolderMappingFlags inheritanceFlags) { folderNames = new List <string>(); root = WellKnownFolderType.IpmSubtree; inheritanceFlags = FolderMappingFlags.None; if (folderPath.EndsWith("/")) { folderPath = folderPath.Substring(0, folderPath.Length - "/".Length); } else if (folderPath.EndsWith("/*")) { folderPath = folderPath.Substring(0, folderPath.Length - "/*".Length); inheritanceFlags = FolderMappingFlags.Inherit; } bool flag = true; int i = 0; while (i < folderPath.Length) { string nextSubfolderName = FolderFilterParser.GetNextSubfolderName(folderPath, ref i); if (flag) { WellKnownFolderType wellKnownFolderType = WellKnownFolderType.None; if (folderPath[0] != '\\') { wellKnownFolderType = FolderFilterParser.CheckAlias(nextSubfolderName); } if (wellKnownFolderType != WellKnownFolderType.None) { root = wellKnownFolderType; } else { folderNames.Add(nextSubfolderName); } flag = false; } else { folderNames.Add(nextSubfolderName); } } }