Пример #1
0
        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);
        }
Пример #2
0
        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);
            }
        }
Пример #5
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);
 }
Пример #6
0
 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");
 }
Пример #7
0
 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));
 }
Пример #8
0
 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);
 }
Пример #9
0
        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
                    });
                }
            }
        }
Пример #10
0
 public static void OptUserOut(MailboxSession session)
 {
     ClutterUtilities.OptUserOut(session, null, null);
 }
Пример #11
0
 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);
 }
Пример #13
0
        internal static StoreObjectId SetClassificationEnabled(MailboxSession adminSession, bool enabled)
        {
            bool flag;

            return(ClutterUtilities.SetClassificationEnabled(adminSession, enabled, false, out flag));
        }
Пример #14
0
 internal static void SetClutterEnabled(MailboxSession adminSession)
 {
     adminSession.Mailbox[MailboxSchema.InferenceClutterEnabled] = true;
     adminSession.Mailbox.Save();
     ClutterUtilities.RefreshInferenceProperties(adminSession, false);
 }
Пример #15
0
 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));
 }
Пример #17
0
 public static bool IsClassificationEnabled(MailboxSession session, VariantConfigurationSnapshot snapshot)
 {
     return(ClutterUtilities.IsClutterEnabled(session, snapshot) && session.Mailbox.GetValueOrDefault <bool>(MailboxSchema.InferenceClassificationEnabled, false));
 }