aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Controller
diff options
context:
space:
mode:
authorShadowghost <Ghost_of_Stone@web.de>2026-01-31 23:44:07 +0100
committerShadowghost <Ghost_of_Stone@web.de>2026-01-31 23:45:38 +0100
commit09a729effe1c0eeccd3bbc7482923b4d1cdabfc1 (patch)
tree6e4cece5eac29c5e0252724fff2d868786177a78 /MediaBrowser.Controller
parent2789532aa88ccc899ff8497537642e1d78b31ef5 (diff)
Fix tag checks
Diffstat (limited to 'MediaBrowser.Controller')
-rw-r--r--MediaBrowser.Controller/Entities/BaseItem.cs35
1 files changed, 27 insertions, 8 deletions
diff --git a/MediaBrowser.Controller/Entities/BaseItem.cs b/MediaBrowser.Controller/Entities/BaseItem.cs
index 13af7a6178..f1c1555842 100644
--- a/MediaBrowser.Controller/Entities/BaseItem.cs
+++ b/MediaBrowser.Controller/Entities/BaseItem.cs
@@ -1671,16 +1671,26 @@ namespace MediaBrowser.Controller.Entities
private bool IsVisibleViaTags(User user, bool skipAllowedTagsCheck)
{
- var allowedTagsPreference = user.GetPreference(PreferenceKind.AllowedTags);
- var blockedTagsPreference = user.GetPreference(PreferenceKind.BlockedTags);
- var needsTagCheck = allowedTagsPreference.Length > 0 || blockedTagsPreference.Length > 0;
- if (!needsTagCheck)
+ var blockedTags = user.GetPreference(PreferenceKind.BlockedTags);
+ var allowedTags = user.GetPreference(PreferenceKind.AllowedTags);
+
+ if (blockedTags.Length == 0 && allowedTags.Length == 0)
{
return true;
}
- var allTags = GetInheritedTags();
- if (blockedTagsPreference.Any(i => allTags.Contains(i, StringComparison.OrdinalIgnoreCase)))
+ // Normalize tags using the same logic as database queries
+ var normalizedBlockedTags = blockedTags
+ .Where(t => !string.IsNullOrWhiteSpace(t))
+ .Select(t => t.GetCleanValue())
+ .ToHashSet(StringComparer.Ordinal);
+
+ var normalizedItemTags = GetInheritedTags()
+ .Select(t => t.GetCleanValue())
+ .ToHashSet(StringComparer.Ordinal);
+
+ // Check blocked tags - item is hidden if it has any blocked tag
+ if (normalizedBlockedTags.Overlaps(normalizedItemTags))
{
return false;
}
@@ -1691,9 +1701,18 @@ namespace MediaBrowser.Controller.Entities
return true;
}
- if (!skipAllowedTagsCheck && !allowedTagsPreference.Any(i => allTags.Contains(i, StringComparison.OrdinalIgnoreCase)))
+ // Check allowed tags - item must have at least one allowed tag
+ if (!skipAllowedTagsCheck && allowedTags.Length > 0)
{
- return false;
+ var normalizedAllowedTags = allowedTags
+ .Where(t => !string.IsNullOrWhiteSpace(t))
+ .Select(t => t.GetCleanValue())
+ .ToHashSet(StringComparer.Ordinal);
+
+ if (!normalizedAllowedTags.Overlaps(normalizedItemTags))
+ {
+ return false;
+ }
}
return true;