aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Controller/Entities
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Controller/Entities')
-rw-r--r--MediaBrowser.Controller/Entities/Audio/MusicAlbum.cs4
-rw-r--r--MediaBrowser.Controller/Entities/BaseItem.cs59
-rw-r--r--MediaBrowser.Controller/Entities/Book.cs2
-rw-r--r--MediaBrowser.Controller/Entities/Folder.cs28
-rw-r--r--MediaBrowser.Controller/Entities/IHiddenFromDisplay.cs18
-rw-r--r--MediaBrowser.Controller/Entities/Movies/Movie.cs2
-rw-r--r--MediaBrowser.Controller/Entities/Photo.cs2
-rw-r--r--MediaBrowser.Controller/Entities/TV/Episode.cs2
-rw-r--r--MediaBrowser.Controller/Entities/TV/Season.cs2
-rw-r--r--MediaBrowser.Controller/Entities/Trailer.cs2
-rw-r--r--MediaBrowser.Controller/Entities/UserView.cs12
-rw-r--r--MediaBrowser.Controller/Entities/UserViewBuilder.cs4
-rw-r--r--MediaBrowser.Controller/Entities/Video.cs2
13 files changed, 74 insertions, 65 deletions
diff --git a/MediaBrowser.Controller/Entities/Audio/MusicAlbum.cs b/MediaBrowser.Controller/Entities/Audio/MusicAlbum.cs
index 59481f5df..9a38912ea 100644
--- a/MediaBrowser.Controller/Entities/Audio/MusicAlbum.cs
+++ b/MediaBrowser.Controller/Entities/Audio/MusicAlbum.cs
@@ -30,7 +30,7 @@ namespace MediaBrowser.Controller.Entities.Audio
{
get
{
- return Parents.OfType<MusicArtist>().FirstOrDefault();
+ return GetParents().OfType<MusicArtist>().FirstOrDefault();
}
}
@@ -121,7 +121,7 @@ namespace MediaBrowser.Controller.Entities.Audio
id.AlbumArtists = AlbumArtists;
- var artist = Parents.OfType<MusicArtist>().FirstOrDefault();
+ var artist = GetParents().OfType<MusicArtist>().FirstOrDefault();
if (artist != null)
{
diff --git a/MediaBrowser.Controller/Entities/BaseItem.cs b/MediaBrowser.Controller/Entities/BaseItem.cs
index d9b7b1ae7..d8bb51003 100644
--- a/MediaBrowser.Controller/Entities/BaseItem.cs
+++ b/MediaBrowser.Controller/Entities/BaseItem.cs
@@ -214,11 +214,6 @@ namespace MediaBrowser.Controller.Entities
}
}
- public virtual bool IsHiddenFromUser(User user)
- {
- return false;
- }
-
[IgnoreDataMember]
public virtual bool IsOwnedItem
{
@@ -519,15 +514,7 @@ namespace MediaBrowser.Controller.Entities
[IgnoreDataMember]
public Folder Parent
{
- get
- {
- if (ParentId != Guid.Empty)
- {
- return LibraryManager.GetItemById(ParentId) as Folder;
- }
-
- return null;
- }
+ get { return GetParent() as Folder; }
set
{
@@ -542,16 +529,28 @@ namespace MediaBrowser.Controller.Entities
[IgnoreDataMember]
public IEnumerable<Folder> Parents
{
- get
+ get { return GetParents().OfType<Folder>(); }
+ }
+
+ public BaseItem GetParent()
+ {
+ if (ParentId != Guid.Empty)
{
- var parent = Parent;
+ return LibraryManager.GetItemById(ParentId);
+ }
- while (parent != null)
- {
- yield return parent;
+ return null;
+ }
- parent = parent.Parent;
- }
+ public IEnumerable<BaseItem> GetParents()
+ {
+ var parent = GetParent();
+
+ while (parent != null)
+ {
+ yield return parent;
+
+ parent = parent.GetParent();
}
}
@@ -563,13 +562,13 @@ namespace MediaBrowser.Controller.Entities
public T FindParent<T>()
where T : Folder
{
- return Parents.OfType<T>().FirstOrDefault();
+ return GetParents().OfType<T>().FirstOrDefault();
}
[IgnoreDataMember]
public virtual BaseItem DisplayParent
{
- get { return Parent; }
+ get { return GetParent(); }
}
/// <summary>
@@ -869,7 +868,7 @@ namespace MediaBrowser.Controller.Entities
[IgnoreDataMember]
protected virtual bool SupportsOwnedItems
{
- get { return IsFolder || Parent != null; }
+ get { return IsFolder || GetParent() != null; }
}
[IgnoreDataMember]
@@ -894,7 +893,7 @@ namespace MediaBrowser.Controller.Entities
var localTrailersChanged = false;
- if (LocationType == LocationType.FileSystem && Parent != null)
+ if (LocationType == LocationType.FileSystem && GetParent() != null)
{
var hasThemeMedia = this as IHasThemeMedia;
if (hasThemeMedia != null)
@@ -1056,7 +1055,7 @@ namespace MediaBrowser.Controller.Entities
if (string.IsNullOrWhiteSpace(lang))
{
- lang = Parents
+ lang = GetParents()
.Select(i => i.PreferredMetadataLanguage)
.FirstOrDefault(i => !string.IsNullOrWhiteSpace(i));
}
@@ -1086,7 +1085,7 @@ namespace MediaBrowser.Controller.Entities
if (string.IsNullOrWhiteSpace(lang))
{
- lang = Parents
+ lang = GetParents()
.Select(i => i.PreferredMetadataCountryCode)
.FirstOrDefault(i => !string.IsNullOrWhiteSpace(i));
}
@@ -1276,14 +1275,14 @@ namespace MediaBrowser.Controller.Entities
return false;
}
- if (Parents.Any(i => !i.IsVisible(user)))
+ if (GetParents().Any(i => !i.IsVisible(user)))
{
return false;
}
if (checkFolders)
{
- var topParent = Parents.LastOrDefault() ?? this;
+ var topParent = GetParents().LastOrDefault() ?? this;
if (string.IsNullOrWhiteSpace(topParent.Path))
{
@@ -1937,7 +1936,7 @@ namespace MediaBrowser.Controller.Entities
public virtual IEnumerable<Guid> GetAncestorIds()
{
- return Parents.Select(i => i.Id).Concat(LibraryManager.GetCollectionFolders(this).Select(i => i.Id));
+ return GetParents().Select(i => i.Id).Concat(LibraryManager.GetCollectionFolders(this).Select(i => i.Id));
}
[IgnoreDataMember]
diff --git a/MediaBrowser.Controller/Entities/Book.cs b/MediaBrowser.Controller/Entities/Book.cs
index 1b4904509..f006fedd2 100644
--- a/MediaBrowser.Controller/Entities/Book.cs
+++ b/MediaBrowser.Controller/Entities/Book.cs
@@ -37,7 +37,7 @@ namespace MediaBrowser.Controller.Entities
if (string.IsNullOrEmpty(SeriesName))
{
- info.SeriesName = Parents.Select(i => i.Name).FirstOrDefault();
+ info.SeriesName = GetParents().Select(i => i.Name).FirstOrDefault();
}
else
{
diff --git a/MediaBrowser.Controller/Entities/Folder.cs b/MediaBrowser.Controller/Entities/Folder.cs
index 97016baff..16413eeb4 100644
--- a/MediaBrowser.Controller/Entities/Folder.cs
+++ b/MediaBrowser.Controller/Entities/Folder.cs
@@ -825,20 +825,8 @@ namespace MediaBrowser.Controller.Entities
return UserViewBuilder.PostFilterAndSort(items, this, null, query, LibraryManager);
}
- /// <summary>
- /// Gets allowed 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>
public virtual IEnumerable<BaseItem> GetChildren(User user, bool includeLinkedChildren)
{
- return GetChildren(user, includeLinkedChildren, false);
- }
-
- internal IEnumerable<BaseItem> GetChildren(User user, bool includeLinkedChildren, bool includeHidden)
- {
if (user == null)
{
throw new ArgumentNullException();
@@ -849,7 +837,7 @@ namespace MediaBrowser.Controller.Entities
var result = new Dictionary<Guid, BaseItem>();
- AddChildren(user, includeLinkedChildren, result, includeHidden, false, null);
+ AddChildren(user, includeLinkedChildren, result, false, null);
return result.Values;
}
@@ -865,29 +853,25 @@ namespace MediaBrowser.Controller.Entities
/// <param name="user">The user.</param>
/// <param name="includeLinkedChildren">if set to <c>true</c> [include linked children].</param>
/// <param name="result">The result.</param>
- /// <param name="includeHidden">if set to <c>true</c> [include hidden].</param>
/// <param name="recursive">if set to <c>true</c> [recursive].</param>
/// <param name="filter">The filter.</param>
/// <returns><c>true</c> if XXXX, <c>false</c> otherwise</returns>
- private void AddChildren(User user, bool includeLinkedChildren, Dictionary<Guid, BaseItem> result, bool includeHidden, bool recursive, Func<BaseItem, bool> filter)
+ private void AddChildren(User user, bool includeLinkedChildren, Dictionary<Guid, BaseItem> result, bool recursive, Func<BaseItem, bool> filter)
{
foreach (var child in GetEligibleChildrenForRecursiveChildren(user))
{
if (child.IsVisible(user))
{
- if (includeHidden || !child.IsHiddenFromUser(user))
+ if (filter == null || filter(child))
{
- if (filter == null || filter(child))
- {
- result[child.Id] = child;
- }
+ result[child.Id] = child;
}
if (recursive && child.IsFolder)
{
var folder = (Folder)child;
- folder.AddChildren(user, includeLinkedChildren, result, includeHidden, true, filter);
+ folder.AddChildren(user, includeLinkedChildren, result, true, filter);
}
}
}
@@ -928,7 +912,7 @@ namespace MediaBrowser.Controller.Entities
var result = new Dictionary<Guid, BaseItem>();
- AddChildren(user, true, result, false, true, filter);
+ AddChildren(user, true, result, true, filter);
return result.Values;
}
diff --git a/MediaBrowser.Controller/Entities/IHiddenFromDisplay.cs b/MediaBrowser.Controller/Entities/IHiddenFromDisplay.cs
new file mode 100644
index 000000000..82d581fcf
--- /dev/null
+++ b/MediaBrowser.Controller/Entities/IHiddenFromDisplay.cs
@@ -0,0 +1,18 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace MediaBrowser.Controller.Entities
+{
+ public interface IHiddenFromDisplay
+ {
+ /// <summary>
+ /// Determines whether the specified user is hidden.
+ /// </summary>
+ /// <param name="user">The user.</param>
+ /// <returns><c>true</c> if the specified user is hidden; otherwise, <c>false</c>.</returns>
+ bool IsHiddenFromUser(User user);
+ }
+}
diff --git a/MediaBrowser.Controller/Entities/Movies/Movie.cs b/MediaBrowser.Controller/Entities/Movies/Movie.cs
index 60642543f..749d562ac 100644
--- a/MediaBrowser.Controller/Entities/Movies/Movie.cs
+++ b/MediaBrowser.Controller/Entities/Movies/Movie.cs
@@ -130,7 +130,7 @@ namespace MediaBrowser.Controller.Entities.Movies
// Must have a parent to have special features
// In other words, it must be part of the Parent/Child tree
- if (LocationType == LocationType.FileSystem && Parent != null && !IsInMixedFolder)
+ if (LocationType == LocationType.FileSystem && GetParent() != null && !IsInMixedFolder)
{
var specialFeaturesChanged = await RefreshSpecialFeatures(options, fileSystemChildren, cancellationToken).ConfigureAwait(false);
diff --git a/MediaBrowser.Controller/Entities/Photo.cs b/MediaBrowser.Controller/Entities/Photo.cs
index 859d327b3..308e61590 100644
--- a/MediaBrowser.Controller/Entities/Photo.cs
+++ b/MediaBrowser.Controller/Entities/Photo.cs
@@ -49,7 +49,7 @@ namespace MediaBrowser.Controller.Entities
{
get
{
- return Parents.OfType<PhotoAlbum>().FirstOrDefault();
+ return GetParents().OfType<PhotoAlbum>().FirstOrDefault();
}
}
diff --git a/MediaBrowser.Controller/Entities/TV/Episode.cs b/MediaBrowser.Controller/Entities/TV/Episode.cs
index 86893f6d4..d4f829917 100644
--- a/MediaBrowser.Controller/Entities/TV/Episode.cs
+++ b/MediaBrowser.Controller/Entities/TV/Episode.cs
@@ -95,7 +95,7 @@ namespace MediaBrowser.Controller.Entities.TV
{
get
{
- return Season ?? Parent;
+ return Season ?? GetParent();
}
}
diff --git a/MediaBrowser.Controller/Entities/TV/Season.cs b/MediaBrowser.Controller/Entities/TV/Season.cs
index 44bf1c6cc..93eac058d 100644
--- a/MediaBrowser.Controller/Entities/TV/Season.cs
+++ b/MediaBrowser.Controller/Entities/TV/Season.cs
@@ -33,7 +33,7 @@ namespace MediaBrowser.Controller.Entities.TV
[IgnoreDataMember]
public override BaseItem DisplayParent
{
- get { return Series ?? Parent; }
+ get { return Series ?? GetParent(); }
}
// Genre, Rating and Stuido will all be the same
diff --git a/MediaBrowser.Controller/Entities/Trailer.cs b/MediaBrowser.Controller/Entities/Trailer.cs
index d37e2be93..3c7d39e0d 100644
--- a/MediaBrowser.Controller/Entities/Trailer.cs
+++ b/MediaBrowser.Controller/Entities/Trailer.cs
@@ -73,7 +73,7 @@ namespace MediaBrowser.Controller.Entities
get
{
// Local trailers are not part of children
- return Parent == null;
+ return GetParent() == null;
}
}
diff --git a/MediaBrowser.Controller/Entities/UserView.cs b/MediaBrowser.Controller/Entities/UserView.cs
index 940e99f12..f14ba568b 100644
--- a/MediaBrowser.Controller/Entities/UserView.cs
+++ b/MediaBrowser.Controller/Entities/UserView.cs
@@ -38,6 +38,10 @@ namespace MediaBrowser.Controller.Entities
{
list.Add(ParentId);
}
+ else
+ {
+ list.Add(Id);
+ }
return list;
}
@@ -125,10 +129,14 @@ namespace MediaBrowser.Controller.Entities
{
var standaloneTypes = new List<string>
{
- CollectionType.Playlists,
- CollectionType.BoxSets
+ CollectionType.Playlists
};
+ if (!ConfigurationManager.Configuration.EnableSharedCollectionViewImage)
+ {
+ standaloneTypes.Add(CollectionType.BoxSets);
+ }
+
var collectionFolder = folder as ICollectionFolder;
if (collectionFolder == null)
diff --git a/MediaBrowser.Controller/Entities/UserViewBuilder.cs b/MediaBrowser.Controller/Entities/UserViewBuilder.cs
index 87f45ec8e..7c588c910 100644
--- a/MediaBrowser.Controller/Entities/UserViewBuilder.cs
+++ b/MediaBrowser.Controller/Entities/UserViewBuilder.cs
@@ -1073,7 +1073,7 @@ namespace MediaBrowser.Controller.Entities
if (query.IsInBoxSet.HasValue)
{
var val = query.IsInBoxSet.Value;
- if (item.Parents.OfType<BoxSet>().Any() != val)
+ if (item.GetParents().OfType<BoxSet>().Any() != val)
{
return false;
}
@@ -1511,7 +1511,7 @@ namespace MediaBrowser.Controller.Entities
.Where(i => !UserView.IsExcludedFromGrouping(i));
}
return user.RootFolder
- .GetChildren(user, true, true)
+ .GetChildren(user, true)
.OfType<Folder>()
.Where(i => user.IsFolderGrouped(i.Id) && !UserView.IsExcludedFromGrouping(i));
}
diff --git a/MediaBrowser.Controller/Entities/Video.cs b/MediaBrowser.Controller/Entities/Video.cs
index 62d1bc7a1..2a59dd7f7 100644
--- a/MediaBrowser.Controller/Entities/Video.cs
+++ b/MediaBrowser.Controller/Entities/Video.cs
@@ -352,7 +352,7 @@ namespace MediaBrowser.Controller.Entities
// Must have a parent to have additional parts or alternate versions
// In other words, it must be part of the Parent/Child tree
// The additional parts won't have additional parts themselves
- if (LocationType == LocationType.FileSystem && Parent != null)
+ if (LocationType == LocationType.FileSystem && GetParent() != null)
{
if (!IsStacked)
{