fix merge conflits

This commit is contained in:
Luke Pulverenti 2015-11-23 11:01:42 -05:00
parent aeb4c520be
commit 155c519080
2 changed files with 85 additions and 62 deletions

View File

@ -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,16 +151,8 @@ 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,14 +224,9 @@ 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>
/// Clears the children. /// Clears the children.
/// </summary> /// </summary>
@ -453,7 +457,9 @@ 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))
{
if (IsValidFromResolver(currentChild, child))
{ {
var currentChildLocationType = currentChild.LocationType; var currentChildLocationType = currentChild.LocationType;
if (currentChildLocationType != LocationType.Remote && if (currentChildLocationType != LocationType.Remote &&
@ -464,15 +470,20 @@ namespace MediaBrowser.Controller.Entities
await UpdateIsOffline(currentChild, false).ConfigureAwait(false); await UpdateIsOffline(currentChild, false).ConfigureAwait(false);
validChildren.Add(currentChild); validChildren.Add(currentChild);
continue;
} }
else
// Brand new item - needs to be added {
child.SetParent(this);
newItems.Add(child); newItems.Add(child);
validChildren.Add(child); validChildren.Add(child);
} }
}
else
{
// Brand new item - needs to be added
newItems.Add(child);
validChildren.Add(child);
}
}
// If any items were added or removed.... // If any items were added or removed....
if (newItems.Count > 0 || currentChildren.Count != validChildren.Count) if (newItems.Count > 0 || currentChildren.Count != validChildren.Count)
@ -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,12 +527,9 @@ 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);
} }
} }
}
progress.Report(10); progress.Report(10);
@ -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
{
ParentId = Id
}).Select(RetrieveChild).Where(i => i != null);
}
return ItemRepository.GetChildrenItems(Id).Select(RetrieveChild).Where(i => i != null); return ItemRepository.GetChildrenItems(Id).Select(RetrieveChild).Where(i => i != null);
//return ItemRepository.GetItems(new InternalItemsQuery
//{
// ParentId = Id
//}).Items.Select(RetrieveChild).Where(i => i != null);
}
else
{
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 (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) 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)

View File

@ -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");
} }
@ -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);
} }
@ -400,7 +401,7 @@ namespace MediaBrowser.Dlna
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)
{ {