public void Save() { if (this.isDirty) { this.neverClutterRule = ClutterOverrideManager.PrepareRule(this.neverClutterRule, this.neverClutterSenders, this.markNeverClutterTag); this.neverClutterRule = ClutterOverrideManager.SaveNeverClutterRule(this, this.session, this.neverClutterRule); this.isDirty = false; } }
private void Load() { this.neverClutterRule = ClutterOverrideManager.LoadNeverClutterRule(this, this.session); this.neverClutterSenders = ClutterOverrideManager.LoadNeverClutterList(this.neverClutterRule); this.markNeverClutterTag = ClutterOverrideManager.GetNeverClutterTag(this, this.session); if (this.neverClutterRule != null && (this.neverClutterRule.StateFlags.HasFlag(RuleStateFlags.Error) || !this.neverClutterRule.StateFlags.HasFlag(RuleStateFlags.Enabled))) { this.isDirty = true; return; } this.isDirty = false; }
internal static Rule PrepareRule(Rule rule, IEnumerable <SmtpAddress> neverClutterSenders, PropTag neverClutterTag) { if (rule == null) { rule = new Rule(); if (neverClutterSenders.Any <SmtpAddress>()) { rule.Operation = RuleOperation.Create; } else { rule.Operation = RuleOperation.NoOp; } } else if (neverClutterSenders.Any <SmtpAddress>()) { rule.Operation = RuleOperation.Update; } else { rule.Operation = RuleOperation.Delete; } rule.ExecutionSequence = 0; rule.Level = 0; rule.StateFlags = RuleStateFlags.Enabled; rule.UserFlags = 0U; rule.ExtraProperties = null; rule.IsExtended = true; rule.Name = "Never Clutter Rule"; rule.Provider = "NeverClutterOverrideRule"; Rule.ProviderData providerData; providerData.Version = 1U; providerData.RuleSearchKey = 0U; providerData.TimeStamp = ExDateTime.UtcNow.ToFileTimeUtc(); rule.ProviderData = providerData.ToByteArray(); rule.Actions = ClutterOverrideManager.BuildRuleActions(neverClutterTag); rule.Condition = ClutterOverrideManager.BuildRuleCondition(neverClutterSenders); return(rule); }
internal static Restriction BuildRuleCondition(IEnumerable <SmtpAddress> neverClutterSenders) { return(Restriction.Or((from address in neverClutterSenders select ClutterOverrideManager.BuildSenderCondition(address)).ToArray <Restriction>())); }