/// <summary> /// Returns Global Attributes from cache. If they are not already in cache, they /// will be read and added to cache /// </summary> /// <returns></returns> public static GlobalAttributesCache Read() { string cacheKey = GlobalAttributesCache.CacheKey(); ObjectCache cache = MemoryCache.Default; GlobalAttributesCache globalAttributes = cache[cacheKey] as GlobalAttributesCache; if (globalAttributes != null) { return(globalAttributes); } else { globalAttributes = new GlobalAttributesCache(); globalAttributes.Attributes = new List <AttributeCache>(); globalAttributes.AttributeValues = new Dictionary <string, KeyValuePair <string, string> >(); var attributeService = new Rock.Model.AttributeService(); var attributeValueService = new Rock.Model.AttributeValueService(); foreach (Rock.Model.Attribute attribute in attributeService.GetGlobalAttributes()) { var attributeCache = AttributeCache.Read(attribute); globalAttributes.Attributes.Add(attributeCache); var attributeValue = attributeValueService.GetByAttributeIdAndEntityId(attribute.Id, null).FirstOrDefault(); string value = (attributeValue != null && !string.IsNullOrEmpty(attributeValue.Value)) ? attributeValue.Value : attributeCache.DefaultValue; globalAttributes.AttributeValues.Add(attributeCache.Key, new KeyValuePair <string, string>(attributeCache.Name, value)); } cache.Set(cacheKey, globalAttributes, new CacheItemPolicy()); return(globalAttributes); } }
/// <summary> /// Returns Global Attributes from cache. If they are not already in cache, they /// will be read and added to cache /// </summary> /// <returns></returns> public static GlobalAttributesCache Read( RockContext rockContext = null ) { string cacheKey = GlobalAttributesCache.CacheKey(); ObjectCache cache = MemoryCache.Default; GlobalAttributesCache globalAttributes = cache[cacheKey] as GlobalAttributesCache; if ( globalAttributes != null ) { return globalAttributes; } else { globalAttributes = new GlobalAttributesCache(); globalAttributes.Attributes = new List<AttributeCache>(); globalAttributes.AttributeValues = new Dictionary<string, KeyValuePair<string, string>>(); rockContext = rockContext ?? new RockContext(); var attributeService = new Rock.Model.AttributeService( rockContext ); var attributeValueService = new Rock.Model.AttributeValueService( rockContext ); foreach ( Rock.Model.Attribute attribute in attributeService.GetGlobalAttributes() ) { var attributeCache = AttributeCache.Read( attribute ); globalAttributes.Attributes.Add( attributeCache ); var attributeValue = attributeValueService.GetByAttributeIdAndEntityId( attribute.Id, null ).FirstOrDefault(); string value = ( attributeValue != null && !string.IsNullOrEmpty( attributeValue.Value ) ) ? attributeValue.Value : attributeCache.DefaultValue; globalAttributes.AttributeValues.Add( attributeCache.Key, new KeyValuePair<string, string>( attributeCache.Name, value ) ); } cache.Set( cacheKey, globalAttributes, new CacheItemPolicy() ); return globalAttributes; } }