2016-11-03 10:31:44 +01:00
|
|
|
|
using System;
|
|
|
|
|
|
using System.Collections.Generic;
|
2019-02-14 08:54:00 +01:00
|
|
|
|
using System.Linq;
|
2016-05-26 17:12:04 +02:00
|
|
|
|
using System.Xml.XPath;
|
2019-04-12 16:05:43 +02:00
|
|
|
|
using Umbraco.Core;
|
2016-05-26 17:12:04 +02:00
|
|
|
|
using Umbraco.Core.Models.PublishedContent;
|
|
|
|
|
|
using Umbraco.Core.Xml;
|
|
|
|
|
|
|
|
|
|
|
|
namespace Umbraco.Web.PublishedCache
|
|
|
|
|
|
{
|
|
|
|
|
|
abstract class PublishedCacheBase : IPublishedCache
|
|
|
|
|
|
{
|
|
|
|
|
|
public bool PreviewDefault { get; }
|
|
|
|
|
|
|
|
|
|
|
|
protected PublishedCacheBase(bool previewDefault)
|
|
|
|
|
|
{
|
|
|
|
|
|
PreviewDefault = previewDefault;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public abstract IPublishedContent GetById(bool preview, int contentId);
|
|
|
|
|
|
|
|
|
|
|
|
public IPublishedContent GetById(int contentId)
|
2019-04-12 16:05:43 +02:00
|
|
|
|
=> GetById(PreviewDefault, contentId);
|
2016-05-26 17:12:04 +02:00
|
|
|
|
|
2016-11-03 10:31:44 +01:00
|
|
|
|
public abstract IPublishedContent GetById(bool preview, Guid contentId);
|
|
|
|
|
|
|
|
|
|
|
|
public IPublishedContent GetById(Guid contentId)
|
2019-04-12 16:05:43 +02:00
|
|
|
|
=> GetById(PreviewDefault, contentId);
|
|
|
|
|
|
|
|
|
|
|
|
public abstract IPublishedContent GetById(bool preview, Udi contentId);
|
|
|
|
|
|
|
|
|
|
|
|
public IPublishedContent GetById(Udi contentId)
|
|
|
|
|
|
=> GetById(PreviewDefault, contentId);
|
2016-11-03 10:31:44 +01:00
|
|
|
|
|
2016-05-26 17:12:04 +02:00
|
|
|
|
public abstract bool HasById(bool preview, int contentId);
|
|
|
|
|
|
|
|
|
|
|
|
public bool HasById(int contentId)
|
2019-04-12 16:05:43 +02:00
|
|
|
|
=> HasById(PreviewDefault, contentId);
|
2016-05-26 17:12:04 +02:00
|
|
|
|
|
|
|
|
|
|
public abstract IEnumerable<IPublishedContent> GetAtRoot(bool preview);
|
|
|
|
|
|
|
|
|
|
|
|
public IEnumerable<IPublishedContent> GetAtRoot()
|
|
|
|
|
|
{
|
|
|
|
|
|
return GetAtRoot(PreviewDefault);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public abstract IPublishedContent GetSingleByXPath(bool preview, string xpath, XPathVariable[] vars);
|
|
|
|
|
|
|
|
|
|
|
|
public IPublishedContent GetSingleByXPath(string xpath, XPathVariable[] vars)
|
|
|
|
|
|
{
|
|
|
|
|
|
return GetSingleByXPath(PreviewDefault, xpath, vars);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public abstract IPublishedContent GetSingleByXPath(bool preview, XPathExpression xpath, XPathVariable[] vars);
|
|
|
|
|
|
|
|
|
|
|
|
public IPublishedContent GetSingleByXPath(XPathExpression xpath, XPathVariable[] vars)
|
|
|
|
|
|
{
|
|
|
|
|
|
return GetSingleByXPath(PreviewDefault, xpath, vars);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public abstract IEnumerable<IPublishedContent> GetByXPath(bool preview, string xpath, XPathVariable[] vars);
|
|
|
|
|
|
|
|
|
|
|
|
public IEnumerable<IPublishedContent> GetByXPath(string xpath, XPathVariable[] vars)
|
|
|
|
|
|
{
|
|
|
|
|
|
return GetByXPath(PreviewDefault, xpath, vars);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public abstract IEnumerable<IPublishedContent> GetByXPath(bool preview, XPathExpression xpath, XPathVariable[] vars);
|
|
|
|
|
|
|
|
|
|
|
|
public IEnumerable<IPublishedContent> GetByXPath(XPathExpression xpath, XPathVariable[] vars)
|
|
|
|
|
|
{
|
|
|
|
|
|
return GetByXPath(PreviewDefault, xpath, vars);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public abstract XPathNavigator CreateNavigator(bool preview);
|
|
|
|
|
|
|
|
|
|
|
|
public XPathNavigator CreateNavigator()
|
|
|
|
|
|
{
|
|
|
|
|
|
return CreateNavigator(PreviewDefault);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public abstract XPathNavigator CreateNodeNavigator(int id, bool preview);
|
|
|
|
|
|
|
|
|
|
|
|
public abstract bool HasContent(bool preview);
|
|
|
|
|
|
|
|
|
|
|
|
public bool HasContent()
|
|
|
|
|
|
{
|
|
|
|
|
|
return HasContent(PreviewDefault);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2019-04-15 13:04:14 +02:00
|
|
|
|
public abstract IPublishedContentType GetContentType(int id);
|
2016-05-26 17:12:04 +02:00
|
|
|
|
|
2019-04-15 13:04:14 +02:00
|
|
|
|
public abstract IPublishedContentType GetContentType(string alias);
|
2016-05-26 17:12:04 +02:00
|
|
|
|
|
2019-04-15 13:04:14 +02:00
|
|
|
|
public virtual IEnumerable<IPublishedContent> GetByContentType(IPublishedContentType contentType)
|
2019-02-14 08:54:00 +01:00
|
|
|
|
{
|
|
|
|
|
|
// this is probably not super-efficient, but works
|
|
|
|
|
|
// some cache implementation may want to override it, though
|
|
|
|
|
|
return GetAtRoot()
|
|
|
|
|
|
.SelectMany(x => x.DescendantsOrSelf())
|
|
|
|
|
|
.Where(x => x.ContentType.Id == contentType.Id);
|
|
|
|
|
|
}
|
2016-05-26 17:12:04 +02:00
|
|
|
|
}
|
|
|
|
|
|
}
|