From 155c51908095177e42c31ebe5f13cf533318ad06 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Mon, 23 Nov 2015 11:01:42 -0500 Subject: [PATCH] fix merge conflits --- MediaBrowser.Controller/Entities/Folder.cs | 130 ++++++++++++--------- MediaBrowser.Dlna/DlnaManager.cs | 17 +-- 2 files changed, 85 insertions(+), 62 deletions(-) diff --git a/MediaBrowser.Controller/Entities/Folder.cs b/MediaBrowser.Controller/Entities/Folder.cs index f7439e9709..9ea1b64c0a 100644 --- a/MediaBrowser.Controller/Entities/Folder.cs +++ b/MediaBrowser.Controller/Entities/Folder.cs @@ -28,6 +28,7 @@ namespace MediaBrowser.Controller.Entities public List ThemeSongIds { get; set; } public List ThemeVideoIds { get; set; } + public List Tags { get; set; } public Folder() { @@ -35,6 +36,7 @@ namespace MediaBrowser.Controller.Entities ThemeSongIds = new List(); ThemeVideoIds = new List(); + Tags = new List(); } [IgnoreDataMember] @@ -149,15 +151,7 @@ namespace MediaBrowser.Controller.Entities await LibraryManager.CreateItem(item, cancellationToken).ConfigureAwait(false); - if (!EnableNewFolderQuerying()) - { - await ItemRepository.SaveChildren(Id, ActualChildren.Select(i => i.Id).ToList(), cancellationToken).ConfigureAwait(false); - } - } - - private static bool EnableNewFolderQuerying() - { - return ConfigurationManager.Configuration.MigrationVersion >= 1; + await ItemRepository.SaveChildren(Id, ActualChildren.Select(i => i.Id).ToList(), cancellationToken).ConfigureAwait(false); } protected void AddChildrenInternal(IEnumerable 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"; + } + } + /// /// Removes the child. /// @@ -215,12 +224,7 @@ namespace MediaBrowser.Controller.Entities item.SetParent(null); - if (!EnableNewFolderQuerying()) - { - return ItemRepository.SaveChildren(Id, ActualChildren.Select(i => i.Id).ToList(), cancellationToken); - } - - return Task.FromResult(true); + return ItemRepository.SaveChildren(Id, ActualChildren.Select(i => i.Id).ToList(), cancellationToken); } /// @@ -453,25 +457,32 @@ namespace MediaBrowser.Controller.Entities { BaseItem currentChild; - if (currentChildren.TryGetValue(child.Id, out currentChild) && IsValidFromResolver(currentChild, child)) + if (currentChildren.TryGetValue(child.Id, out currentChild)) { - var currentChildLocationType = currentChild.LocationType; - if (currentChildLocationType != LocationType.Remote && - currentChildLocationType != LocationType.Virtual) + if (IsValidFromResolver(currentChild, child)) { - 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; } - - // Brand new item - needs to be added - child.SetParent(this); - newItems.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.... @@ -497,6 +508,7 @@ namespace MediaBrowser.Controller.Entities } else { + await UpdateIsOffline(item, false).ConfigureAwait(false); actualRemovals.Add(item); } } @@ -507,11 +519,6 @@ namespace MediaBrowser.Controller.Entities 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); } } @@ -520,10 +527,7 @@ namespace MediaBrowser.Controller.Entities 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 false; + return ContainsPath(LibraryManager.GetVirtualFolders(), originalPath); } /// @@ -753,16 +757,19 @@ namespace MediaBrowser.Controller.Entities /// IEnumerable{BaseItem}. protected IEnumerable GetCachedChildren() { - if (EnableNewFolderQuerying()) + if (ConfigurationManager.Configuration.DisableStartupScan) { - return ItemRepository.GetItemList(new InternalItemsQuery - { - ParentId = Id + return ItemRepository.GetChildrenItems(Id).Select(RetrieveChild).Where(i => i != null); + //return ItemRepository.GetItems(new InternalItemsQuery + //{ + // 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) @@ -825,7 +832,19 @@ namespace MediaBrowser.Controller.Entities return UserViewBuilder.PostFilterAndSort(items, this, null, query, LibraryManager); } + /// + /// Gets allowed children of an item + /// + /// The user. + /// if set to true [include linked children]. + /// IEnumerable{BaseItem}. + /// public virtual IEnumerable GetChildren(User user, bool includeLinkedChildren) + { + return GetChildren(user, includeLinkedChildren, false); + } + + internal IEnumerable GetChildren(User user, bool includeLinkedChildren, bool includeHidden) { if (user == null) { @@ -837,7 +856,7 @@ namespace MediaBrowser.Controller.Entities var result = new Dictionary(); - AddChildren(user, includeLinkedChildren, result, false, null); + AddChildren(user, includeLinkedChildren, result, includeHidden, false, null); return result.Values; } @@ -853,25 +872,29 @@ namespace MediaBrowser.Controller.Entities /// The user. /// if set to true [include linked children]. /// The result. + /// if set to true [include hidden]. /// if set to true [recursive]. /// The filter. /// true if XXXX, false otherwise - private void AddChildren(User user, bool includeLinkedChildren, Dictionary result, bool recursive, Func filter) + private void AddChildren(User user, bool includeLinkedChildren, Dictionary result, bool includeHidden, bool recursive, Func filter) { foreach (var child in GetEligibleChildrenForRecursiveChildren(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) { 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(); - AddChildren(user, true, result, true, filter); + AddChildren(user, true, result, false, true, filter); return result.Values; } @@ -1161,7 +1184,6 @@ namespace MediaBrowser.Controller.Entities Recursive = true, IsFolder = false, IsUnaired = false - }; if (!user.Configuration.DisplayMissingEpisodes) diff --git a/MediaBrowser.Dlna/DlnaManager.cs b/MediaBrowser.Dlna/DlnaManager.cs index be49c0f893..2a688fa54d 100644 --- a/MediaBrowser.Dlna/DlnaManager.cs +++ b/MediaBrowser.Dlna/DlnaManager.cs @@ -251,7 +251,8 @@ namespace MediaBrowser.Dlna case HeaderMatchType.Substring: return value.IndexOf(header.Value, StringComparison.OrdinalIgnoreCase) != -1; 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: throw new ArgumentException("Unrecognized HeaderMatchType"); } @@ -280,7 +281,7 @@ namespace MediaBrowser.Dlna { try { - return _fileSystem.GetFiles(path) + return _fileSystem.GetFiles(path) .Where(i => string.Equals(i.Extension, ".xml", StringComparison.OrdinalIgnoreCase)) .Select(i => ParseProfileXmlFile(i.FullName, type)) .Where(i => i != null) @@ -318,7 +319,7 @@ namespace MediaBrowser.Dlna 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); } @@ -342,7 +343,7 @@ namespace MediaBrowser.Dlna { try { - return _fileSystem.GetFiles(path) + return _fileSystem.GetFiles(path) .Where(i => string.Equals(i.Extension, ".xml", StringComparison.OrdinalIgnoreCase)) .Select(i => new InternalProfileInfo { @@ -384,7 +385,7 @@ namespace MediaBrowser.Dlna 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)) { @@ -395,12 +396,12 @@ namespace MediaBrowser.Dlna } // Not necessary, but just to make it easy to find - _fileSystem.CreateDirectory(UserProfilesPath); + _fileSystem.CreateDirectory(UserProfilesPath); } 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) { @@ -448,7 +449,7 @@ namespace MediaBrowser.Dlna { _fileSystem.DeleteFile(current.Path); } - + _xmlSerializer.SerializeToFile(profile, path); }