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; }
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; } } } }