aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Controller/Entities/BaseItem.cs
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Controller/Entities/BaseItem.cs')
-rw-r--r--MediaBrowser.Controller/Entities/BaseItem.cs82
1 files changed, 54 insertions, 28 deletions
diff --git a/MediaBrowser.Controller/Entities/BaseItem.cs b/MediaBrowser.Controller/Entities/BaseItem.cs
index 502ba6c60..89d48ff90 100644
--- a/MediaBrowser.Controller/Entities/BaseItem.cs
+++ b/MediaBrowser.Controller/Entities/BaseItem.cs
@@ -477,14 +477,36 @@ namespace MediaBrowser.Controller.Entities
locationType != LocationType.Virtual;
}
- public virtual bool IsAuthorizedToDelete(User user)
+ public virtual bool IsAuthorizedToDelete(User user, List<Folder> allCollectionFolders)
{
- return user.Policy.EnableContentDeletion;
+ if (user.Policy.EnableContentDeletion)
+ {
+ return true;
+ }
+
+ var allowed = user.Policy.EnableContentDeletionFromFolders;
+ var collectionFolders = LibraryManager.GetCollectionFolders(this, allCollectionFolders);
+
+ foreach (var folder in collectionFolders)
+ {
+ if (allowed.Contains(folder.Id.ToString("N"), StringComparer.OrdinalIgnoreCase))
+ {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ public bool CanDelete(User user, List<Folder> allCollectionFolders)
+ {
+ return CanDelete() && IsAuthorizedToDelete(user, allCollectionFolders);
}
public bool CanDelete(User user)
{
- return CanDelete() && IsAuthorizedToDelete(user);
+ var allCollectionFolders = LibraryManager.GetUserRootFolder().Children.OfType<Folder>().ToList();
+ return CanDelete(user, allCollectionFolders);
}
public virtual bool CanDownload()
@@ -1142,7 +1164,7 @@ namespace MediaBrowser.Controller.Entities
[IgnoreDataMember]
public virtual bool SupportsPeople
{
- get { return true; }
+ get { return false; }
}
[IgnoreDataMember]
@@ -1281,8 +1303,8 @@ namespace MediaBrowser.Controller.Entities
{
var subOptions = new MetadataRefreshOptions(options);
- if (!i.ExtraType.HasValue ||
- i.ExtraType.Value != Model.Entities.ExtraType.ThemeSong ||
+ if (!i.ExtraType.HasValue ||
+ i.ExtraType.Value != Model.Entities.ExtraType.ThemeSong ||
i.OwnerId != ownerId ||
i.ParentId != Guid.Empty)
{
@@ -1356,14 +1378,20 @@ namespace MediaBrowser.Controller.Entities
internal virtual bool IsValidFromResolver(BaseItem newItem)
{
- var current = this;
+ return true;
+ }
- if (current.IsInMixedFolder != newItem.IsInMixedFolder)
+ internal virtual ItemUpdateType UpdateFromResolvedItem(BaseItem newItem)
+ {
+ var updateType = ItemUpdateType.None;
+
+ if (IsInMixedFolder != newItem.IsInMixedFolder)
{
- return false;
+ IsInMixedFolder = newItem.IsInMixedFolder;
+ updateType |= ItemUpdateType.MetadataImport;
}
- return true;
+ return updateType;
}
public void AfterMetadataRefresh()
@@ -1924,6 +1952,8 @@ namespace MediaBrowser.Controller.Entities
{
existingImage.Path = image.Path;
existingImage.DateModified = image.DateModified;
+ existingImage.Width = image.Width;
+ existingImage.Height = image.Height;
}
else
@@ -1966,14 +1996,14 @@ namespace MediaBrowser.Controller.Entities
/// <param name="type">The type.</param>
/// <param name="index">The index.</param>
/// <returns>Task.</returns>
- public Task DeleteImage(ImageType type, int index)
+ public void DeleteImage(ImageType type, int index)
{
var info = GetImageInfo(type, index);
if (info == null)
{
// Nothing to do
- return Task.FromResult(true);
+ return;
}
// Remove it from the item
@@ -1984,7 +2014,7 @@ namespace MediaBrowser.Controller.Entities
FileSystem.DeleteFile(info.Path);
}
- return UpdateToRepository(ItemUpdateType.ImageUpdate, CancellationToken.None);
+ UpdateToRepository(ItemUpdateType.ImageUpdate, CancellationToken.None);
}
public void RemoveImage(ItemImageInfo image)
@@ -1997,9 +2027,9 @@ namespace MediaBrowser.Controller.Entities
ImageInfos = ImageInfos.Except(deletedImages).ToArray();
}
- public virtual Task UpdateToRepository(ItemUpdateType updateReason, CancellationToken cancellationToken)
+ public virtual void UpdateToRepository(ItemUpdateType updateReason, CancellationToken cancellationToken)
{
- return LibraryManager.UpdateItem(this, updateReason, cancellationToken);
+ LibraryManager.UpdateItem(this, updateReason, cancellationToken);
}
/// <summary>
@@ -2209,7 +2239,7 @@ namespace MediaBrowser.Controller.Entities
return type == ImageType.Backdrop || type == ImageType.Screenshot || type == ImageType.Chapter;
}
- public Task SwapImages(ImageType type, int index1, int index2)
+ public void SwapImages(ImageType type, int index1, int index2)
{
if (!AllowsMultipleImages(type))
{
@@ -2222,13 +2252,13 @@ namespace MediaBrowser.Controller.Entities
if (info1 == null || info2 == null)
{
// Nothing to do
- return Task.FromResult(true);
+ return;
}
if (!info1.IsLocalFile || !info2.IsLocalFile)
{
// TODO: Not supported yet
- return Task.FromResult(true);
+ return;
}
var path1 = info1.Path;
@@ -2240,7 +2270,12 @@ namespace MediaBrowser.Controller.Entities
info1.DateModified = FileSystem.GetLastWriteTimeUtc(info1.Path);
info2.DateModified = FileSystem.GetLastWriteTimeUtc(info2.Path);
- return UpdateToRepository(ItemUpdateType.ImageUpdate, CancellationToken.None);
+ info1.Width = 0;
+ info1.Height = 0;
+ info2.Width = 0;
+ info2.Height = 0;
+
+ UpdateToRepository(ItemUpdateType.ImageUpdate, CancellationToken.None);
}
public virtual bool IsPlayed(User user)
@@ -2526,15 +2561,6 @@ namespace MediaBrowser.Controller.Entities
return LibraryManager.DeleteItem(this, options);
}
- public virtual Task OnFileDeleted()
- {
- // Remove from database
- return Delete(new DeleteOptions
- {
- DeleteFileLocation = false
- });
- }
-
public virtual List<ExternalUrl> GetRelatedUrls()
{
return new List<ExternalUrl>();