From 180cd4c3d306ed0c11d82dcc8d18029e3adaff44 Mon Sep 17 00:00:00 2001 From: sreeshanth-soma1 Date: Thu, 19 Feb 2026 07:09:53 +0530 Subject: [PATCH] feat: Implement 'never_broadcasted' filter for media search and add it to the advanced search UI. --- core/models/media_model.php | 12 +++++++++++- public/html/sidebar/advanced_search.html | 1 + 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/core/models/media_model.php b/core/models/media_model.php index ad873823..73cb1ecd 100644 --- a/core/models/media_model.php +++ b/core/models/media_model.php @@ -954,7 +954,7 @@ public function search_filters_validate($args = []) OBFHelpers::require_args($args, ['filters']); $filters = $args['filters']; - $allowed_filters = ['comments','artist','title','album','year','type','category','country','language','genre','duration','is_copyright_owner','status','dynamic_select']; + $allowed_filters = ['comments','artist','title','album','year','type','category','country','language','genre','duration','is_copyright_owner','never_broadcasted','status','dynamic_select']; $allowed_operators = [ // deprecated 'like', @@ -1021,6 +1021,16 @@ public function search_filters_where_array($args = []) $filter = get_object_vars($filter); } + // never_broadcasted filter: uses subquery, skip normal column mapping + if ($filter['filter'] == 'never_broadcasted') { + if ($filter['val'] == '1') { + $where_array[] = 'NOT EXISTS (SELECT 1 FROM players_log WHERE players_log.media_id = media.id)'; + } else { + $where_array[] = 'EXISTS (SELECT 1 FROM players_log WHERE players_log.media_id = media.id)'; + } + continue; + } + // our possible column (mappings) $column_array = []; $column_array['artist'] = 'media.artist'; diff --git a/public/html/sidebar/advanced_search.html b/public/html/sidebar/advanced_search.html index cffcba45..215db251 100644 --- a/public/html/sidebar/advanced_search.html +++ b/public/html/sidebar/advanced_search.html @@ -21,6 +21,7 @@ +