Merge remote-tracking branch 'calcms/master'

* events.pm: load recordings for params
This commit is contained in:
www-data
2024-04-19 13:06:00 +02:00
6 changed files with 27 additions and 45 deletions

View File

@@ -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
};

View File

@@ -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]

View File

@@ -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/\&lt\;span id\=&quot\;calcms_title&quot\;\&gt\;[^\&]*\&lt\;\/span\&gt\;/\<span
$list->{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} );

View File

@@ -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 = {

View File

@@ -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;

View File

@@ -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 => {