aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--MediaBrowser.Controller/Channels/ChannelAudioItem.cs2
-rw-r--r--MediaBrowser.Controller/Channels/ChannelFolderItem.cs2
-rw-r--r--MediaBrowser.Controller/Channels/ChannelVideoItem.cs4
-rw-r--r--MediaBrowser.Controller/Entities/Audio/Audio.cs4
-rw-r--r--MediaBrowser.Controller/Entities/Audio/MusicAlbum.cs4
-rw-r--r--MediaBrowser.Controller/Entities/Audio/MusicArtist.cs2
-rw-r--r--MediaBrowser.Controller/Entities/Audio/MusicGenre.cs2
-rw-r--r--MediaBrowser.Controller/Entities/BaseItem.cs18
-rw-r--r--MediaBrowser.Controller/Entities/Folder.cs2
-rw-r--r--MediaBrowser.Controller/Entities/Game.cs4
-rw-r--r--MediaBrowser.Controller/Entities/GameGenre.cs2
-rw-r--r--MediaBrowser.Controller/Entities/GameSystem.cs4
-rw-r--r--MediaBrowser.Controller/Entities/Genre.cs2
-rw-r--r--MediaBrowser.Controller/Entities/Movies/Movie.cs4
-rw-r--r--MediaBrowser.Controller/Entities/MusicVideo.cs19
-rw-r--r--MediaBrowser.Controller/Entities/Person.cs2
-rw-r--r--MediaBrowser.Controller/Entities/Studio.cs2
-rw-r--r--MediaBrowser.Controller/Entities/TV/Episode.cs4
-rw-r--r--MediaBrowser.Controller/Entities/TV/Season.cs4
-rw-r--r--MediaBrowser.Controller/Entities/TV/Series.cs4
-rw-r--r--MediaBrowser.Controller/Entities/Trailer.cs4
-rw-r--r--MediaBrowser.Controller/Entities/UserViewBuilder.cs19
-rw-r--r--MediaBrowser.Controller/Entities/Year.cs2
-rw-r--r--MediaBrowser.Controller/LiveTv/LiveTvAudioRecording.cs2
-rw-r--r--MediaBrowser.Controller/LiveTv/LiveTvChannel.cs2
-rw-r--r--MediaBrowser.Controller/LiveTv/LiveTvProgram.cs2
-rw-r--r--MediaBrowser.Controller/LiveTv/LiveTvVideoRecording.cs2
-rw-r--r--MediaBrowser.Providers/Manager/MetadataService.cs3
-rw-r--r--MediaBrowser.Server.Implementations/Collections/ManualCollectionsFolder.cs4
-rw-r--r--MediaBrowser.Server.Implementations/FileOrganization/NameUtils.cs3
-rw-r--r--MediaBrowser.Server.Implementations/Library/UserViewManager.cs20
-rw-r--r--MediaBrowser.Server.Implementations/Localization/Server/server.json2
-rw-r--r--MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj1
-rw-r--r--MediaBrowser.Server.Implementations/Sync/SyncJobProcessor.cs12
-rw-r--r--MediaBrowser.Server.Implementations/Sync/SyncRegistrationInfo.cs31
-rw-r--r--Nuget/MediaBrowser.Common.Internal.nuspec4
-rw-r--r--Nuget/MediaBrowser.Common.nuspec2
-rw-r--r--Nuget/MediaBrowser.Model.Signed.nuspec2
-rw-r--r--Nuget/MediaBrowser.Server.Core.nuspec4
39 files changed, 126 insertions, 86 deletions
diff --git a/MediaBrowser.Controller/Channels/ChannelAudioItem.cs b/MediaBrowser.Controller/Channels/ChannelAudioItem.cs
index 896d598bb..d9330f8a3 100644
--- a/MediaBrowser.Controller/Channels/ChannelAudioItem.cs
+++ b/MediaBrowser.Controller/Channels/ChannelAudioItem.cs
@@ -32,7 +32,7 @@ namespace MediaBrowser.Controller.Channels
return config.BlockUnratedItems.Contains(UnratedItem.ChannelContent);
}
- public override string GetUserDataKey()
+ protected override string CreateUserDataKey()
{
return ExternalId;
}
diff --git a/MediaBrowser.Controller/Channels/ChannelFolderItem.cs b/MediaBrowser.Controller/Channels/ChannelFolderItem.cs
index 8482e38df..dce9840ed 100644
--- a/MediaBrowser.Controller/Channels/ChannelFolderItem.cs
+++ b/MediaBrowser.Controller/Channels/ChannelFolderItem.cs
@@ -40,7 +40,7 @@ namespace MediaBrowser.Controller.Channels
return false;
}
- public override string GetUserDataKey()
+ protected override string CreateUserDataKey()
{
return ExternalId;
}
diff --git a/MediaBrowser.Controller/Channels/ChannelVideoItem.cs b/MediaBrowser.Controller/Channels/ChannelVideoItem.cs
index f0eafcbdf..e3fad56e9 100644
--- a/MediaBrowser.Controller/Channels/ChannelVideoItem.cs
+++ b/MediaBrowser.Controller/Channels/ChannelVideoItem.cs
@@ -28,8 +28,8 @@ namespace MediaBrowser.Controller.Channels
public string OriginalImageUrl { get; set; }
public List<ChannelMediaInfo> ChannelMediaSources { get; set; }
-
- public override string GetUserDataKey()
+
+ protected override string CreateUserDataKey()
{
if (ContentType == ChannelMediaContentType.MovieExtra)
{
diff --git a/MediaBrowser.Controller/Entities/Audio/Audio.cs b/MediaBrowser.Controller/Entities/Audio/Audio.cs
index c5ed09016..f110f85d2 100644
--- a/MediaBrowser.Controller/Entities/Audio/Audio.cs
+++ b/MediaBrowser.Controller/Entities/Audio/Audio.cs
@@ -169,7 +169,7 @@ namespace MediaBrowser.Controller.Entities.Audio
/// Gets the user data key.
/// </summary>
/// <returns>System.String.</returns>
- public override string GetUserDataKey()
+ protected override string CreateUserDataKey()
{
var parent = FindParent<MusicAlbum>();
@@ -186,7 +186,7 @@ namespace MediaBrowser.Controller.Entities.Audio
}
}
- return base.GetUserDataKey();
+ return base.CreateUserDataKey();
}
protected override bool GetBlockUnratedValue(UserPolicy config)
diff --git a/MediaBrowser.Controller/Entities/Audio/MusicAlbum.cs b/MediaBrowser.Controller/Entities/Audio/MusicAlbum.cs
index 90edfcce7..7974657d9 100644
--- a/MediaBrowser.Controller/Entities/Audio/MusicAlbum.cs
+++ b/MediaBrowser.Controller/Entities/Audio/MusicAlbum.cs
@@ -136,7 +136,7 @@ namespace MediaBrowser.Controller.Entities.Audio
/// Gets the user data key.
/// </summary>
/// <returns>System.String.</returns>
- public override string GetUserDataKey()
+ protected override string CreateUserDataKey()
{
var id = this.GetProviderId(MetadataProviders.MusicBrainzReleaseGroup);
@@ -152,7 +152,7 @@ namespace MediaBrowser.Controller.Entities.Audio
return "MusicAlbum-Musicbrainz-" + id;
}
- return base.GetUserDataKey();
+ return base.CreateUserDataKey();
}
protected override bool GetBlockUnratedValue(UserPolicy config)
diff --git a/MediaBrowser.Controller/Entities/Audio/MusicArtist.cs b/MediaBrowser.Controller/Entities/Audio/MusicArtist.cs
index a60258d1a..45476d6a6 100644
--- a/MediaBrowser.Controller/Entities/Audio/MusicArtist.cs
+++ b/MediaBrowser.Controller/Entities/Audio/MusicArtist.cs
@@ -68,7 +68,7 @@ namespace MediaBrowser.Controller.Entities.Audio
/// Gets the user data key.
/// </summary>
/// <returns>System.String.</returns>
- public override string GetUserDataKey()
+ protected override string CreateUserDataKey()
{
return GetUserDataKey(this);
}
diff --git a/MediaBrowser.Controller/Entities/Audio/MusicGenre.cs b/MediaBrowser.Controller/Entities/Audio/MusicGenre.cs
index 928eb6463..ad2d39c79 100644
--- a/MediaBrowser.Controller/Entities/Audio/MusicGenre.cs
+++ b/MediaBrowser.Controller/Entities/Audio/MusicGenre.cs
@@ -14,7 +14,7 @@ namespace MediaBrowser.Controller.Entities.Audio
/// Gets the user data key.
/// </summary>
/// <returns>System.String.</returns>
- public override string GetUserDataKey()
+ protected override string CreateUserDataKey()
{
return "MusicGenre-" + Name;
}
diff --git a/MediaBrowser.Controller/Entities/BaseItem.cs b/MediaBrowser.Controller/Entities/BaseItem.cs
index 2be4f99e9..234a33d78 100644
--- a/MediaBrowser.Controller/Entities/BaseItem.cs
+++ b/MediaBrowser.Controller/Entities/BaseItem.cs
@@ -359,7 +359,7 @@ namespace MediaBrowser.Controller.Entities
{
get
{
- if (!string.IsNullOrEmpty(ForcedSortName))
+ if (!string.IsNullOrWhiteSpace(ForcedSortName))
{
return ForcedSortName;
}
@@ -887,11 +887,22 @@ namespace MediaBrowser.Controller.Entities
get { return null; }
}
+ private string _userDataKey;
/// <summary>
/// Gets the user data key.
/// </summary>
/// <returns>System.String.</returns>
- public virtual string GetUserDataKey()
+ public string GetUserDataKey()
+ {
+ if (!string.IsNullOrWhiteSpace(_userDataKey))
+ {
+ return _userDataKey;
+ }
+
+ return _userDataKey ?? (_userDataKey = CreateUserDataKey());
+ }
+
+ protected virtual string CreateUserDataKey()
{
return Id.ToString();
}
@@ -1701,6 +1712,9 @@ namespace MediaBrowser.Controller.Entities
/// </summary>
public virtual bool BeforeMetadataRefresh()
{
+ _userDataKey = null;
+ _sortName = null;
+
var hasChanges = false;
if (string.IsNullOrEmpty(Name) && !string.IsNullOrEmpty(Path))
diff --git a/MediaBrowser.Controller/Entities/Folder.cs b/MediaBrowser.Controller/Entities/Folder.cs
index ff6e8e85b..dd3d145a0 100644
--- a/MediaBrowser.Controller/Entities/Folder.cs
+++ b/MediaBrowser.Controller/Entities/Folder.cs
@@ -807,7 +807,7 @@ namespace MediaBrowser.Controller.Entities
protected QueryResult<BaseItem> SortAndFilter(IEnumerable<BaseItem> items, InternalItemsQuery query)
{
- return UserViewBuilder.SortAndFilter(items, this, null, query, LibraryManager, UserDataManager);
+ return UserViewBuilder.FilterAndSort(items, this, null, query, LibraryManager, UserDataManager);
}
/// <summary>
diff --git a/MediaBrowser.Controller/Entities/Game.cs b/MediaBrowser.Controller/Entities/Game.cs
index bf32d3e63..71642ea90 100644
--- a/MediaBrowser.Controller/Entities/Game.cs
+++ b/MediaBrowser.Controller/Entities/Game.cs
@@ -88,7 +88,7 @@ namespace MediaBrowser.Controller.Entities
/// </summary>
public List<string> MultiPartGameFiles { get; set; }
- public override string GetUserDataKey()
+ protected override string CreateUserDataKey()
{
var id = this.GetProviderId(MetadataProviders.Gamesdb);
@@ -96,7 +96,7 @@ namespace MediaBrowser.Controller.Entities
{
return "Game-Gamesdb-" + id;
}
- return base.GetUserDataKey();
+ return base.CreateUserDataKey();
}
public override IEnumerable<string> GetDeletePaths()
diff --git a/MediaBrowser.Controller/Entities/GameGenre.cs b/MediaBrowser.Controller/Entities/GameGenre.cs
index 825468954..16ca6e70a 100644
--- a/MediaBrowser.Controller/Entities/GameGenre.cs
+++ b/MediaBrowser.Controller/Entities/GameGenre.cs
@@ -10,7 +10,7 @@ namespace MediaBrowser.Controller.Entities
/// Gets the user data key.
/// </summary>
/// <returns>System.String.</returns>
- public override string GetUserDataKey()
+ protected override string CreateUserDataKey()
{
return "GameGenre-" + Name;
}
diff --git a/MediaBrowser.Controller/Entities/GameSystem.cs b/MediaBrowser.Controller/Entities/GameSystem.cs
index 758498977..cf6916763 100644
--- a/MediaBrowser.Controller/Entities/GameSystem.cs
+++ b/MediaBrowser.Controller/Entities/GameSystem.cs
@@ -35,13 +35,13 @@ namespace MediaBrowser.Controller.Entities
/// Gets the user data key.
/// </summary>
/// <returns>System.String.</returns>
- public override string GetUserDataKey()
+ protected override string CreateUserDataKey()
{
if (!string.IsNullOrEmpty(GameSystemName))
{
return "GameSystem-" + GameSystemName;
}
- return base.GetUserDataKey();
+ return base.CreateUserDataKey();
}
protected override bool GetBlockUnratedValue(UserPolicy config)
diff --git a/MediaBrowser.Controller/Entities/Genre.cs b/MediaBrowser.Controller/Entities/Genre.cs
index 05442f2b7..da5569afc 100644
--- a/MediaBrowser.Controller/Entities/Genre.cs
+++ b/MediaBrowser.Controller/Entities/Genre.cs
@@ -14,7 +14,7 @@ namespace MediaBrowser.Controller.Entities
/// Gets the user data key.
/// </summary>
/// <returns>System.String.</returns>
- public override string GetUserDataKey()
+ protected override string CreateUserDataKey()
{
return "Genre-" + Name;
}
diff --git a/MediaBrowser.Controller/Entities/Movies/Movie.cs b/MediaBrowser.Controller/Entities/Movies/Movie.cs
index 2fa5fc6e1..cfe008bd7 100644
--- a/MediaBrowser.Controller/Entities/Movies/Movie.cs
+++ b/MediaBrowser.Controller/Entities/Movies/Movie.cs
@@ -100,9 +100,9 @@ namespace MediaBrowser.Controller.Entities.Movies
/// Gets the user data key.
/// </summary>
/// <returns>System.String.</returns>
- public override string GetUserDataKey()
+ protected override string CreateUserDataKey()
{
- return this.GetProviderId(MetadataProviders.Tmdb) ?? this.GetProviderId(MetadataProviders.Imdb) ?? base.GetUserDataKey();
+ return this.GetProviderId(MetadataProviders.Tmdb) ?? this.GetProviderId(MetadataProviders.Imdb) ?? base.CreateUserDataKey();
}
protected override async Task<bool> RefreshedOwnedItems(MetadataRefreshOptions options, List<FileSystemInfo> fileSystemChildren, CancellationToken cancellationToken)
diff --git a/MediaBrowser.Controller/Entities/MusicVideo.cs b/MediaBrowser.Controller/Entities/MusicVideo.cs
index 4ca8cf1c5..771c62fd6 100644
--- a/MediaBrowser.Controller/Entities/MusicVideo.cs
+++ b/MediaBrowser.Controller/Entities/MusicVideo.cs
@@ -48,21 +48,6 @@ namespace MediaBrowser.Controller.Entities
}
/// <summary>
- /// TODO: Remove
- /// </summary>
- public string Artist
- {
- get { return Artists.FirstOrDefault(); }
- set
- {
- if (!string.IsNullOrEmpty(value) && !Artists.Contains(value, StringComparer.OrdinalIgnoreCase))
- {
- Artists.Add(value);
- }
- }
- }
-
- /// <summary>
/// Determines whether the specified name has artist.
/// </summary>
/// <param name="name">The name.</param>
@@ -76,9 +61,9 @@ namespace MediaBrowser.Controller.Entities
/// Gets the user data key.
/// </summary>
/// <returns>System.String.</returns>
- public override string GetUserDataKey()
+ protected override string CreateUserDataKey()
{
- return this.GetProviderId(MetadataProviders.Tmdb) ?? this.GetProviderId(MetadataProviders.Imdb) ?? base.GetUserDataKey();
+ return this.GetProviderId(MetadataProviders.Tmdb) ?? this.GetProviderId(MetadataProviders.Imdb) ?? base.CreateUserDataKey();
}
protected override bool GetBlockUnratedValue(UserPolicy config)
diff --git a/MediaBrowser.Controller/Entities/Person.cs b/MediaBrowser.Controller/Entities/Person.cs
index fe8d61836..6d256e81c 100644
--- a/MediaBrowser.Controller/Entities/Person.cs
+++ b/MediaBrowser.Controller/Entities/Person.cs
@@ -20,7 +20,7 @@ namespace MediaBrowser.Controller.Entities
/// Gets the user data key.
/// </summary>
/// <returns>System.String.</returns>
- public override string GetUserDataKey()
+ protected override string CreateUserDataKey()
{
return "Person-" + Name;
}
diff --git a/MediaBrowser.Controller/Entities/Studio.cs b/MediaBrowser.Controller/Entities/Studio.cs
index 0d934ad0a..58d46facc 100644
--- a/MediaBrowser.Controller/Entities/Studio.cs
+++ b/MediaBrowser.Controller/Entities/Studio.cs
@@ -20,7 +20,7 @@ namespace MediaBrowser.Controller.Entities
/// Gets the user data key.
/// </summary>
/// <returns>System.String.</returns>
- public override string GetUserDataKey()
+ protected override string CreateUserDataKey()
{
return "Studio-" + Name;
}
diff --git a/MediaBrowser.Controller/Entities/TV/Episode.cs b/MediaBrowser.Controller/Entities/TV/Episode.cs
index 6b67cebc8..a2731f6df 100644
--- a/MediaBrowser.Controller/Entities/TV/Episode.cs
+++ b/MediaBrowser.Controller/Entities/TV/Episode.cs
@@ -117,7 +117,7 @@ namespace MediaBrowser.Controller.Entities.TV
/// Gets the user data key.
/// </summary>
/// <returns>System.String.</returns>
- public override string GetUserDataKey()
+ protected override string CreateUserDataKey()
{
var series = Series;
@@ -126,7 +126,7 @@ namespace MediaBrowser.Controller.Entities.TV
return series.GetUserDataKey() + ParentIndexNumber.Value.ToString("000") + IndexNumber.Value.ToString("000");
}
- return base.GetUserDataKey();
+ return base.CreateUserDataKey();
}
/// <summary>
diff --git a/MediaBrowser.Controller/Entities/TV/Season.cs b/MediaBrowser.Controller/Entities/TV/Season.cs
index 54db12b6f..61d0aec60 100644
--- a/MediaBrowser.Controller/Entities/TV/Season.cs
+++ b/MediaBrowser.Controller/Entities/TV/Season.cs
@@ -92,7 +92,7 @@ namespace MediaBrowser.Controller.Entities.TV
/// Gets the user data key.
/// </summary>
/// <returns>System.String.</returns>
- public override string GetUserDataKey()
+ protected override string CreateUserDataKey()
{
if (Series != null)
{
@@ -100,7 +100,7 @@ namespace MediaBrowser.Controller.Entities.TV
return Series.GetUserDataKey() + seasonNo.ToString("000");
}
- return base.GetUserDataKey();
+ return base.CreateUserDataKey();
}
/// <summary>
diff --git a/MediaBrowser.Controller/Entities/TV/Series.cs b/MediaBrowser.Controller/Entities/TV/Series.cs
index 55cfffeb2..0ec9121f3 100644
--- a/MediaBrowser.Controller/Entities/TV/Series.cs
+++ b/MediaBrowser.Controller/Entities/TV/Series.cs
@@ -117,9 +117,9 @@ namespace MediaBrowser.Controller.Entities.TV
/// Gets the user data key.
/// </summary>
/// <returns>System.String.</returns>
- public override string GetUserDataKey()
+ protected override string CreateUserDataKey()
{
- return this.GetProviderId(MetadataProviders.Tvdb) ?? this.GetProviderId(MetadataProviders.Tvcom) ?? base.GetUserDataKey();
+ return this.GetProviderId(MetadataProviders.Tvdb) ?? this.GetProviderId(MetadataProviders.Tvcom) ?? base.CreateUserDataKey();
}
/// <summary>
diff --git a/MediaBrowser.Controller/Entities/Trailer.cs b/MediaBrowser.Controller/Entities/Trailer.cs
index 7a1eef8db..72e3640f2 100644
--- a/MediaBrowser.Controller/Entities/Trailer.cs
+++ b/MediaBrowser.Controller/Entities/Trailer.cs
@@ -79,7 +79,7 @@ namespace MediaBrowser.Controller.Entities
}
}
- public override string GetUserDataKey()
+ protected override string CreateUserDataKey()
{
var key = this.GetProviderId(MetadataProviders.Imdb) ?? this.GetProviderId(MetadataProviders.Tmdb);
@@ -96,7 +96,7 @@ namespace MediaBrowser.Controller.Entities
return key;
}
- return base.GetUserDataKey();
+ return base.CreateUserDataKey();
}
protected override bool GetBlockUnratedValue(UserPolicy config)
diff --git a/MediaBrowser.Controller/Entities/UserViewBuilder.cs b/MediaBrowser.Controller/Entities/UserViewBuilder.cs
index deb85ed6a..ac8be37d4 100644
--- a/MediaBrowser.Controller/Entities/UserViewBuilder.cs
+++ b/MediaBrowser.Controller/Entities/UserViewBuilder.cs
@@ -18,6 +18,7 @@ using System.IO;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
+using MoreLinq;
namespace MediaBrowser.Controller.Entities
{
@@ -412,7 +413,19 @@ namespace MediaBrowser.Controller.Entities
{
if (query.Recursive)
{
- return GetResult(GetRecursiveChildren(parent, user, new[] { CollectionType.Movies, CollectionType.BoxSets, string.Empty }).Where(i => i is Movie || i is BoxSet), parent, query);
+ var recursiveItems = GetRecursiveChildren(parent, user,
+ new[] {CollectionType.Movies, CollectionType.BoxSets, string.Empty})
+ .Where(i => i is Movie || i is BoxSet);
+
+ //var collections = _collectionManager.CollapseItemsWithinBoxSets(recursiveItems, user).ToList();
+
+ //if (collections.Count > 0)
+ //{
+ // recursiveItems.AddRange(_collectionManager.CollapseItemsWithinBoxSets(recursiveItems, user));
+ // recursiveItems = recursiveItems.DistinctBy(i => i.Id).ToList();
+ //}
+
+ return GetResult(recursiveItems, parent, query);
}
var list = new List<BaseItem>();
@@ -744,10 +757,10 @@ namespace MediaBrowser.Controller.Entities
InternalItemsQuery query)
where T : BaseItem
{
- return SortAndFilter(items, queryParent, totalRecordLimit, query, _libraryManager, _userDataManager);
+ return FilterAndSort(items, queryParent, totalRecordLimit, query, _libraryManager, _userDataManager);
}
- public static QueryResult<BaseItem> SortAndFilter(IEnumerable<BaseItem> items,
+ public static QueryResult<BaseItem> FilterAndSort(IEnumerable<BaseItem> items,
BaseItem queryParent,
int? totalRecordLimit,
InternalItemsQuery query,
diff --git a/MediaBrowser.Controller/Entities/Year.cs b/MediaBrowser.Controller/Entities/Year.cs
index 8deb930e8..11b0ce3d2 100644
--- a/MediaBrowser.Controller/Entities/Year.cs
+++ b/MediaBrowser.Controller/Entities/Year.cs
@@ -13,7 +13,7 @@ namespace MediaBrowser.Controller.Entities
/// Gets the user data key.
/// </summary>
/// <returns>System.String.</returns>
- public override string GetUserDataKey()
+ protected override string CreateUserDataKey()
{
return "Year-" + Name;
}
diff --git a/MediaBrowser.Controller/LiveTv/LiveTvAudioRecording.cs b/MediaBrowser.Controller/LiveTv/LiveTvAudioRecording.cs
index f29204689..5cfdb5dbf 100644
--- a/MediaBrowser.Controller/LiveTv/LiveTvAudioRecording.cs
+++ b/MediaBrowser.Controller/LiveTv/LiveTvAudioRecording.cs
@@ -12,7 +12,7 @@ namespace MediaBrowser.Controller.LiveTv
/// Gets the user data key.
/// </summary>
/// <returns>System.String.</returns>
- public override string GetUserDataKey()
+ protected override string CreateUserDataKey()
{
var name = GetClientTypeName();
diff --git a/MediaBrowser.Controller/LiveTv/LiveTvChannel.cs b/MediaBrowser.Controller/LiveTv/LiveTvChannel.cs
index b4b9fa77b..72b497026 100644
--- a/MediaBrowser.Controller/LiveTv/LiveTvChannel.cs
+++ b/MediaBrowser.Controller/LiveTv/LiveTvChannel.cs
@@ -16,7 +16,7 @@ namespace MediaBrowser.Controller.LiveTv
/// Gets the user data key.
/// </summary>
/// <returns>System.String.</returns>
- public override string GetUserDataKey()
+ protected override string CreateUserDataKey()
{
return GetClientTypeName() + "-" + Name;
}
diff --git a/MediaBrowser.Controller/LiveTv/LiveTvProgram.cs b/MediaBrowser.Controller/LiveTv/LiveTvProgram.cs
index 74cf950d4..6308a71dc 100644
--- a/MediaBrowser.Controller/LiveTv/LiveTvProgram.cs
+++ b/MediaBrowser.Controller/LiveTv/LiveTvProgram.cs
@@ -16,7 +16,7 @@ namespace MediaBrowser.Controller.LiveTv
/// Gets the user data key.
/// </summary>
/// <returns>System.String.</returns>
- public override string GetUserDataKey()
+ protected override string CreateUserDataKey()
{
return GetClientTypeName() + "-" + Name;
}
diff --git a/MediaBrowser.Controller/LiveTv/LiveTvVideoRecording.cs b/MediaBrowser.Controller/LiveTv/LiveTvVideoRecording.cs
index 91edc06c1..098400b50 100644
--- a/MediaBrowser.Controller/LiveTv/LiveTvVideoRecording.cs
+++ b/MediaBrowser.Controller/LiveTv/LiveTvVideoRecording.cs
@@ -12,7 +12,7 @@ namespace MediaBrowser.Controller.LiveTv
/// Gets the user data key.
/// </summary>
/// <returns>System.String.</returns>
- public override string GetUserDataKey()
+ protected override string CreateUserDataKey()
{
var name = GetClientTypeName();
diff --git a/MediaBrowser.Providers/Manager/MetadataService.cs b/MediaBrowser.Providers/Manager/MetadataService.cs
index f55eddfcf..fc329d64c 100644
--- a/MediaBrowser.Providers/Manager/MetadataService.cs
+++ b/MediaBrowser.Providers/Manager/MetadataService.cs
@@ -437,8 +437,7 @@ namespace MediaBrowser.Providers.Manager
localProviders.Count == 0 &&
refreshResult.UpdateType > ItemUpdateType.None)
{
- // TODO: If the new metadata from above has some blank data, this
- // can cause old data to get filled into those empty fields
+ // TODO: If the new metadata from above has some blank data, this can cause old data to get filled into those empty fields
MergeData(item, temp, new List<MetadataFields>(), false, true);
}
diff --git a/MediaBrowser.Server.Implementations/Collections/ManualCollectionsFolder.cs b/MediaBrowser.Server.Implementations/Collections/ManualCollectionsFolder.cs
index fa4de728b..bbe37cb50 100644
--- a/MediaBrowser.Server.Implementations/Collections/ManualCollectionsFolder.cs
+++ b/MediaBrowser.Server.Implementations/Collections/ManualCollectionsFolder.cs
@@ -1,4 +1,5 @@
using MediaBrowser.Controller.Entities;
+using MediaBrowser.Controller.Entities.Movies;
using System.Linq;
namespace MediaBrowser.Server.Implementations.Collections
@@ -14,7 +15,8 @@ namespace MediaBrowser.Server.Implementations.Collections
public override bool IsVisible(User user)
{
return base.IsVisible(user) && GetChildren(user, false)
- .Any();
+ .OfType<BoxSet>()
+ .Any(i => i.IsVisible(user));
}
public override bool IsHidden
diff --git a/MediaBrowser.Server.Implementations/FileOrganization/NameUtils.cs b/MediaBrowser.Server.Implementations/FileOrganization/NameUtils.cs
index 795be1e2f..624133d4f 100644
--- a/MediaBrowser.Server.Implementations/FileOrganization/NameUtils.cs
+++ b/MediaBrowser.Server.Implementations/FileOrganization/NameUtils.cs
@@ -54,9 +54,6 @@ namespace MediaBrowser.Server.Implementations.FileOrganization
private static string GetComparableName(string name)
{
- // TODO: Improve this - should ignore spaces, periods, underscores, most likely all symbols and
- // possibly remove sorting words like "the", "and", etc.
-
name = RemoveDiacritics(name);
name = " " + name + " ";
diff --git a/MediaBrowser.Server.Implementations/Library/UserViewManager.cs b/MediaBrowser.Server.Implementations/Library/UserViewManager.cs
index bd0f44adc..d8c5f85c0 100644
--- a/MediaBrowser.Server.Implementations/Library/UserViewManager.cs
+++ b/MediaBrowser.Server.Implementations/Library/UserViewManager.cs
@@ -88,24 +88,10 @@ namespace MediaBrowser.Server.Implementations.Library
list.Add(await GetUserView(CollectionType.Games, string.Empty, cancellationToken).ConfigureAwait(false));
}
- if (user.Configuration.DisplayCollectionsView)
+ if (foldersWithViewTypes.Any(i => string.Equals(i.CollectionType, CollectionType.BoxSets, StringComparison.OrdinalIgnoreCase)))
{
- bool showCollectionView;
- if (_config.Configuration.EnableLegacyCollections)
- {
- showCollectionView = folders
- .Except(standaloneFolders)
- .SelectMany(i => i.GetRecursiveChildren(user, false)).OfType<BoxSet>().Any();
- }
- else
- {
- showCollectionView = _collectionManager.GetCollections(user).Any();
- }
-
- if (showCollectionView)
- {
- list.Add(await GetUserView(CollectionType.BoxSets, string.Empty, cancellationToken).ConfigureAwait(false));
- }
+ //list.Add(_collectionManager.GetCollectionsFolder(user.Id.ToString("N")));
+ list.Add(await GetUserView(CollectionType.BoxSets, string.Empty, cancellationToken).ConfigureAwait(false));
}
if (foldersWithViewTypes.Any(i => string.Equals(i.CollectionType, CollectionType.Playlists, StringComparison.OrdinalIgnoreCase)))
diff --git a/MediaBrowser.Server.Implementations/Localization/Server/server.json b/MediaBrowser.Server.Implementations/Localization/Server/server.json
index 34a0b327d..15bc62412 100644
--- a/MediaBrowser.Server.Implementations/Localization/Server/server.json
+++ b/MediaBrowser.Server.Implementations/Localization/Server/server.json
@@ -55,6 +55,8 @@
"HeaderAudio": "Audio",
"HeaderVideo": "Video",
"HeaderPaths": "Paths",
+ "HeaderSyncRequiresSupporterMembership": "Sync Requires a Supporter Membership",
+ "HeaderEnjoyDayTrial": "Enjoy a 14 Day Free Trial",
"LabelSyncTempPath": "Temporary file path:",
"LabelSyncTempPathHelp": "Specify a custom sync working folder. Converted media created during the sync process will be stored here.",
"LabelCustomCertificatePath": "Custom certificate path:",
diff --git a/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj b/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj
index e95bd6503..30384d1ff 100644
--- a/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj
+++ b/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj
@@ -306,6 +306,7 @@
<Compile Include="Sorting\VideoBitRateComparer.cs" />
<Compile Include="Sync\AppSyncProvider.cs" />
<Compile Include="Sync\CloudSyncProvider.cs" />
+ <Compile Include="Sync\SyncRegistrationInfo.cs" />
<Compile Include="Sync\SyncConfig.cs" />
<Compile Include="Sync\SyncJobProcessor.cs" />
<Compile Include="Sync\SyncManager.cs" />
diff --git a/MediaBrowser.Server.Implementations/Sync/SyncJobProcessor.cs b/MediaBrowser.Server.Implementations/Sync/SyncJobProcessor.cs
index 716584084..b926ee338 100644
--- a/MediaBrowser.Server.Implementations/Sync/SyncJobProcessor.cs
+++ b/MediaBrowser.Server.Implementations/Sync/SyncJobProcessor.cs
@@ -90,7 +90,7 @@ namespace MediaBrowser.Server.Implementations.Sync
continue;
}
- var index = jobItems.Count == 0 ?
+ var index = jobItems.Count == 0 ?
0 :
(jobItems.Select(i => i.JobItemIndex).Max() + 1);
@@ -348,10 +348,20 @@ namespace MediaBrowser.Server.Implementations.Sync
private void CleanDeadSyncFiles()
{
// TODO
+ // Clean files in sync temp folder that are not linked to any sync jobs
}
public async Task SyncJobItems(SyncJobItem[] items, bool enableConversion, IProgress<double> progress, CancellationToken cancellationToken)
{
+ if (items.Length > 0)
+ {
+ if (!SyncRegistrationInfo.Instance.IsRegistered)
+ {
+ _logger.Debug("Cancelling sync job processing. Please obtain a supporter membership.");
+ return;
+ }
+ }
+
var numComplete = 0;
foreach (var item in items)
diff --git a/MediaBrowser.Server.Implementations/Sync/SyncRegistrationInfo.cs b/MediaBrowser.Server.Implementations/Sync/SyncRegistrationInfo.cs
new file mode 100644
index 000000000..40b84b1c2
--- /dev/null
+++ b/MediaBrowser.Server.Implementations/Sync/SyncRegistrationInfo.cs
@@ -0,0 +1,31 @@
+using MediaBrowser.Common.Security;
+using System.Threading.Tasks;
+
+namespace MediaBrowser.Server.Implementations.Sync
+{
+ public class SyncRegistrationInfo : IRequiresRegistration
+ {
+ private readonly ISecurityManager _securityManager;
+
+ public static SyncRegistrationInfo Instance;
+
+ public SyncRegistrationInfo(ISecurityManager securityManager)
+ {
+ _securityManager = securityManager;
+ Instance = this;
+ }
+
+ private bool _registered;
+ public bool IsRegistered
+ {
+ get { return _registered; }
+ }
+
+ public async Task LoadRegistrationInfoAsync()
+ {
+ var info = await _securityManager.GetRegistrationStatus("sync").ConfigureAwait(false);
+
+ _registered = info.IsValid;
+ }
+ }
+}
diff --git a/Nuget/MediaBrowser.Common.Internal.nuspec b/Nuget/MediaBrowser.Common.Internal.nuspec
index 6de880179..1a7dc626a 100644
--- a/Nuget/MediaBrowser.Common.Internal.nuspec
+++ b/Nuget/MediaBrowser.Common.Internal.nuspec
@@ -2,7 +2,7 @@
<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
<metadata>
<id>MediaBrowser.Common.Internal</id>
- <version>3.0.545</version>
+ <version>3.0.546</version>
<title>MediaBrowser.Common.Internal</title>
<authors>Luke</authors>
<owners>ebr,Luke,scottisafool</owners>
@@ -12,7 +12,7 @@
<description>Contains common components shared by Media Browser Theater and Media Browser Server. Not intended for plugin developer consumption.</description>
<copyright>Copyright © Media Browser 2013</copyright>
<dependencies>
- <dependency id="MediaBrowser.Common" version="3.0.545" />
+ <dependency id="MediaBrowser.Common" version="3.0.546" />
<dependency id="NLog" version="3.1.0.0" />
<dependency id="SimpleInjector" version="2.6.1" />
</dependencies>
diff --git a/Nuget/MediaBrowser.Common.nuspec b/Nuget/MediaBrowser.Common.nuspec
index 94445107e..3eb6621b3 100644
--- a/Nuget/MediaBrowser.Common.nuspec
+++ b/Nuget/MediaBrowser.Common.nuspec
@@ -2,7 +2,7 @@
<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
<metadata>
<id>MediaBrowser.Common</id>
- <version>3.0.545</version>
+ <version>3.0.546</version>
<title>MediaBrowser.Common</title>
<authors>Media Browser Team</authors>
<owners>ebr,Luke,scottisafool</owners>
diff --git a/Nuget/MediaBrowser.Model.Signed.nuspec b/Nuget/MediaBrowser.Model.Signed.nuspec
index c441d3b63..f73b375a2 100644
--- a/Nuget/MediaBrowser.Model.Signed.nuspec
+++ b/Nuget/MediaBrowser.Model.Signed.nuspec
@@ -2,7 +2,7 @@
<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
<metadata>
<id>MediaBrowser.Model.Signed</id>
- <version>3.0.545</version>
+ <version>3.0.546</version>
<title>MediaBrowser.Model - Signed Edition</title>
<authors>Media Browser Team</authors>
<owners>ebr,Luke,scottisafool</owners>
diff --git a/Nuget/MediaBrowser.Server.Core.nuspec b/Nuget/MediaBrowser.Server.Core.nuspec
index 5409d970d..451a37654 100644
--- a/Nuget/MediaBrowser.Server.Core.nuspec
+++ b/Nuget/MediaBrowser.Server.Core.nuspec
@@ -2,7 +2,7 @@
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
<metadata>
<id>MediaBrowser.Server.Core</id>
- <version>3.0.545</version>
+ <version>3.0.546</version>
<title>Media Browser.Server.Core</title>
<authors>Media Browser Team</authors>
<owners>ebr,Luke,scottisafool</owners>
@@ -12,7 +12,7 @@
<description>Contains core components required to build plugins for Media Browser Server.</description>
<copyright>Copyright © Media Browser 2013</copyright>
<dependencies>
- <dependency id="MediaBrowser.Common" version="3.0.545" />
+ <dependency id="MediaBrowser.Common" version="3.0.546" />
</dependencies>
</metadata>
<files>