public static StoreObjectId OptUserIn(MailboxSession session, VariantConfigurationSnapshot snapshot, IFrontEndLocator frontEndLocator) { snapshot = ClutterUtilities.LoadSnapshotIfNeeded(session, snapshot); StoreObjectId storeObjectId = null; if (!session.Mailbox.GetValueOrDefault <bool>(MailboxSchema.InferenceClutterEnabled, false) || !session.Mailbox.GetValueOrDefault <bool>(MailboxSchema.InferenceClassificationEnabled, false)) { using (MailboxSession mailboxSession = ClutterUtilities.OpenAdminSession(session)) { StoreObjectId storeObjectId2 = ClutterUtilities.SetClassificationEnabled(mailboxSession, true); ClutterUtilities.AddClutterToFavorite(session); ClutterUtilities.VerifyReadyVersionInCrumb(mailboxSession); storeObjectId = session.RefreshDefaultFolder(DefaultFolderType.Clutter); ClutterUtilities.RefreshInferenceProperties(session, true); using (NotificationManager notificationManager = new NotificationManager(session, snapshot, frontEndLocator)) { notificationManager.SendNotification(ClutterNotificationType.OptedIn, DefaultFolderType.Inbox); notificationManager.ScheduleNotification(ClutterNotificationType.FirstReminder, 5, DayOfWeek.Monday); notificationManager.CancelScheduledNotification(ClutterNotificationType.AutoEnablementNotice); notificationManager.Save(); } ExAssert.RetailAssert(mailboxSession.Mailbox.GetValueOrDefault <bool>(MailboxSchema.InferenceClutterEnabled, false), "InferenceClutterEnabled should have been set to true in admin session"); ExAssert.RetailAssert(mailboxSession.Mailbox.GetValueOrDefault <bool>(MailboxSchema.InferenceClassificationEnabled, false), "InferenceClassificationEnabled should have been set to true in admin session"); ExAssert.RetailAssert(storeObjectId2 != null, "Clutter folder id created in admin session should not be null"); ExAssert.RetailAssert(storeObjectId2.Equals(storeObjectId), "Clutter folder id created in admin session should equal the id created by refreshing the user session"); goto IL_FD; } } storeObjectId = ClutterUtilities.ValidateClutterFolder(session); IL_FD: ExAssert.RetailAssert(session.Mailbox.GetValueOrDefault <bool>(MailboxSchema.InferenceClutterEnabled, false), "InferenceClutterEnabled should have been set to true in user session"); ExAssert.RetailAssert(session.Mailbox.GetValueOrDefault <bool>(MailboxSchema.InferenceClassificationEnabled, false), "InferenceClassificationEnabled should have been set to true in user session"); ExAssert.RetailAssert(storeObjectId != null, "Clutter folder could not be created"); return(storeObjectId); }
public static UserConfiguration GetInferenceSettingsConfiguration(MailboxSession session) { StoreId defaultFolderId = session.GetDefaultFolderId(DefaultFolderType.Inbox); UserConfiguration userConfiguration = null; bool deleteOld = false; try { userConfiguration = session.UserConfigurationManager.GetFolderConfiguration("Inference.Settings", UserConfigurationTypes.Dictionary, defaultFolderId, null); } catch (ObjectNotFoundException arg) { InferenceDiagnosticsLog.Log("ClutterUtilities.GetInferenceSettingsConfiguration", string.Format("'{0}' is missing. Exception: {1}", "Inference.Settings", arg)); } catch (CorruptDataException arg2) { deleteOld = true; InferenceDiagnosticsLog.Log("ClutterUtilities.GetInferenceSettingsConfiguration", string.Format("'{0}' is corrupt. Exception: {1}", "Inference.Settings", arg2)); } if (userConfiguration == null || userConfiguration.GetDictionary() == null) { userConfiguration = ClutterUtilities.ResetInferenceSettingsConfiguration(session, deleteOld); } return(userConfiguration); }
public bool Remove(SmtpAddress smtpAddress) { ClutterUtilities.ValidateSmtpAddress(smtpAddress); int num = this.neverClutterSenders.FindIndex((SmtpAddress sender) => sender.Equals(smtpAddress)); if (num >= 0) { this.neverClutterSenders.RemoveAt(num); this.isDirty = true; return(true); } return(false); }
public void Add(SmtpAddress smtpAddress) { ClutterUtilities.ValidateSmtpAddress(smtpAddress); int num = this.neverClutterSenders.FindIndex((SmtpAddress sender) => sender.Equals(smtpAddress)); if (num >= 0) { this.neverClutterSenders.RemoveAt(num); } this.neverClutterSenders.Add(smtpAddress); this.isDirty = true; if (this.neverClutterSenders.Count > 1024) { this.neverClutterSenders.RemoveAt(0); } }
internal static StoreObjectId SetClassificationEnabled(MailboxSession adminSession, bool enabled, bool checkNameClash, out bool hadUserFolderWithNameClash) { if (enabled) { adminSession.Mailbox[MailboxSchema.InferenceClutterEnabled] = true; } adminSession.Mailbox[MailboxSchema.InferenceClassificationEnabled] = enabled; adminSession.Mailbox.Save(); ClutterUtilities.RefreshInferenceProperties(adminSession, false); if (enabled) { return(ClutterUtilities.ValidateClutterFolder(adminSession, checkNameClash, out hadUserFolderWithNameClash)); } hadUserFolderWithNameClash = false; return(null); }
public static void OptUserOut(MailboxSession session, VariantConfigurationSnapshot snapshot, IFrontEndLocator frontEndLocator) { snapshot = ClutterUtilities.LoadSnapshotIfNeeded(session, snapshot); if (session.Mailbox.GetValueOrDefault <bool>(MailboxSchema.InferenceClassificationEnabled, false)) { using (MailboxSession mailboxSession = ClutterUtilities.OpenAdminSession(session)) { ClutterUtilities.SetClassificationEnabled(mailboxSession, false); ClutterUtilities.RefreshInferenceProperties(session, true); using (NotificationManager notificationManager = new NotificationManager(session, snapshot, frontEndLocator)) { notificationManager.CancelScheduledNotifications(); notificationManager.Save(); } } } ExAssert.RetailAssert(!session.Mailbox.GetValueOrDefault <bool>(MailboxSchema.InferenceClassificationEnabled, false), "InferenceClassificationEnabled should have been set to false in user session"); }
internal static StoreObjectId ValidateClutterFolder(MailboxSession session, bool checkNameClash, out bool hadUserFolderWithNameClash) { hadUserFolderWithNameClash = false; if (checkNameClash && session.GetDefaultFolderId(DefaultFolderType.Clutter) == null) { using (Folder folder = Folder.Bind(session, DefaultFolderType.Root)) { CultureInfo formatProvider = session.MailboxOwner.PreferredCultures.DefaultIfEmpty(session.InternalPreferedCulture).First <CultureInfo>(); DefaultFolderInfo defaultFolderInfo = DefaultFolderInfo.Instance[68]; string childFolderName = defaultFolderInfo.LocalizableDisplayName.ToString(formatProvider); if (folder.FindChildFolderByName(childFolderName) != null) { hadUserFolderWithNameClash = true; } } } return(ClutterUtilities.ValidateClutterFolder(session)); }
public NotificationManager(MailboxSession session, VariantConfigurationSnapshot snapshot, IFrontEndLocator frontEndLocator, UserConfiguration inferenceSettings) { this.session = session; this.snapshot = snapshot; this.frontEndLocator = frontEndLocator; if (inferenceSettings == null || inferenceSettings.GetDictionary() == null) { this.inferenceSettings = ClutterUtilities.GetInferenceSettingsConfiguration(session); this.ownsInferenceSettings = true; } else { this.inferenceSettings = inferenceSettings; this.ownsInferenceSettings = false; } this.localTimeZone = DateTimeHelper.GetUserTimeZoneOrUtc(this.session); this.MigrateNotificationType("ClutterReady", ClutterNotificationType.Invitation); }
private static void VerifyReadyVersionInCrumb(MailboxSession adminSession) { IServerModelConfiguration currentWrapper = ServerModelConfigurationWrapper.CurrentWrapper; List <short> second = (from i in currentWrapper.GetSupportedClassificationModelVersions() select(short) i).ToList <short>(); ModelVersionBreadCrumb modelVersionBreadCrumb = ClutterUtilities.GetModelVersionBreadCrumb(adminSession); List <short> source = modelVersionBreadCrumb.GetVersions(ModelVersionBreadCrumb.VersionType.Ready).Intersect(second).ToList <short>(); if (!source.Any <short>()) { List <short> source2 = modelVersionBreadCrumb.GetVersions(ModelVersionBreadCrumb.VersionType.NotReady).Intersect(second).ToList <short>(); if (source2.Any <short>()) { short modelVersion = source2.Max <short>(); modelVersionBreadCrumb.Add(modelVersion, ModelVersionBreadCrumb.VersionType.Ready); adminSession.Mailbox[MailboxSchema.InferenceTrainedModelVersionBreadCrumb] = modelVersionBreadCrumb.Serialize(); adminSession.Mailbox.Save(); adminSession.Mailbox.Load(new PropertyDefinition[] { MailboxSchema.InferenceTrainedModelVersionBreadCrumb }); } } }
public static void OptUserOut(MailboxSession session) { ClutterUtilities.OptUserOut(session, null, null); }
public static StoreObjectId OptUserIn(MailboxSession session) { return(ClutterUtilities.OptUserIn(session, null, null)); }
public static bool TryCreate(MailboxSession mailboxSession, FolderChangeOperation operation, FolderChangeOperationFlags flags, GroupOperationResult result, StoreObjectId sourceFolderId, StoreObjectId destinationFolderId, out UserMoveActionHandler handler) { handler = null; if (operation == FolderChangeOperation.Move && result != null && result.OperationResult != OperationResult.Failed && result.ResultObjectIds != null && result.ResultObjectIds.Count > 0 && ClutterUtilities.IsClutterEnabled(mailboxSession, mailboxSession.MailboxOwner.GetConfiguration()) && sourceFolderId != null && destinationFolderId != null && !sourceFolderId.Equals(destinationFolderId)) { bool flag = mailboxSession.LogonType == LogonType.Owner || flags.HasFlag(FolderChangeOperationFlags.ClutterActionByUserOverride); handler = new UserMoveActionHandler(mailboxSession, sourceFolderId, destinationFolderId, result.ResultObjectIds, flag); return(true); } return(false); }
internal static StoreObjectId SetClassificationEnabled(MailboxSession adminSession, bool enabled) { bool flag; return(ClutterUtilities.SetClassificationEnabled(adminSession, enabled, false, out flag)); }
internal static void SetClutterEnabled(MailboxSession adminSession) { adminSession.Mailbox[MailboxSchema.InferenceClutterEnabled] = true; adminSession.Mailbox.Save(); ClutterUtilities.RefreshInferenceProperties(adminSession, false); }
public static bool IsClutterEligible(MailboxSession session, VariantConfigurationSnapshot snapshot) { snapshot = ClutterUtilities.LoadSnapshotIfNeeded(session, snapshot); return(snapshot != null && snapshot.Inference.InferenceFolderBasedClutter.Enabled); }
public bool Contains(SmtpAddress smtpAddress) { ClutterUtilities.ValidateSmtpAddress(smtpAddress); return(this.neverClutterSenders.Contains(smtpAddress)); }
public static bool IsClassificationEnabled(MailboxSession session, VariantConfigurationSnapshot snapshot) { return(ClutterUtilities.IsClutterEnabled(session, snapshot) && session.Mailbox.GetValueOrDefault <bool>(MailboxSchema.InferenceClassificationEnabled, false)); }