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 3c3b739..d41f4b3 100644 --- a/website/agenda/.htaccess +++ b/website/agenda/.htaccess @@ -47,7 +47,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 => {