version bump

This commit is contained in:
Luke Pulverenti 2015-12-27 16:49:04 -05:00
parent baf0b7a7ce
commit 9750739a86
4 changed files with 199 additions and 85 deletions

View File

@ -1,5 +1,4 @@
using MediaBrowser.Common.Extensions;
using MediaBrowser.Common.IO;
using MediaBrowser.Controller.Channels;
using MediaBrowser.Controller.Collections;
using MediaBrowser.Controller.Configuration;
@ -24,6 +23,7 @@ using System.Runtime.Serialization;
using System.Threading;
using System.Threading.Tasks;
using CommonIO;
using MediaBrowser.Model.LiveTv;
namespace MediaBrowser.Controller.Entities
{
@ -34,6 +34,7 @@ namespace MediaBrowser.Controller.Entities
{
protected BaseItem()
{
Tags = new List<string>();
Genres = new List<string>();
Studios = new List<string>();
ProviderIds = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
@ -44,7 +45,7 @@ namespace MediaBrowser.Controller.Entities
/// <summary>
/// The supported image extensions
/// </summary>
public static readonly string[] SupportedImageExtensions = { ".png", ".jpg", ".jpeg" };
public static readonly string[] SupportedImageExtensions = { ".png", ".jpg", ".jpeg", ".tbn", ".gif" };
public static readonly List<string> SupportedImageExtensionsList = SupportedImageExtensions.ToList();
@ -103,7 +104,8 @@ namespace MediaBrowser.Controller.Entities
/// Gets or sets the name.
/// </summary>
/// <value>The name.</value>
public string Name
[IgnoreDataMember]
public virtual string Name
{
get
{
@ -122,14 +124,23 @@ namespace MediaBrowser.Controller.Entities
/// Gets or sets the id.
/// </summary>
/// <value>The id.</value>
[IgnoreDataMember]
public Guid Id { get; set; }
/// <summary>
/// Gets or sets a value indicating whether this instance is hd.
/// </summary>
/// <value><c>true</c> if this instance is hd; otherwise, <c>false</c>.</value>
[IgnoreDataMember]
public bool? IsHD { get; set; }
/// <summary>
/// Gets or sets the audio.
/// </summary>
/// <value>The audio.</value>
[IgnoreDataMember]
public ProgramAudio? Audio { 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.
@ -149,6 +160,7 @@ namespace MediaBrowser.Controller.Entities
/// Gets or sets the path.
/// </summary>
/// <value>The path.</value>
[IgnoreDataMember]
public virtual string Path { get; set; }
[IgnoreDataMember]
@ -173,7 +185,7 @@ namespace MediaBrowser.Controller.Entities
}
/// <summary>
/// Id of the program.
/// If this content came from an external service, the id of the content on that service
/// </summary>
[IgnoreDataMember]
public string ExternalId
@ -201,11 +213,6 @@ namespace MediaBrowser.Controller.Entities
}
}
public virtual bool IsHiddenFromUser(User user)
{
return false;
}
[IgnoreDataMember]
public virtual bool IsOwnedItem
{
@ -325,12 +332,14 @@ namespace MediaBrowser.Controller.Entities
/// Gets or sets the date created.
/// </summary>
/// <value>The date created.</value>
[IgnoreDataMember]
public DateTime DateCreated { get; set; }
/// <summary>
/// Gets or sets the date modified.
/// </summary>
/// <value>The date modified.</value>
[IgnoreDataMember]
public DateTime DateModified { get; set; }
public DateTime DateLastSaved { get; set; }
@ -407,6 +416,7 @@ namespace MediaBrowser.Controller.Entities
/// Gets or sets the name of the forced sort.
/// </summary>
/// <value>The name of the forced sort.</value>
[IgnoreDataMember]
public string ForcedSortName
{
get { return _forcedSortName; }
@ -447,10 +457,7 @@ namespace MediaBrowser.Controller.Entities
{
var idString = Id.ToString("N");
if (ConfigurationManager.Configuration.EnableLibraryMetadataSubFolder)
{
basePath = System.IO.Path.Combine(basePath, "library");
}
basePath = System.IO.Path.Combine(basePath, "library");
return System.IO.Path.Combine(basePath, idString.Substring(0, 2), idString);
}
@ -493,6 +500,7 @@ namespace MediaBrowser.Controller.Entities
return sortable;
}
[IgnoreDataMember]
public Guid ParentId { get; set; }
/// <summary>
@ -502,15 +510,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
{
@ -525,16 +525,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();
}
}
@ -546,19 +558,20 @@ 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>
/// When the item first debuted. For movies this could be premiere date, episodes would be first aired
/// </summary>
/// <value>The premiere date.</value>
[IgnoreDataMember]
public DateTime? PremiereDate { get; set; }
/// <summary>
@ -572,31 +585,35 @@ namespace MediaBrowser.Controller.Entities
/// Gets or sets the display type of the media.
/// </summary>
/// <value>The display type of the media.</value>
[IgnoreDataMember]
public string DisplayMediaType { get; set; }
/// <summary>
/// Gets or sets the official rating.
/// </summary>
/// <value>The official rating.</value>
[IgnoreDataMember]
public string OfficialRating { get; set; }
/// <summary>
/// Gets or sets the official rating description.
/// </summary>
/// <value>The official rating description.</value>
[IgnoreDataMember]
public string OfficialRatingDescription { get; set; }
/// <summary>
/// Gets or sets the custom rating.
/// </summary>
/// <value>The custom rating.</value>
//[IgnoreDataMember]
[IgnoreDataMember]
public string CustomRating { get; set; }
/// <summary>
/// Gets or sets the overview.
/// </summary>
/// <value>The overview.</value>
[IgnoreDataMember]
public string Overview { get; set; }
/// <summary>
@ -609,37 +626,48 @@ namespace MediaBrowser.Controller.Entities
/// Gets or sets the genres.
/// </summary>
/// <value>The genres.</value>
[IgnoreDataMember]
public List<string> Genres { get; set; }
/// <summary>
/// Gets or sets the tags.
/// </summary>
/// <value>The tags.</value>
public List<string> Tags { get; set; }
/// <summary>
/// Gets or sets the home page URL.
/// </summary>
/// <value>The home page URL.</value>
[IgnoreDataMember]
public string HomePageUrl { get; set; }
/// <summary>
/// Gets or sets the community rating.
/// </summary>
/// <value>The community rating.</value>
//[IgnoreDataMember]
[IgnoreDataMember]
public float? CommunityRating { get; set; }
/// <summary>
/// Gets or sets the community rating vote count.
/// </summary>
/// <value>The community rating vote count.</value>
[IgnoreDataMember]
public int? VoteCount { get; set; }
/// <summary>
/// Gets or sets the run time ticks.
/// </summary>
/// <value>The run time ticks.</value>
[IgnoreDataMember]
public long? RunTimeTicks { get; set; }
/// <summary>
/// Gets or sets the production year.
/// </summary>
/// <value>The production year.</value>
[IgnoreDataMember]
public int? ProductionYear { get; set; }
/// <summary>
@ -647,19 +675,34 @@ namespace MediaBrowser.Controller.Entities
/// This could be episode number, album track number, etc.
/// </summary>
/// <value>The index number.</value>
//[IgnoreDataMember]
[IgnoreDataMember]
public int? IndexNumber { get; set; }
/// <summary>
/// For an episode this could be the season number, or for a song this could be the disc number.
/// </summary>
/// <value>The parent index number.</value>
[IgnoreDataMember]
public int? ParentIndexNumber { get; set; }
[IgnoreDataMember]
public virtual string OfficialRatingForComparison
public string OfficialRatingForComparison
{
get { return OfficialRating; }
get
{
if (!string.IsNullOrWhiteSpace(OfficialRating))
{
return OfficialRating;
}
var parent = DisplayParent;
if (parent != null)
{
return parent.OfficialRatingForComparison;
}
return null;
}
}
[IgnoreDataMember]
@ -721,21 +764,21 @@ namespace MediaBrowser.Controller.Entities
return LibraryManager.ResolvePaths(files, directoryService, null)
.OfType<Audio.Audio>()
.Select(audio =>
{
// Try to retrieve it from the db. If we don't find it, use the resolved version
var dbItem = LibraryManager.GetItemById(audio.Id) as Audio.Audio;
if (dbItem != null)
{
audio = dbItem;
}
// Try to retrieve it from the db. If we don't find it, use the resolved version
var dbItem = LibraryManager.GetItemById(audio.Id) as Audio.Audio;
audio.ExtraType = ExtraType.ThemeSong;
if (dbItem != null)
{
audio = dbItem;
}
return audio;
audio.ExtraType = ExtraType.ThemeSong;
// Sort them so that the list can be easily compared for changes
}).OrderBy(i => i.Path).ToList();
return audio;
// Sort them so that the list can be easily compared for changes
}).OrderBy(i => i.Path).ToList();
}
/// <summary>
@ -751,21 +794,21 @@ namespace MediaBrowser.Controller.Entities
return LibraryManager.ResolvePaths(files, directoryService, null)
.OfType<Video>()
.Select(item =>
{
// Try to retrieve it from the db. If we don't find it, use the resolved version
var dbItem = LibraryManager.GetItemById(item.Id) as Video;
if (dbItem != null)
{
item = dbItem;
}
// Try to retrieve it from the db. If we don't find it, use the resolved version
var dbItem = LibraryManager.GetItemById(item.Id) as Video;
item.ExtraType = ExtraType.ThemeVideo;
if (dbItem != null)
{
item = dbItem;
}
return item;
item.ExtraType = ExtraType.ThemeVideo;
// Sort them so that the list can be easily compared for changes
}).OrderBy(i => i.Path).ToList();
return item;
// Sort them so that the list can be easily compared for changes
}).OrderBy(i => i.Path).ToList();
}
public Task RefreshMetadata(CancellationToken cancellationToken)
@ -821,7 +864,7 @@ namespace MediaBrowser.Controller.Entities
[IgnoreDataMember]
protected virtual bool SupportsOwnedItems
{
get { return IsFolder || Parent != null; }
get { return IsFolder || GetParent() != null; }
}
[IgnoreDataMember]
@ -846,7 +889,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)
@ -1008,7 +1051,7 @@ namespace MediaBrowser.Controller.Entities
if (string.IsNullOrWhiteSpace(lang))
{
lang = Parents
lang = GetParents()
.Select(i => i.PreferredMetadataLanguage)
.FirstOrDefault(i => !string.IsNullOrWhiteSpace(i));
}
@ -1038,7 +1081,7 @@ namespace MediaBrowser.Controller.Entities
if (string.IsNullOrWhiteSpace(lang))
{
lang = Parents
lang = GetParents()
.Select(i => i.PreferredMetadataCountryCode)
.FirstOrDefault(i => !string.IsNullOrWhiteSpace(i));
}
@ -1119,6 +1162,23 @@ namespace MediaBrowser.Controller.Entities
}
public int? GetParentalRatingValue()
{
var rating = CustomRating;
if (string.IsNullOrWhiteSpace(rating))
{
rating = OfficialRating;
}
if (string.IsNullOrWhiteSpace(rating))
{
return null;
}
return LocalizationManager.GetRatingLevel(rating);
}
public int? GetInheritedParentalRatingValue()
{
var rating = CustomRatingForComparison;
@ -1156,6 +1216,11 @@ namespace MediaBrowser.Controller.Entities
return true;
}
public virtual UnratedItem GetBlockUnratedType()
{
return UnratedItem.Other;
}
/// <summary>
/// Gets the block unrated value.
/// </summary>
@ -1174,7 +1239,7 @@ namespace MediaBrowser.Controller.Entities
return false;
}
return config.BlockUnratedItems.Contains(UnratedItem.Other);
return config.BlockUnratedItems.Contains(GetBlockUnratedType());
}
/// <summary>
@ -1206,14 +1271,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))
{
@ -1307,15 +1372,6 @@ namespace MediaBrowser.Controller.Entities
return null;
}
/// <summary>
/// Adds a person to the item
/// </summary>
/// <param name="person">The person.</param>
/// <exception cref="System.ArgumentNullException"></exception>
public void AddPerson(PersonInfo person)
{
}
/// <summary>
/// Adds a studio to the item
/// </summary>
@ -1875,5 +1931,54 @@ namespace MediaBrowser.Controller.Entities
DateLastSaved.Ticks.ToString(CultureInfo.InvariantCulture)
};
}
public virtual IEnumerable<Guid> GetAncestorIds()
{
return GetParents().Select(i => i.Id).Concat(LibraryManager.GetCollectionFolders(this).Select(i => i.Id));
}
public BaseItem GetTopParent()
{
if (IsTopParent)
{
return this;
}
return GetParents().FirstOrDefault(i => i.IsTopParent);
}
[IgnoreDataMember]
public virtual bool IsTopParent
{
get
{
if (GetParent() is AggregateFolder || this is Channel || this is BasePluginFolder)
{
return true;
}
var view = this as UserView;
if (view != null && string.Equals(view.ViewType, CollectionType.LiveTv, StringComparison.OrdinalIgnoreCase))
{
return true;
}
return false;
}
}
[IgnoreDataMember]
public virtual bool SupportsAncestors
{
get
{
return true;
}
}
public virtual IEnumerable<Guid> GetIdsForAncestorQuery()
{
return new[] { Id };
}
}
}
}

