Files
Umbraco-CMS/src/Umbraco.Web/ContextualPublishedCacheExtensions.cs

91 lines
4.1 KiB
C#
Raw Normal View History

using System.Linq;
2013-04-10 12:47:11 -02:00
using System.Xml.XPath;
using Umbraco.Core.Dynamics;
using Umbraco.Core.Xml;
using Umbraco.Web.Models;
using Umbraco.Web.PublishedCache;
namespace Umbraco.Web
{
/// <summary>
/// Provides extension methods to ContextualPublishedCache.
/// </summary>
2013-01-24 08:51:27 -01:00
public static class ContextualPublishedCacheExtensions
{
/// <summary>
/// Gets a dynamic content identified by its unique identifier.
/// </summary>
/// <param name="cache">The contextual cache.</param>
/// <param name="contentId">The content unique identifier.</param>
/// <returns>The dynamic content, or null.</returns>
public static dynamic GetDynamicById(this ContextualPublishedContentCache cache, int contentId)
{
var content = cache.GetById(contentId);
2013-09-05 17:47:13 +02:00
return content == null ? DynamicNull.Null : new DynamicPublishedContent(content).AsDynamic();
}
/// <summary>
/// Gets a dynamic content resulting from an XPath query.
/// </summary>
/// <param name="cache">The contextual cache.</param>
/// <param name="xpath">The XPath query.</param>
/// <param name="vars">Optional XPath variables</param>
/// <returns>The dynamic content, or null.</returns>
public static dynamic GetDynamicSingleByXPath(this ContextualPublishedContentCache cache, string xpath, params XPathVariable[] vars)
{
var content = cache.GetSingleByXPath(xpath, vars);
2013-09-05 17:47:13 +02:00
return content == null ? DynamicNull.Null : new DynamicPublishedContent(content).AsDynamic();
}
2013-04-10 12:47:11 -02:00
/// <summary>
/// Gets a dynamic content resulting from an XPath query.
/// </summary>
/// <param name="cache">The contextual cache.</param>
/// <param name="xpath">The XPath query.</param>
/// <param name="vars">Optional XPath variables</param>
/// <returns>The dynamic content, or null.</returns>
public static dynamic GetDynamicSingleByXPath(this ContextualPublishedContentCache cache, XPathExpression xpath, params XPathVariable[] vars)
{
var content = cache.GetSingleByXPath(xpath, vars);
2013-09-05 17:47:13 +02:00
return content == null ? DynamicNull.Null : new DynamicPublishedContent(content).AsDynamic();
2013-04-10 12:47:11 -02:00
}
/// <summary>
/// Gets dynamic contents resulting from an XPath query.
/// </summary>
/// <param name="cache">The contextual cache.</param>
/// <param name="xpath">The XPath query.</param>
/// <param name="vars">Optional XPath variables</param>
/// <returns>The dynamic contents.</returns>
public static dynamic GetDynamicByXPath(this ContextualPublishedContentCache cache, string xpath, params XPathVariable[] vars)
{
var content = cache.GetByXPath(xpath, vars);
return new DynamicPublishedContentList(content.Select(c => new DynamicPublishedContent(c)));
}
2013-04-10 12:47:11 -02:00
/// <summary>
/// Gets dynamic contents resulting from an XPath query.
/// </summary>
/// <param name="cache">The contextual cache.</param>
/// <param name="xpath">The XPath query.</param>
/// <param name="vars">Optional XPath variables</param>
/// <returns>The dynamic contents.</returns>
public static dynamic GetDynamicByXPath(this ContextualPublishedContentCache cache, XPathExpression xpath, params XPathVariable[] vars)
{
var content = cache.GetByXPath(xpath, vars);
return new DynamicPublishedContentList(content.Select(c => new DynamicPublishedContent(c)));
}
/// <summary>
/// Gets dynamic contents at root.
/// </summary>
/// <param name="cache">The contextual cache.</param>
/// <returns>The dynamic contents.</returns>
public static dynamic GetDynamicAtRoot(this ContextualPublishedContentCache cache)
{
var content = cache.GetAtRoot();
return new DynamicPublishedContentList(content.Select(c => new DynamicPublishedContent(c)));
}
}
}