mirror of
https://github.com/jellyfin/jellyfin.git
synced 2025-07-09 03:04:24 -04:00
fix merge conflits
This commit is contained in:
parent
aeb4c520be
commit
155c519080
@ -28,6 +28,7 @@ namespace MediaBrowser.Controller.Entities
|
|||||||
|
|
||||||
public List<Guid> ThemeSongIds { get; set; }
|
public List<Guid> ThemeSongIds { get; set; }
|
||||||
public List<Guid> ThemeVideoIds { get; set; }
|
public List<Guid> ThemeVideoIds { get; set; }
|
||||||
|
public List<string> Tags { get; set; }
|
||||||
|
|
||||||
public Folder()
|
public Folder()
|
||||||
{
|
{
|
||||||
@ -35,6 +36,7 @@ namespace MediaBrowser.Controller.Entities
|
|||||||
|
|
||||||
ThemeSongIds = new List<Guid>();
|
ThemeSongIds = new List<Guid>();
|
||||||
ThemeVideoIds = new List<Guid>();
|
ThemeVideoIds = new List<Guid>();
|
||||||
|
Tags = new List<string>();
|
||||||
}
|
}
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[IgnoreDataMember]
|
||||||
@ -149,15 +151,7 @@ namespace MediaBrowser.Controller.Entities
|
|||||||
|
|
||||||
await LibraryManager.CreateItem(item, cancellationToken).ConfigureAwait(false);
|
await LibraryManager.CreateItem(item, cancellationToken).ConfigureAwait(false);
|
||||||
|
|
||||||
if (!EnableNewFolderQuerying())
|
await ItemRepository.SaveChildren(Id, ActualChildren.Select(i => i.Id).ToList(), cancellationToken).ConfigureAwait(false);
|
||||||
{
|
|
||||||
await ItemRepository.SaveChildren(Id, ActualChildren.Select(i => i.Id).ToList(), cancellationToken).ConfigureAwait(false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private static bool EnableNewFolderQuerying()
|
|
||||||
{
|
|
||||||
return ConfigurationManager.Configuration.MigrationVersion >= 1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void AddChildrenInternal(IEnumerable<BaseItem> children)
|
protected void AddChildrenInternal(IEnumerable<BaseItem> children)
|
||||||
@ -202,6 +196,21 @@ namespace MediaBrowser.Controller.Entities
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[IgnoreDataMember]
|
||||||
|
public override string OfficialRatingForComparison
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
// Never want folders to be blocked by "BlockNotRated"
|
||||||
|
if (this is Series)
|
||||||
|
{
|
||||||
|
return base.OfficialRatingForComparison;
|
||||||
|
}
|
||||||
|
|
||||||
|
return !string.IsNullOrWhiteSpace(base.OfficialRatingForComparison) ? base.OfficialRatingForComparison : "None";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Removes the child.
|
/// Removes the child.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -215,12 +224,7 @@ namespace MediaBrowser.Controller.Entities
|
|||||||
|
|
||||||
item.SetParent(null);
|
item.SetParent(null);
|
||||||
|
|
||||||
if (!EnableNewFolderQuerying())
|
return ItemRepository.SaveChildren(Id, ActualChildren.Select(i => i.Id).ToList(), cancellationToken);
|
||||||
{
|
|
||||||
return ItemRepository.SaveChildren(Id, ActualChildren.Select(i => i.Id).ToList(), cancellationToken);
|
|
||||||
}
|
|
||||||
|
|
||||||
return Task.FromResult(true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -453,25 +457,32 @@ namespace MediaBrowser.Controller.Entities
|
|||||||
{
|
{
|
||||||
BaseItem currentChild;
|
BaseItem currentChild;
|
||||||
|
|
||||||
if (currentChildren.TryGetValue(child.Id, out currentChild) && IsValidFromResolver(currentChild, child))
|
if (currentChildren.TryGetValue(child.Id, out currentChild))
|
||||||
{
|
{
|
||||||
var currentChildLocationType = currentChild.LocationType;
|
if (IsValidFromResolver(currentChild, child))
|
||||||
if (currentChildLocationType != LocationType.Remote &&
|
|
||||||
currentChildLocationType != LocationType.Virtual)
|
|
||||||
{
|
{
|
||||||
currentChild.DateModified = child.DateModified;
|
var currentChildLocationType = currentChild.LocationType;
|
||||||
|
if (currentChildLocationType != LocationType.Remote &&
|
||||||
|
currentChildLocationType != LocationType.Virtual)
|
||||||
|
{
|
||||||
|
currentChild.DateModified = child.DateModified;
|
||||||
|
}
|
||||||
|
|
||||||
|
await UpdateIsOffline(currentChild, false).ConfigureAwait(false);
|
||||||
|
validChildren.Add(currentChild);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
newItems.Add(child);
|
||||||
|
validChildren.Add(child);
|
||||||
}
|
}
|
||||||
|
|
||||||
await UpdateIsOffline(currentChild, false).ConfigureAwait(false);
|
|
||||||
validChildren.Add(currentChild);
|
|
||||||
|
|
||||||
continue;
|
|
||||||
}
|
}
|
||||||
|
else
|
||||||
// Brand new item - needs to be added
|
{
|
||||||
child.SetParent(this);
|
// Brand new item - needs to be added
|
||||||
newItems.Add(child);
|
newItems.Add(child);
|
||||||
validChildren.Add(child);
|
validChildren.Add(child);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// If any items were added or removed....
|
// If any items were added or removed....
|
||||||
@ -497,6 +508,7 @@ namespace MediaBrowser.Controller.Entities
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
await UpdateIsOffline(item, false).ConfigureAwait(false);
|
||||||
actualRemovals.Add(item);
|
actualRemovals.Add(item);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -507,11 +519,6 @@ namespace MediaBrowser.Controller.Entities
|
|||||||
|
|
||||||
foreach (var item in actualRemovals)
|
foreach (var item in actualRemovals)
|
||||||
{
|
{
|
||||||
Logger.Debug("Removed item: " + item.Path);
|
|
||||||
|
|
||||||
item.SetParent(null);
|
|
||||||
item.IsOffline = false;
|
|
||||||
await LibraryManager.DeleteItem(item, new DeleteOptions { DeleteFileLocation = false }).ConfigureAwait(false);
|
|
||||||
LibraryManager.ReportItemRemoved(item);
|
LibraryManager.ReportItemRemoved(item);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -520,10 +527,7 @@ namespace MediaBrowser.Controller.Entities
|
|||||||
|
|
||||||
AddChildrenInternal(newItems);
|
AddChildrenInternal(newItems);
|
||||||
|
|
||||||
if (!EnableNewFolderQuerying())
|
await ItemRepository.SaveChildren(Id, ActualChildren.Select(i => i.Id).ToList(), cancellationToken).ConfigureAwait(false);
|
||||||
{
|
|
||||||
await ItemRepository.SaveChildren(Id, ActualChildren.Select(i => i.Id).ToList(), cancellationToken).ConfigureAwait(false);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -717,7 +721,7 @@ namespace MediaBrowser.Controller.Entities
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return ContainsPath(LibraryManager.GetVirtualFolders(), originalPath);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -753,16 +757,19 @@ namespace MediaBrowser.Controller.Entities
|
|||||||
/// <returns>IEnumerable{BaseItem}.</returns>
|
/// <returns>IEnumerable{BaseItem}.</returns>
|
||||||
protected IEnumerable<BaseItem> GetCachedChildren()
|
protected IEnumerable<BaseItem> GetCachedChildren()
|
||||||
{
|
{
|
||||||
if (EnableNewFolderQuerying())
|
if (ConfigurationManager.Configuration.DisableStartupScan)
|
||||||
{
|
{
|
||||||
return ItemRepository.GetItemList(new InternalItemsQuery
|
return ItemRepository.GetChildrenItems(Id).Select(RetrieveChild).Where(i => i != null);
|
||||||
{
|
//return ItemRepository.GetItems(new InternalItemsQuery
|
||||||
ParentId = Id
|
//{
|
||||||
|
// ParentId = Id
|
||||||
|
|
||||||
}).Select(RetrieveChild).Where(i => i != null);
|
//}).Items.Select(RetrieveChild).Where(i => i != null);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return ItemRepository.GetChildrenItems(Id).Select(RetrieveChild).Where(i => i != null);
|
||||||
}
|
}
|
||||||
|
|
||||||
return ItemRepository.GetChildrenItems(Id).Select(RetrieveChild).Where(i => i != null);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private BaseItem RetrieveChild(BaseItem child)
|
private BaseItem RetrieveChild(BaseItem child)
|
||||||
@ -825,7 +832,19 @@ namespace MediaBrowser.Controller.Entities
|
|||||||
return UserViewBuilder.PostFilterAndSort(items, this, null, query, LibraryManager);
|
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)
|
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)
|
if (user == null)
|
||||||
{
|
{
|
||||||
@ -837,7 +856,7 @@ namespace MediaBrowser.Controller.Entities
|
|||||||
|
|
||||||
var result = new Dictionary<Guid, BaseItem>();
|
var result = new Dictionary<Guid, BaseItem>();
|
||||||
|
|
||||||
AddChildren(user, includeLinkedChildren, result, false, null);
|
AddChildren(user, includeLinkedChildren, result, includeHidden, false, null);
|
||||||
|
|
||||||
return result.Values;
|
return result.Values;
|
||||||
}
|
}
|
||||||
@ -853,25 +872,29 @@ namespace MediaBrowser.Controller.Entities
|
|||||||
/// <param name="user">The user.</param>
|
/// <param name="user">The user.</param>
|
||||||
/// <param name="includeLinkedChildren">if set to <c>true</c> [include linked children].</param>
|
/// <param name="includeLinkedChildren">if set to <c>true</c> [include linked children].</param>
|
||||||
/// <param name="result">The result.</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="recursive">if set to <c>true</c> [recursive].</param>
|
||||||
/// <param name="filter">The filter.</param>
|
/// <param name="filter">The filter.</param>
|
||||||
/// <returns><c>true</c> if XXXX, <c>false</c> otherwise</returns>
|
/// <returns><c>true</c> if XXXX, <c>false</c> otherwise</returns>
|
||||||
private void AddChildren(User user, bool includeLinkedChildren, Dictionary<Guid, BaseItem> result, bool recursive, Func<BaseItem, bool> filter)
|
private void AddChildren(User user, bool includeLinkedChildren, Dictionary<Guid, BaseItem> result, bool includeHidden, bool recursive, Func<BaseItem, bool> filter)
|
||||||
{
|
{
|
||||||
foreach (var child in GetEligibleChildrenForRecursiveChildren(user))
|
foreach (var child in GetEligibleChildrenForRecursiveChildren(user))
|
||||||
{
|
{
|
||||||
if (child.IsVisible(user))
|
if (child.IsVisible(user))
|
||||||
{
|
{
|
||||||
if (filter == null || filter(child))
|
if (includeHidden || !child.IsHiddenFromUser(user))
|
||||||
{
|
{
|
||||||
result[child.Id] = child;
|
if (filter == null || filter(child))
|
||||||
|
{
|
||||||
|
result[child.Id] = child;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (recursive && child.IsFolder)
|
if (recursive && child.IsFolder)
|
||||||
{
|
{
|
||||||
var folder = (Folder)child;
|
var folder = (Folder)child;
|
||||||
|
|
||||||
folder.AddChildren(user, includeLinkedChildren, result, true, filter);
|
folder.AddChildren(user, includeLinkedChildren, result, includeHidden, true, filter);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -912,7 +935,7 @@ namespace MediaBrowser.Controller.Entities
|
|||||||
|
|
||||||
var result = new Dictionary<Guid, BaseItem>();
|
var result = new Dictionary<Guid, BaseItem>();
|
||||||
|
|
||||||
AddChildren(user, true, result, true, filter);
|
AddChildren(user, true, result, false, true, filter);
|
||||||
|
|
||||||
return result.Values;
|
return result.Values;
|
||||||
}
|
}
|
||||||
@ -1161,7 +1184,6 @@ namespace MediaBrowser.Controller.Entities
|
|||||||
Recursive = true,
|
Recursive = true,
|
||||||
IsFolder = false,
|
IsFolder = false,
|
||||||
IsUnaired = false
|
IsUnaired = false
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
if (!user.Configuration.DisplayMissingEpisodes)
|
if (!user.Configuration.DisplayMissingEpisodes)
|
||||||
|
@ -251,7 +251,8 @@ namespace MediaBrowser.Dlna
|
|||||||
case HeaderMatchType.Substring:
|
case HeaderMatchType.Substring:
|
||||||
return value.IndexOf(header.Value, StringComparison.OrdinalIgnoreCase) != -1;
|
return value.IndexOf(header.Value, StringComparison.OrdinalIgnoreCase) != -1;
|
||||||
case HeaderMatchType.Regex:
|
case HeaderMatchType.Regex:
|
||||||
return Regex.IsMatch(value, header.Value, RegexOptions.IgnoreCase);
|
// Reports of IgnoreCase not working on linux so try it a couple different ways.
|
||||||
|
return Regex.IsMatch(value, header.Value, RegexOptions.IgnoreCase) || Regex.IsMatch(value.ToUpper(), header.Value.ToUpper(), RegexOptions.IgnoreCase);
|
||||||
default:
|
default:
|
||||||
throw new ArgumentException("Unrecognized HeaderMatchType");
|
throw new ArgumentException("Unrecognized HeaderMatchType");
|
||||||
}
|
}
|
||||||
@ -280,7 +281,7 @@ namespace MediaBrowser.Dlna
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
return _fileSystem.GetFiles(path)
|
return _fileSystem.GetFiles(path)
|
||||||
.Where(i => string.Equals(i.Extension, ".xml", StringComparison.OrdinalIgnoreCase))
|
.Where(i => string.Equals(i.Extension, ".xml", StringComparison.OrdinalIgnoreCase))
|
||||||
.Select(i => ParseProfileXmlFile(i.FullName, type))
|
.Select(i => ParseProfileXmlFile(i.FullName, type))
|
||||||
.Where(i => i != null)
|
.Where(i => i != null)
|
||||||
@ -318,7 +319,7 @@ namespace MediaBrowser.Dlna
|
|||||||
throw new ArgumentNullException("id");
|
throw new ArgumentNullException("id");
|
||||||
}
|
}
|
||||||
|
|
||||||
var info = GetProfileInfosInternal().First(i => string.Equals(i.Info.Id, id));
|
var info = GetProfileInfosInternal().First(i => string.Equals(i.Info.Id, id, StringComparison.OrdinalIgnoreCase));
|
||||||
|
|
||||||
return ParseProfileXmlFile(info.Path, info.Info.Type);
|
return ParseProfileXmlFile(info.Path, info.Info.Type);
|
||||||
}
|
}
|
||||||
@ -342,7 +343,7 @@ namespace MediaBrowser.Dlna
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
return _fileSystem.GetFiles(path)
|
return _fileSystem.GetFiles(path)
|
||||||
.Where(i => string.Equals(i.Extension, ".xml", StringComparison.OrdinalIgnoreCase))
|
.Where(i => string.Equals(i.Extension, ".xml", StringComparison.OrdinalIgnoreCase))
|
||||||
.Select(i => new InternalProfileInfo
|
.Select(i => new InternalProfileInfo
|
||||||
{
|
{
|
||||||
@ -384,7 +385,7 @@ namespace MediaBrowser.Dlna
|
|||||||
|
|
||||||
if (!fileInfo.Exists || fileInfo.Length != stream.Length)
|
if (!fileInfo.Exists || fileInfo.Length != stream.Length)
|
||||||
{
|
{
|
||||||
_fileSystem.CreateDirectory(systemProfilesPath);
|
_fileSystem.CreateDirectory(systemProfilesPath);
|
||||||
|
|
||||||
using (var fileStream = _fileSystem.GetFileStream(path, FileMode.Create, FileAccess.Write, FileShare.Read))
|
using (var fileStream = _fileSystem.GetFileStream(path, FileMode.Create, FileAccess.Write, FileShare.Read))
|
||||||
{
|
{
|
||||||
@ -395,12 +396,12 @@ namespace MediaBrowser.Dlna
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Not necessary, but just to make it easy to find
|
// Not necessary, but just to make it easy to find
|
||||||
_fileSystem.CreateDirectory(UserProfilesPath);
|
_fileSystem.CreateDirectory(UserProfilesPath);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void DeleteProfile(string id)
|
public void DeleteProfile(string id)
|
||||||
{
|
{
|
||||||
var info = GetProfileInfosInternal().First(i => string.Equals(id, i.Info.Id));
|
var info = GetProfileInfosInternal().First(i => string.Equals(id, i.Info.Id, StringComparison.OrdinalIgnoreCase));
|
||||||
|
|
||||||
if (info.Info.Type == DeviceProfileType.System)
|
if (info.Info.Type == DeviceProfileType.System)
|
||||||
{
|
{
|
||||||
@ -448,7 +449,7 @@ namespace MediaBrowser.Dlna
|
|||||||
{
|
{
|
||||||
_fileSystem.DeleteFile(current.Path);
|
_fileSystem.DeleteFile(current.Path);
|
||||||
}
|
}
|
||||||
|
|
||||||
_xmlSerializer.SerializeToFile(profile, path);
|
_xmlSerializer.SerializeToFile(profile, path);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user