View File

@ -162,6 +162,7 @@
<Compile Include="Entities\IHasThemeMedia.cs" />
<Compile Include="Entities\IHasTrailers.cs" />
<Compile Include="Entities\IHasUserData.cs" />
<Compile Include="Entities\IHiddenFromDisplay.cs" />
<Compile Include="Entities\IItemByName.cs" />
<Compile Include="Entities\ILibraryItem.cs" />
<Compile Include="Entities\ImageSourceInfo.cs" />

View File

@ -363,7 +363,7 @@ namespace MediaBrowser.Server.Startup.Common
{
var migrations = new List<IVersionMigration>
{
new Release5767(ServerConfigurationManager, TaskManager)
new DbMigration(ServerConfigurationManager, TaskManager)
};
foreach (var task in migrations)
@ -419,7 +419,7 @@ namespace MediaBrowser.Server.Startup.Common
UserManager = new UserManager(LogManager.GetLogger("UserManager"), ServerConfigurationManager, UserRepository, XmlSerializer, NetworkManager, () => ImageProcessor, () => DtoService, () => ConnectManager, this, JsonSerializer, FileSystemManager);
RegisterSingleInstance(UserManager);
LibraryManager = new LibraryManager(Logger, TaskManager, UserManager, ServerConfigurationManager, UserDataManager, () => LibraryMonitor, FileSystemManager, () => ProviderManager);
LibraryManager = new LibraryManager(Logger, TaskManager, UserManager, ServerConfigurationManager, UserDataManager, () => LibraryMonitor, FileSystemManager, () => ProviderManager, () => UserViewManager);
RegisterSingleInstance(LibraryManager);
var musicManager = new MusicManager(LibraryManager);
@ -465,7 +465,7 @@ namespace MediaBrowser.Server.Startup.Common
ConnectManager = new ConnectManager(LogManager.GetLogger("Connect"), ApplicationPaths, JsonSerializer, encryptionManager, HttpClient, this, ServerConfigurationManager, UserManager, ProviderManager, SecurityManager, FileSystemManager);
RegisterSingleInstance(ConnectManager);
DeviceManager = new DeviceManager(new DeviceRepository(ApplicationPaths, JsonSerializer, LogManager.GetLogger("DeviceManager"), FileSystemManager), UserManager, FileSystemManager, LibraryMonitor, ConfigurationManager, LogManager.GetLogger("DeviceManager"), NetworkManager);
DeviceManager = new DeviceManager(new DeviceRepository(ApplicationPaths, JsonSerializer, LogManager.GetLogger("DeviceManager"), FileSystemManager), UserManager, FileSystemManager, LibraryMonitor, ServerConfigurationManager, LogManager.GetLogger("DeviceManager"), NetworkManager);
RegisterSingleInstance(DeviceManager);
var newsService = new Implementations.News.NewsService(ApplicationPaths, JsonSerializer);
@ -503,7 +503,7 @@ namespace MediaBrowser.Server.Startup.Common
UserViewManager = new UserViewManager(LibraryManager, LocalizationManager, UserManager, ChannelManager, LiveTvManager, ServerConfigurationManager);
RegisterSingleInstance(UserViewManager);
var contentDirectory = new ContentDirectory(dlnaManager, UserDataManager, ImageProcessor, LibraryManager, ServerConfigurationManager, UserManager, LogManager.GetLogger("UpnpContentDirectory"), HttpClient, LocalizationManager, ChannelManager, MediaSourceManager);
var contentDirectory = new ContentDirectory(dlnaManager, UserDataManager, ImageProcessor, LibraryManager, ServerConfigurationManager, UserManager, LogManager.GetLogger("UpnpContentDirectory"), HttpClient, LocalizationManager, ChannelManager, MediaSourceManager, UserViewManager);
RegisterSingleInstance<IContentDirectory>(contentDirectory);
var mediaRegistrar = new MediaReceiverRegistrar(LogManager.GetLogger("MediaReceiverRegistrar"), HttpClient, ServerConfigurationManager);
@ -640,11 +640,19 @@ namespace MediaBrowser.Server.Startup.Common
/// <returns>Task{IUserRepository}.</returns>
private async Task<IUserRepository> GetUserRepository()
{
var repo = new SqliteUserRepository(LogManager, ApplicationPaths, JsonSerializer);
try
{
var repo = new SqliteUserRepository(LogManager, ApplicationPaths, JsonSerializer);
await repo.Initialize().ConfigureAwait(false);
await repo.Initialize().ConfigureAwait(false);
return repo;
return repo;
}
catch (Exception ex)
{
Logger.ErrorException("Error opening user db", ex);
throw;
}
}
/// <summary>
@ -1146,7 +1154,7 @@ namespace MediaBrowser.Server.Startup.Common
get
{
var localAddresses = NetworkManager.GetLocalIpAddresses()
.Select(i => i.ToString())
.Select(i => i.ToString())
.ToList();
var httpServerAddresses = HttpServer.LocalEndPoints

View File

@ -1,4 +1,4 @@
using System.Reflection;
//[assembly: AssemblyVersion("3.0.*")]
[assembly: AssemblyVersion("3.0.5800.0")]
[assembly: AssemblyVersion("3.0.*")]
//[assembly: AssemblyVersion("3.0.5800.0")]