private static MailboxFolderData GetFolderData(object[] propValues, string mailbox)
        {
            MailboxFolderData mailboxFolderData = null;

            if (!(propValues[3] is PropertyError) || !(propValues[5] is PropertyError))
            {
                ELCFolderFlags flags = ELCFolderFlags.None;
                if (!(propValues[5] is PropertyError) && propValues[5] is int)
                {
                    flags = (ELCFolderFlags)propValues[5];
                }
                mailboxFolderData       = new MailboxFolderData();
                mailboxFolderData.Flags = flags;
                if (propValues[3] is string)
                {
                    string g = (string)propValues[3];
                    Guid   elcFolderGuid;
                    if (!GuidHelper.TryParseGuid(g, out elcFolderGuid))
                    {
                        ProvisionedFolderReader.Tracer.TraceDebug <string, string>(0L, "'{0}': has a badly formatted ELC PolicyId string on provisioned folder '{1}'", mailbox, mailboxFolderData.Name);
                    }
                    else
                    {
                        mailboxFolderData.ElcFolderGuid = elcFolderGuid;
                    }
                }
                if (!(propValues[4] is PropertyError) && propValues[4] is string)
                {
                    mailboxFolderData.Comment = (string)propValues[4];
                }
                if (!(propValues[0] is PropertyError) && propValues[0] is VersionedId)
                {
                    mailboxFolderData.Id = (VersionedId)propValues[0];
                }
                if (!(propValues[1] is PropertyError) && propValues[1] is StoreObjectId)
                {
                    mailboxFolderData.ParentId = (StoreObjectId)propValues[1];
                }
                if (!(propValues[2] is PropertyError) && propValues[2] is string)
                {
                    mailboxFolderData.Name = (string)propValues[2];
                }
                if (!(propValues[6] is PropertyError) && propValues[6] is int)
                {
                    mailboxFolderData.FolderQuota = (int)propValues[6];
                }
                if (!(propValues[7] is PropertyError) && propValues[7] is string)
                {
                    mailboxFolderData.Url = (string)propValues[7];
                }
                if (!(propValues[8] is PropertyError) && propValues[8] is string)
                {
                    mailboxFolderData.LocalizedName = (string)propValues[8];
                }
            }
            return(mailboxFolderData);
        }
 internal MatchAdminFolderFlags(ELCFolderFlags adminFolderFlags)
 {
     this.adminFolderFlags = adminFolderFlags;
 }
