// Token: 0x06000387 RID: 903 RVA: 0x000189FC File Offset: 0x00016BFC internal static RetentionAndArchiveFlags UpdatePersonalTagBit(AdTagData tag, RetentionAndArchiveFlags flags) { if (tag == null || tag.Tag.Type != ElcFolderType.Personal) { flags = (RetentionAndArchiveFlags)FlagsMan.ClearPersonalTag((int)flags); } else { flags = (RetentionAndArchiveFlags)FlagsMan.SetPersonalTag((int)flags); } return(flags); }
// Token: 0x06000406 RID: 1030 RVA: 0x0001CAB0 File Offset: 0x0001ACB0 internal void SetDependentProperties() { this.effectiveGuidMapping = new Dictionary <Guid, Guid>(); if (this.allAdTags != null) { foreach (Guid guid in this.allAdTags.Keys) { AdTagData adTagData = this.allAdTags[guid]; this.effectiveGuidMapping[adTagData.Tag.Guid] = guid; } } }
// Token: 0x06000405 RID: 1029 RVA: 0x0001CA50 File Offset: 0x0001AC50 internal bool TryGetTag(Guid retentionId, out AdTagData adTag) { adTag = null; if (this.IsArchiveMailUser) { if (this.storeTagDictionary != null && this.storeTagDictionary.ContainsKey(retentionId)) { adTag = this.storeTagDictionary[retentionId]; return(true); } } else if (this.allAdTags.ContainsKey(retentionId)) { adTag = this.allAdTags[retentionId]; return(true); } return(false); }
// Token: 0x060003A7 RID: 935 RVA: 0x00019F98 File Offset: 0x00018198 private bool LookForNewContentSettingsInAd(Guid storeTagGuid) { bool result = false; AdTagData adTagData = this.elcUserInfo.AllAdTags[storeTagGuid]; IEnumerable <KeyValuePair <Guid, ContentSetting> > enumerable = null; if (adTagData.Tag.Type == ElcFolderType.All) { if (this.elcUserInfo.TagsInUserPolicy.ContainsKey(storeTagGuid)) { enumerable = this.elcUserInfo.TagsInUserPolicy[storeTagGuid].ContentSettings; } } else { enumerable = adTagData.ContentSettings; } if (enumerable != null) { foreach (KeyValuePair <Guid, ContentSetting> keyValuePair in enumerable) { ContentSetting contentSetting = null; if (this.elcUserInfo.StoreTagDictionary[storeTagGuid].ContentSettings.ContainsKey(keyValuePair.Key)) { contentSetting = this.elcUserInfo.StoreTagDictionary[storeTagGuid].ContentSettings[keyValuePair.Key]; } if (contentSetting == null) { ADChangeDetector.Tracer.TraceDebug <ADChangeDetector, string>((long)this.GetHashCode(), "{0}: LookForNewContentSettingsInAd: Content Settings for Tag '{1}' is null in FAI but not null in AD.", this, this.elcUserInfo.StoreTagDictionary[storeTagGuid].Tag.Name); this.elcUserInfo.StoreTagDictionary[storeTagGuid].ContentSettings[keyValuePair.Key] = keyValuePair.Value; if (keyValuePair.Value.RetentionEnabled) { result = true; } else { ADChangeDetector.Tracer.TraceDebug <ADChangeDetector, string>((long)this.GetHashCode(), "{0}: LookForNewContentSettingsInAd: Tag '{1}' is not retention enabled, recrawl skipped.", this, this.elcUserInfo.StoreTagDictionary[storeTagGuid].Tag.Name); } } } } return(result); }
// Token: 0x0600041A RID: 1050 RVA: 0x0001D460 File Offset: 0x0001B660 internal ContentSetting GetRetentionEnabledSettingForTag(Guid updatedTagGuid) { if (!this.ContainsTag(updatedTagGuid)) { ElcUserInformation.Tracer.TraceError <ElcUserTagInformation, Guid>((long)this.GetHashCode(), "{0}: Tag guid {1} does not exist in the allAdTags list. The tag must have been corrupted. Return null for content setting so the item never expires.", this, updatedTagGuid); return(null); } AdTagData tag = this.GetTag(updatedTagGuid); foreach (KeyValuePair <Guid, ContentSetting> keyValuePair in tag.ContentSettings) { if (keyValuePair.Value.RetentionEnabled) { return(keyValuePair.Value); } } ElcUserInformation.Tracer.TraceDebug <ElcUserTagInformation, Guid>((long)this.GetHashCode(), "{0}: Did not find any content setting for Tag guid {1}.", this, updatedTagGuid); return(null); }
// Token: 0x0600049A RID: 1178 RVA: 0x0002181C File Offset: 0x0001FA1C private int GetRetentionPeriod(Guid updatedTagGuid, string messageClass) { int result = 0; AdTagData adTagData = null; ContentSetting contentSetting; if (base.ElcUserTagInformation.TryGetTag(updatedTagGuid, out adTagData) && adTagData.Tag.Type != ElcFolderType.All) { PropertySynchronizerBase.Tracer.TraceDebug <ItemPropertySynchronizer>((long)this.GetHashCode(), "{0}: Non-default tag. Fetch its retention date.", this); contentSetting = base.ElcUserTagInformation.GetRetentionEnabledSettingForTag(updatedTagGuid); } else { PropertySynchronizerBase.Tracer.TraceDebug <ItemPropertySynchronizer>((long)this.GetHashCode(), "{0}: Default tag. Need to get the content settings that applies to this message class.", this); contentSetting = base.ElcUserTagInformation.GetDefaultContentSettingForMsgClass(messageClass); } if (contentSetting != null && contentSetting.RetentionEnabled) { result = (int)contentSetting.AgeLimitForRetention.Value.TotalDays; } return(result); }
internal static StoreTagData ResolveTag(IConfigurationSession session, RetentionPolicyTagIdParameter tagId) { RetentionPolicyTag retentionPolicyTag = null; IEnumerable <RetentionPolicyTag> objects = tagId.GetObjects <RetentionPolicyTag>(null, session); if (objects != null) { foreach (RetentionPolicyTag retentionPolicyTag2 in objects) { if (retentionPolicyTag != null) { throw new ManagementObjectAmbiguousException(Strings.ErrorAmbiguousRetentionPolicyTagId(tagId.ToString())); } retentionPolicyTag = retentionPolicyTag2; } } if (retentionPolicyTag == null) { throw new ManagementObjectNotFoundException(Strings.ErrorRetentionTagNotFound(tagId.ToString())); } AdTagData adTagData = AdTagReader.FetchTagContentSettings(retentionPolicyTag); return(new StoreTagData(adTagData)); }
// Token: 0x0600041B RID: 1051 RVA: 0x0001D50C File Offset: 0x0001B70C internal ContentSetting GetRetentionEnabledSettingForTag(Guid updatedTagGuid, string messageClass) { if (this.tagAndClassToPolicyMapping.ContainsKey(updatedTagGuid.ToString() + messageClass)) { return(this.tagAndClassToPolicyMapping[updatedTagGuid.ToString() + messageClass]); } ContentSetting contentSetting = null; if (this.ContainsTag(updatedTagGuid)) { AdTagData tag = this.GetTag(updatedTagGuid); if (tag.Tag.Type != ElcFolderType.All) { contentSetting = this.GetRetentionEnabledSettingForTag(updatedTagGuid); messageClass = "*"; } else { contentSetting = this.GetDefaultContentSettingForMsgClass(updatedTagGuid, messageClass); } } this.tagAndClassToPolicyMapping[updatedTagGuid.ToString() + messageClass] = contentSetting; return(contentSetting); }
// Token: 0x060003A8 RID: 936 RVA: 0x0001A140 File Offset: 0x00018340 private bool UpdateStoreContentSettings(Guid storeTagGuid) { bool result = false; Guid[] array = new Guid[this.elcUserInfo.StoreTagDictionary[storeTagGuid].ContentSettings.Keys.Count]; this.elcUserInfo.StoreTagDictionary[storeTagGuid].ContentSettings.Keys.CopyTo(array, 0); ADChangeDetector.Tracer.TraceDebug <ADChangeDetector, int>((long)this.GetHashCode(), "{0}: UpdateStoreContentSettings: Length of storeCSGuids: {1}", this, array.Length); foreach (Guid key in array) { ADChangeDetector.Tracer.TraceDebug <ADChangeDetector, string>((long)this.GetHashCode(), "{0}: UpdateStoreContentSettings: storeCSGuid being updated: {1}", this, key.ToString()); ContentSetting contentSetting = this.elcUserInfo.StoreTagDictionary[storeTagGuid].ContentSettings[key]; ADChangeDetector.Tracer.TraceDebug <ADChangeDetector, string>((long)this.GetHashCode(), "{0}: UpdateStoreContentSettings: storeContentSetting.Name: {1}", this, contentSetting.Name); ContentSetting contentSetting2 = null; AdTagData adTagData = this.elcUserInfo.AllAdTags[storeTagGuid]; ADChangeDetector.Tracer.TraceDebug <ADChangeDetector, string, ElcFolderType>((long)this.GetHashCode(), "{0}: UpdateStoreContentSettings: Retrieved tagData {1} from AllAdTags cache. Type: {2}", this, adTagData.Tag.Name, adTagData.Tag.Type); if (adTagData.Tag.Type == ElcFolderType.All) { if (this.elcUserInfo.TagsInUserPolicy.ContainsKey(storeTagGuid) && this.elcUserInfo.TagsInUserPolicy[storeTagGuid].ContentSettings.ContainsKey(key)) { contentSetting2 = this.elcUserInfo.TagsInUserPolicy[storeTagGuid].ContentSettings[key]; ADChangeDetector.Tracer.TraceDebug <ADChangeDetector, string>((long)this.GetHashCode(), "{0}: UpdateStoreContentSettings: Retrieved composite adContentSettings {1} for default tag from TagsInUserPolicy.", this, contentSetting2.Name); } } else if (adTagData.ContentSettings.ContainsKey(key)) { contentSetting2 = adTagData.ContentSettings[key]; ADChangeDetector.Tracer.TraceDebug <ADChangeDetector, string>((long)this.GetHashCode(), "{0}: UpdateStoreContentSettings: Retrieved adContentSettings {1} from AllAdTags cache.", this, contentSetting2.Name); } if (contentSetting2 == null) { ADChangeDetector.Tracer.TraceDebug <ADChangeDetector, string>((long)this.GetHashCode(), "{0}: UpdateStoreContentSettings: Content Settings for Tag '{1}' is null in the AD.", this, this.elcUserInfo.StoreTagDictionary[storeTagGuid].Tag.Name); this.elcUserInfo.StoreTagDictionary[storeTagGuid].ContentSettings.Remove(key); result = true; } else { ADChangeDetector.Tracer.TraceDebug <ADChangeDetector, string>((long)this.GetHashCode(), "{0}: UpdateStoreContentSettings: Content Settings for Tag '{1}' exists in AD.", this, this.elcUserInfo.StoreTagDictionary[storeTagGuid].Tag.Name); if (string.CompareOrdinal(contentSetting.MessageClass, contentSetting2.MessageClass) != 0) { ADChangeDetector.Tracer.TraceDebug <ADChangeDetector, string>((long)this.GetHashCode(), "{0}: UpdateStoreContentSettings: Message class for Content Settings for Tag '{1}' is different in the AD.", this, this.elcUserInfo.StoreTagDictionary[storeTagGuid].Tag.Name); contentSetting.MessageClass = contentSetting2.MessageClass; result = true; } if (contentSetting.RetentionEnabled != contentSetting2.RetentionEnabled) { ADChangeDetector.Tracer.TraceDebug <ADChangeDetector, string>((long)this.GetHashCode(), "{0}: UpdateStoreContentSettings: Retention is not enabled in AD for Content Settings for Tag '{1}'", this, this.elcUserInfo.StoreTagDictionary[storeTagGuid].Tag.Name); contentSetting.RetentionEnabled = contentSetting2.RetentionEnabled; result = true; } if (contentSetting2.RetentionEnabled && !contentSetting.AgeLimitForRetention.Equals(contentSetting2.AgeLimitForRetention)) { ADChangeDetector.Tracer.TraceDebug <ADChangeDetector, string>((long)this.GetHashCode(), "{0}: UpdateStoreContentSettings: Age limit for Content Settings for Tag '{1}' is different in the AD.", this, this.elcUserInfo.StoreTagDictionary[storeTagGuid].Tag.Name); contentSetting.AgeLimitForRetention = contentSetting2.AgeLimitForRetention; result = true; } if (contentSetting.RetentionAction != contentSetting2.RetentionAction) { ADChangeDetector.Tracer.TraceDebug <ADChangeDetector, string>((long)this.GetHashCode(), "{0}: UpdateStoreContentSettings: RetentionAction for Content Settings for Tag '{1}' is different in the AD.", this, this.elcUserInfo.StoreTagDictionary[storeTagGuid].Tag.Name); contentSetting.RetentionAction = contentSetting2.RetentionAction; result = true; } } } return(result); }