internal IPublishedContent CreateFromCacheValues(CacheValues cacheValues) { var content = new DictionaryPublishedContent( cacheValues.Values, parentId => parentId < 0 ? null : GetUmbracoMedia(parentId), GetChildrenMedia, GetProperty, _appCache, _contentTypeCache, cacheValues.XPath, // though, outside of tests, that should be null cacheValues.FromExamine ); return(content.CreateModel()); }
/// <summary> /// We will need to first check if the document was loaded by Examine, if so we'll need to check if this property exists /// in the results, if it does not, then we'll have to revert to looking up in the db. /// </summary> /// <param name="dd"> </param> /// <param name="alias"></param> /// <returns></returns> private IPublishedProperty GetProperty(DictionaryPublishedContent dd, string alias) { //lets check if the alias does not exist on the document. //NOTE: Examine will not index empty values and we do not output empty XML Elements to the cache - either of these situations // would mean that the property is missing from the collection whether we are getting the value from Examine or from the library media cache. if (dd.Properties.All(x => x.Alias.InvariantEquals(alias) == false)) { return(null); } if (dd.LoadedFromExamine) { //We are going to check for a special field however, that is because in some cases we store a 'Raw' //value in the index such as for xml/html. var rawValue = dd.Properties.FirstOrDefault(x => x.Alias.InvariantEquals(UmbracoExamineIndex.RawFieldPrefix + alias)); return(rawValue ?? dd.Properties.FirstOrDefault(x => x.Alias.InvariantEquals(alias))); } //if its not loaded from examine, then just return the property return(dd.Properties.FirstOrDefault(x => x.Alias.InvariantEquals(alias))); }