Beispiel #3
0
        internal static string CreateOneELCFolderInMailbox(AdFolderData adFolderInfo, MailboxSession itemStore, Folder elcRootFolder)
        {
            Folder    folder  = null;
            ELCFolder folder2 = adFolderInfo.Folder;
            string    text    = itemStore.MailboxOwner.MailboxInfo.PrimarySmtpAddress.ToString();
            string    text2   = (folder2.FolderType == ElcFolderType.ManagedCustomFolder) ? folder2.FolderName : folder2.FolderType.ToString();
            string    result;

            try
            {
                if (folder2.FolderType != ElcFolderType.ManagedCustomFolder)
                {
                    ProvisionedFolderCreator.Tracer.TraceDebug <string, string>(0L, "Need to provision a default folder '{0}' in mailbox '{1}'.", text2, text);
                    try
                    {
                        folder = ElcMailboxHelper.GetDefaultFolder(itemStore, folder2);
                    }
                    catch (ObjectNotFoundException innerException)
                    {
                        ProvisionedFolderCreator.Tracer.TraceDebug <string, string>(0L, "Default folder '{0}' does not exist in mailbox '{1}'.", text2, text);
                        throw new ELCDefaultFolderNotFoundException(text2, text, innerException);
                    }
                    ProvisionedFolderCreator.Tracer.TraceDebug <string, string>(0L, "Default folder '{0}' exists in mailbox '{1}' and will be provisioned.", text2, text);
                    result = '/' + ProvisionedFolderCreator.NormalizeFolderName(text2);
                }
                else
                {
                    ProvisionedFolderCreator.Tracer.TraceDebug <string, string>(0L, "Creating organizational folder '{0}' in mailbox '{1}'.", text2, text);
                    folder = Folder.Create(itemStore, elcRootFolder.Id, StoreObjectType.Folder, folder2.FolderName, CreateMode.OpenIfExists);
                    ProvisionedFolderCreator.SaveELCFolder(folder, true);
                    folder.Load();
                    result = string.Concat(new object[]
                    {
                        '/',
                        ProvisionedFolderCreator.NormalizeFolderName(elcRootFolder.DisplayName),
                        '/',
                        ProvisionedFolderCreator.NormalizeFolderName(text2)
                    });
                }
                ELCFolderFlags elcfolderFlags = ELCFolderFlags.None;
                ulong          num            = folder2.StorageQuota.IsUnlimited ? 0UL : folder2.StorageQuota.Value.ToKB();
                if (folder2.FolderType == ElcFolderType.ManagedCustomFolder)
                {
                    elcfolderFlags = ELCFolderFlags.Provisioned;
                    if (adFolderInfo.LinkedToTemplate)
                    {
                        elcfolderFlags |= ELCFolderFlags.Protected;
                    }
                    if (folder.ItemCount == 0 && !folder.HasSubfolders)
                    {
                        elcfolderFlags |= ELCFolderFlags.TrackFolderSize;
                    }
                    if (num > 0UL)
                    {
                        elcfolderFlags |= ELCFolderFlags.Quota;
                    }
                }
                if (folder2.MustDisplayCommentEnabled)
                {
                    elcfolderFlags |= ELCFolderFlags.MustDisplayComment;
                }
                ElcMailboxHelper.SetPropAndTrace(folder, FolderSchema.AdminFolderFlags, elcfolderFlags);
                ElcMailboxHelper.SetPropAndTrace(folder, FolderSchema.ELCPolicyIds, folder2.Guid.ToString());
                string localizedFolderComment = folder2.GetLocalizedFolderComment(itemStore.MailboxOwner.PreferredCultures);
                if (!string.IsNullOrEmpty(localizedFolderComment))
                {
                    ElcMailboxHelper.SetPropAndTrace(folder, FolderSchema.ELCFolderComment, localizedFolderComment);
                }
                else
                {
                    ElcMailboxHelper.SetPropAndTrace(folder, FolderSchema.ELCFolderComment, Globals.BlankComment);
                }
                if (folder2.FolderType == ElcFolderType.ManagedCustomFolder && num > 0UL)
                {
                    ElcMailboxHelper.SetPropAndTrace(folder, FolderSchema.FolderQuota, (int)num);
                }
                ProvisionedFolderCreator.SaveELCFolder(folder, true);
                if (folder2.FolderType == ElcFolderType.All)
                {
                    ProvisionedFolderCreator.CreateAllOthersConfigMsg(adFolderInfo.Folder, itemStore);
                }
                ProvisionedFolderCreator.Tracer.TraceDebug <string, string>(0L, "Successfully created/provisioned folder '{0}' in mailbox '{1}'.", text2, text);
            }
            finally
            {
                if (folder != null)
                {
                    folder.Dispose();
                    folder = null;
                }
            }
            return(result);
        }
            // Token: 0x06000EF7 RID: 3831 RVA: 0x00059600 File Offset: 0x00057800
            public FolderRec(IPublicFolderSession publicFolderSession, object[] properties)
            {
                for (int i = 0; i < PublicFolderItemProcessor.FolderRec.PropertiesToLoad.Length; i++)
                {
                    if (!(properties[i] is PropertyError))
                    {
                        switch (i)
                        {
                        case 0:
                        {
                            VersionedId versionedId = properties[i] as VersionedId;
                            if (versionedId != null)
                            {
                                this.FolderId = versionedId.ObjectId;
                            }
                            break;
                        }

                        case 1:
                        {
                            string[] array = properties[i] as string[];
                            if (array != null && array.Length > 0)
                            {
                                GuidHelper.TryParseGuid(array[0], out this.ContentMailboxGuid);
                            }
                            break;
                        }

                        case 3:
                            this.OverallAgeLimit = (properties[i] as int?);
                            break;

                        case 4:
                            this.RetentionAgeLimit = (properties[i] as int?);
                            break;

                        case 5:
                        {
                            byte[] array2 = properties[i] as byte[];
                            if (array2 != null)
                            {
                                if (array2.Length == 22)
                                {
                                    this.DumpsterId = publicFolderSession.IdConverter.CreateFolderId(publicFolderSession.IdConverter.GetIdFromLongTermId(array2));
                                }
                                if (array2.Length == 46)
                                {
                                    this.DumpsterId = StoreObjectId.FromProviderSpecificId(array2, StoreObjectType.Folder);
                                }
                            }
                            break;
                        }

                        case 6:
                            this.ItemCount = (properties[i] as int?);
                            break;

                        case 7:
                            this.AssociatedItemCount = (properties[i] as int?);
                            break;

                        case 8:
                            this.SubfolderCount = (properties[i] as int?);
                            break;

                        case 9:
                        {
                            byte[] array3 = properties[i] as byte[];
                            if (array3 != null && array3.Length > 0)
                            {
                                this.ParentId = StoreObjectId.FromProviderSpecificId(array3, StoreObjectType.Folder);
                            }
                            break;
                        }

                        case 10:
                            this.LastModifiedTime = (properties[i] as ExDateTime?);
                            break;

                        case 11:
                        {
                            ELCFolderFlags elcfolderFlags = (ELCFolderFlags)properties[i];
                            this.IsDumpsterFolder = ((elcfolderFlags & ELCFolderFlags.DumpsterFolder) != ELCFolderFlags.None);
                            break;
                        }

                        case 12:
                            this.LastMovedTimeStamp = (properties[i] as ExDateTime?);
                            break;
                        }
                    }
                }
            }