From fd952dadfa6bd7e15b0289463007a84ce23918ff Mon Sep 17 00:00:00 2001 From: Milan Date: Thu, 18 Apr 2024 23:19:54 +0200 Subject: [PATCH] events.pm: load recordings for params in the past all recordings have been loaded. At some point this has been changed to load only active recordings. Now there are params supported for both forms all_recordings - all recordings for a broadcast active_recording - add path of active recordings to broadcast only_active_recording - show only broadcasts with active recordings --- lib/calcms/events.pm | 60 ++++++++++------------------- website/agenda/.htaccess | 2 +- website/agenda/aggregate.cgi | 4 +- website/agenda/all-events.cgi | 2 +- website/agenda/events.cgi | 2 +- website/agenda/planung/calendar.cgi | 2 +- 6 files changed, 27 insertions(+), 45 deletions(-) diff --git a/lib/calcms/events.pm b/lib/calcms/events.pm index 27171c3..55d5127 100644 --- a/lib/calcms/events.pm +++ b/lib/calcms/events.pm @@ -107,7 +107,7 @@ sub get($$) { ( my $query, my $bind_values ) = events::get_query( $dbh, $config, $request ); my $results = db::get( $dbh, $$query, $bind_values ); - #$results = events::add_recordings($dbh, $config, $request, $results); + $results = events::add_recordings($dbh, $config, $request, $results) if $request->{params}->{checked}->{all_recordings}; $results = events::modify_results( $dbh, $config, $request, $results ); # get prev and next event @@ -655,28 +655,14 @@ sub set_upload_status($$){ my $recordings = db::put( $dbh, $query, $bindValues ); } +# returns all recordings for a event sub add_recordings($$$$) { my ($dbh, $config, $request, $events) = @_; - return $events unless defined $events; - my $params = $request->{params}->{checked}; - return $events unless defined $params; - return $events unless defined $params->{recordings}; - - my @ids = (); - my $eventsById = {}; - - #my $events = $results; - - for my $event (@$events) { - my $eventId = $event->{event_id}; - push @ids, $eventId; - $eventsById->{$eventId} = $event; - } - - my $qms = join( ', ', ( map { '?' } @$events ) ); - my $bindValues = join( ', ', ( map { $_->{event_id} } @$events ) ); + my $eventsById = { map { $_->{event_id} => $_ } @$events }; + my $qms = join ', ', map { '?' } @$events; + my $bindValues = [map {$_->{event_id}} @$events]; my $query = qq{ select * @@ -687,12 +673,7 @@ sub add_recordings($$$$) { $dbh = db::connect($config) unless defined $dbh; my $recordings = db::get( $dbh, $query, $bindValues ); - - for my $entry (@$recordings) { - my $eventId = $entry->{event_id}; - my $event = $eventsById->{$eventId}; - push @{ $event->{recordings} }, $entry; - } + push @{ $eventsById->{$_->{event_id}}->{recordings} }, $_ for @$recordings; return $events; } @@ -859,12 +840,15 @@ sub getDateQueryConditions ($$$) { } -# if recordings is set in params, recordings date and path will be included +# if "all_recordings" is set in params, all event recordings will be included +# if "active_recording" is set in params, recordings date and path will be included sub get_query($$$) { my ($dbh, $config, $request) = @_; my $params = $request->{params}->{checked}; - $params->{recordings} = '' unless defined $params->{recordings}; + $params->{all_recordings} //= ''; + $params->{active_recording} //= ''; + $params->{only_active_recording} //= ''; my $bind_values = []; my $where_cond = []; @@ -1154,13 +1138,11 @@ sub get_query($$$) { } # add recordings field and conditions - if ( $params->{recordings} eq '1' ) { + if ( $params->{active_recording} || $params->{only_active_recording} ) { $query .= ', ar.path'; $query .= ', ar.size'; $query .= ', ar.created_by uploaded_by'; $query .= ', ar.modified_at uploaded_at'; - - #push @$where_cond, 'e.id=ar.event_id'; } $query .= "\n from"; @@ -1175,8 +1157,8 @@ sub get_query($$$) { } # add recordings table - if ( $params->{recordings} ) { - my $type = $params->{only_recordings}//'' ? 'inner' : 'left'; + if ( $params->{active_recording} || $params->{only_active_recording}) { + my $type = $params->{only_active_recording} ? 'inner' : 'left'; $query .= "\n $type join calcms_audio_recordings ar on e.id=ar.event_id and ar.active=1"; } @@ -1746,11 +1728,10 @@ sub check_params ($$) { my $extern = 0; $extern = 1 if ( defined $params->{extern} ) && ( $params->{extern} eq '1' ); - my $only_recordings = $params->{only_recordings} // ''; - my $recordings = 0; - $recordings = 1 if $params->{recordings}//''; - $recordings = 1 if $only_recordings; - my $set_no_listen_keys = !$recordings ; + my $all_recordings = $params->{all_recordings}; + my $active_recording = $params->{active_recording} // ''; + my $only_active_recording = $params->{only_active_recording} // ''; + my $set_no_listen_keys = !($active_recording or $only_active_recording); my $checked = { date => $date, @@ -1787,8 +1768,9 @@ sub check_params ($$) { exclude_event_images => $exclude_event_images, disable_event_sync => $disable_event_sync, extern => $extern, - recordings => $recordings, - only_recordings => $only_recordings, + all_recordings => $all_recordings, + active_recording => $active_recording, + only_active_recordings => $only_active_recording, set_no_listen_keys => $set_no_listen_keys, ro => ($params->{ro}//'') ? 1 : 0 }; diff --git a/website/agenda/.htaccess b/website/agenda/.htaccess index 1e43cc4..d35b4e5 100644 --- a/website/agenda/.htaccess +++ b/website/agenda/.htaccess @@ -44,7 +44,7 @@ RewriteRule ^atom/(.*)$ events.cgi?template=event.atom.xml&time=future&limit= RewriteRule ^atom.xml[\?]?(.*)$ events.cgi?template=event.atom.xml&time=future&limit=100&$1 [L] RewriteRule ^rss/(.*)$ events.cgi?template=event.rss.xml&time=future&limit=100&$1 [L] RewriteRule ^rss.xml[\?]?(.*)$ events.cgi?template=event.rss.xml&time=future&limit=100&$1 [L] -RewriteRule ^rss-media/(.*)$ events.cgi?last_days=7&only_recordings=1&template=event_media.rss.xml&$1 [L] +RewriteRule ^rss-media/(.*)$ events.cgi?last_days=7&only_active_recording=1&template=event_media.rss.xml&$1 [L] RewriteRule ^ical/(\d{4}-\d{2}-\d{2})/(\d{4}-\d{2}-\d{2})/(\d)/(.*)$ events.cgi?template=event.ics&from_date=$1&till_date=$2&weekday=$3&$4 [L] diff --git a/website/agenda/aggregate.cgi b/website/agenda/aggregate.cgi index 1a8bb63..ae40264 100755 --- a/website/agenda/aggregate.cgi +++ b/website/agenda/aggregate.cgi @@ -42,7 +42,7 @@ if ( $0 =~ /aggregate.*?\.cgi$/ ) { $params->{exclude_projects} = 1; $params->{exclude_event_images} = 1; $params->{ro} = 1; - $params->{recordings} = 1; + $params->{active_recording} = 1; my $request = { url => $ENV{QUERY_STRING}, @@ -68,7 +68,7 @@ s/\<\;span id\="\;calcms_title"\;\>\;[^\&]*\<\;\/span\>\;/\{day} = $params->{from_date} if ( defined $params->{from_date} ) && ( $params->{from_date} ne '' ); $list->{day} = 'today' if $list->{day} eq ''; - $params->{recordings} = 0; + $params->{active_recording} = 0; $menu = aggregator::get_menu( $config, $request, $list->{day}, $list->{results} ); my $calendar = aggregator::get_calendar( $config, $request, $list->{day} ); diff --git a/website/agenda/all-events.cgi b/website/agenda/all-events.cgi index 46d0cd3..3c8902b 100644 --- a/website/agenda/all-events.cgi +++ b/website/agenda/all-events.cgi @@ -17,7 +17,7 @@ if ( $0 =~ /all-events.*?\.cgi$/ ) { my $config = config::getFromScriptLocation(); $params->{template} = '' unless defined $params->{template}; - $params->{recordings} = 1 if $params->{template} =~ /events_playout/; + $params->{all_recordings} = 1 if $params->{template} =~ /events_playout/; # deprecated $params->{exclude_event_images} = 1; my $request = { diff --git a/website/agenda/events.cgi b/website/agenda/events.cgi index c780b4e..b73f57a 100755 --- a/website/agenda/events.cgi +++ b/website/agenda/events.cgi @@ -17,7 +17,7 @@ if ( $0 =~ /events.*?\.cgi$/ ) { my $config = config::getFromScriptLocation(); $params->{template} = '' unless defined $params->{template}; - $params->{recordings} = 1 if $params->{template} =~ /events_playout/; + $params->{all_recordings} = 1 if $params->{template} =~ /events_playout/; # deprecated $params->{exclude_locations} = 1; $params->{exclude_projects} = 1; diff --git a/website/agenda/planung/calendar.cgi b/website/agenda/planung/calendar.cgi index bf58fc9..b5de198 100755 --- a/website/agenda/planung/calendar.cgi +++ b/website/agenda/planung/calendar.cgi @@ -1922,7 +1922,7 @@ sub getSeriesEvents { #get events (directly from database to get the ones, not assigned, yet) delete $options->{studio_id}; delete $options->{project_id}; - $options->{recordings} = 1; + $options->{active_recording} = 1; my $request2 = { params => {