// 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);
 }
Beispiel #4
0
        // 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);
        }
Beispiel #6
0
        // 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);
        }
Beispiel #7
0
        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);
        }
Beispiel #9
0
        // 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);
        }