63 lines
2.4 KiB
C#
63 lines
2.4 KiB
C#
using Examine;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using Umbraco.Core;
|
|
using Umbraco.Core.Models;
|
|
using Umbraco.Core.PropertyEditors;
|
|
using Umbraco.Core.Services;
|
|
using Umbraco.Core.Strings;
|
|
|
|
namespace Umbraco.Examine
|
|
{
|
|
public class MediaValueSetBuilder : BaseValueSetBuilder<IMedia>
|
|
{
|
|
private readonly UrlSegmentProviderCollection _urlSegmentProviders;
|
|
private readonly IUserService _userService;
|
|
|
|
public MediaValueSetBuilder(PropertyEditorCollection propertyEditors,
|
|
UrlSegmentProviderCollection urlSegmentProviders,
|
|
IUserService userService)
|
|
: base(propertyEditors, false)
|
|
{
|
|
_urlSegmentProviders = urlSegmentProviders;
|
|
_userService = userService;
|
|
}
|
|
|
|
/// <inheritdoc />
|
|
public override IEnumerable<ValueSet> GetValueSets(params IMedia[] media)
|
|
{
|
|
foreach (var m in media)
|
|
{
|
|
var urlValue = m.GetUrlSegment(_urlSegmentProviders);
|
|
var values = new Dictionary<string, IEnumerable<object>>
|
|
{
|
|
{"icon", m.ContentType.Icon?.Yield() ?? Enumerable.Empty<string>()},
|
|
{"id", new object[] {m.Id}},
|
|
{UmbracoExamineIndex.NodeKeyFieldName, new object[] {m.Key}},
|
|
{"parentID", new object[] {m.Level > 1 ? m.ParentId : -1}},
|
|
{"level", new object[] {m.Level}},
|
|
{"creatorID", new object[] {m.CreatorId}},
|
|
{"sortOrder", new object[] {m.SortOrder}},
|
|
{"createDate", new object[] {m.CreateDate}},
|
|
{"updateDate", new object[] {m.UpdateDate}},
|
|
{"nodeName", m.Name?.Yield() ?? Enumerable.Empty<string>()},
|
|
{"urlName", urlValue?.Yield() ?? Enumerable.Empty<string>()},
|
|
{"path", m.Path?.Yield() ?? Enumerable.Empty<string>()},
|
|
{"nodeType", m.ContentType.Id.ToString().Yield() },
|
|
{"creatorName", (m.GetCreatorProfile(_userService)?.Name ?? "??").Yield()}
|
|
};
|
|
|
|
foreach (var property in m.Properties)
|
|
{
|
|
AddPropertyValue(property, null, null, values);
|
|
}
|
|
|
|
var vs = new ValueSet(m.Id.ToInvariantString(), IndexTypes.Media, m.ContentType.Alias, values);
|
|
|
|
yield return vs;
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|