diff options
Diffstat (limited to 'MediaBrowser.Controller/Entities')
| -rw-r--r-- | MediaBrowser.Controller/Entities/Audio/MusicAlbum.cs | 6 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Entities/BaseItem.cs | 25 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Entities/Folder.cs | 44 |
3 files changed, 50 insertions, 25 deletions
diff --git a/MediaBrowser.Controller/Entities/Audio/MusicAlbum.cs b/MediaBrowser.Controller/Entities/Audio/MusicAlbum.cs index 1526cf46a..1668b91d4 100644 --- a/MediaBrowser.Controller/Entities/Audio/MusicAlbum.cs +++ b/MediaBrowser.Controller/Entities/Audio/MusicAlbum.cs @@ -91,11 +91,5 @@ namespace MediaBrowser.Controller.Entities.Audio { return RecursiveChildren.OfType<Audio>().Any(i => i.HasArtist(artist)); } - - /// <summary> - /// Gets or sets the music brainz release group id. - /// </summary> - /// <value>The music brainz release group id.</value> - public string MusicBrainzReleaseGroupId { get; set; } } } diff --git a/MediaBrowser.Controller/Entities/BaseItem.cs b/MediaBrowser.Controller/Entities/BaseItem.cs index cc2e82b1f..a75dc47e1 100644 --- a/MediaBrowser.Controller/Entities/BaseItem.cs +++ b/MediaBrowser.Controller/Entities/BaseItem.cs @@ -1,4 +1,5 @@ -using MediaBrowser.Controller.Configuration; +using MediaBrowser.Common.Extensions; +using MediaBrowser.Controller.Configuration; using MediaBrowser.Controller.IO; using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Localization; @@ -84,6 +85,21 @@ namespace MediaBrowser.Controller.Entities public Guid Id { get; set; } /// <summary> + /// Return the id that should be used to key display prefs for this item. + /// Default is based on the type for everything except actual generic folders. + /// </summary> + /// <value>The display prefs id.</value> + [IgnoreDataMember] + public virtual Guid DisplayPreferencesId + { + get + { + var thisType = GetType(); + return thisType == typeof(Folder) ? Id : thisType.FullName.GetMD5(); + } + } + + /// <summary> /// Gets or sets the path. /// </summary> /// <value>The path.</value> @@ -393,7 +409,12 @@ namespace MediaBrowser.Controller.Entities { get { - return ForcedSortName ?? _sortName ?? (_sortName = CreateSortName()); + if (!string.IsNullOrEmpty(ForcedSortName)) + { + return ForcedSortName; + } + + return _sortName ?? (_sortName = CreateSortName()); } } diff --git a/MediaBrowser.Controller/Entities/Folder.cs b/MediaBrowser.Controller/Entities/Folder.cs index ca43ca616..91f4504c2 100644 --- a/MediaBrowser.Controller/Entities/Folder.cs +++ b/MediaBrowser.Controller/Entities/Folder.cs @@ -16,6 +16,7 @@ using System.Linq; using System.Runtime.Serialization; using System.Threading; using System.Threading.Tasks; +using MoreLinq; namespace MediaBrowser.Controller.Entities { @@ -66,21 +67,6 @@ namespace MediaBrowser.Controller.Entities } } - /// <summary> - /// Return the id that should be used to key display prefs for this item. - /// Default is based on the type for everything except actual generic folders. - /// </summary> - /// <value>The display prefs id.</value> - [IgnoreDataMember] - public virtual Guid DisplayPreferencesId - { - get - { - var thisType = GetType(); - return thisType == typeof(Folder) ? Id : thisType.FullName.GetMD5(); - } - } - public virtual List<LinkedChild> LinkedChildren { get; set; } protected virtual bool SupportsShortcutChildren @@ -974,7 +960,31 @@ namespace MediaBrowser.Controller.Entities /// <param name="includeLinkedChildren">if set to <c>true</c> [include linked children].</param> /// <returns>IEnumerable{BaseItem}.</returns> /// <exception cref="System.ArgumentNullException"></exception> - public IEnumerable<BaseItem> GetRecursiveChildren(User user, bool includeLinkedChildren = false) + public IEnumerable<BaseItem> GetRecursiveChildren(User user, bool includeLinkedChildren = true) + { + if (user == null) + { + throw new ArgumentNullException(); + } + + var children = GetRecursiveChildrenInternal(user, includeLinkedChildren); + + if (includeLinkedChildren) + { + children = children.DistinctBy(i => i.Id); + } + + return children; + } + + /// <summary> + /// Gets allowed recursive children of an item + /// </summary> + /// <param name="user">The user.</param> + /// <param name="includeLinkedChildren">if set to <c>true</c> [include linked children].</param> + /// <returns>IEnumerable{BaseItem}.</returns> + /// <exception cref="System.ArgumentNullException"></exception> + private IEnumerable<BaseItem> GetRecursiveChildrenInternal(User user, bool includeLinkedChildren) { if (user == null) { @@ -989,7 +999,7 @@ namespace MediaBrowser.Controller.Entities if (subFolder != null) { - foreach (var subitem in subFolder.GetRecursiveChildren(user, includeLinkedChildren)) + foreach (var subitem in subFolder.GetRecursiveChildrenInternal(user, includeLinkedChildren)) { yield return subitem; } |
