Exemple #1
0
 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;
 }
Exemple #2
0
        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);
        }
Exemple #3
0
        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);
                }
            }
        }