audiorecordings.pm: connect locally to detect permissions

This commit is contained in:
Milan
2024-02-17 21:17:24 +01:00
parent d56174f8d0
commit f5abdeac90
2 changed files with 48 additions and 49 deletions

View File

@@ -31,7 +31,6 @@ sub get($$) {
if ( defined $condition->{date_range_include} ) && ( $condition->{date_range_include} == 1 );
my $dbh = db::connect($config);
my $conditions = [];
my $bind_values = [];
@@ -93,12 +92,45 @@ sub get($$) {
return $entries;
}
sub update_active($$) {
my ($config, $entry) = @_;
return undef unless defined $entry->{project_id};
return undef unless defined $entry->{studio_id};
return undef unless defined $entry->{event_id};
my $dbh = db::connect($config);
my $bind_values = [ $entry->{project_id}, $entry->{studio_id}, $entry->{event_id} ];
my $query = qq{
update calcms_audio_recordings
set active=0
where project_id=? and studio_id=? and event_id=? and active=1
};
db::put( $dbh, $query, $bind_values );
$query = qq{
select max(id) id from calcms_audio_recordings
where project_id=? and studio_id=? and event_id=?
};
my $entries = db::get( $dbh, $query, $bind_values );
my $max = $entries->[0];
return undef unless defined $max->{id};
$query = qq{
update calcms_audio_recordings
set active=1
where id=?
};
return db::put( $dbh, $query, [$max->{id}] );
}
# update playout entry if differs to old values
sub update($$$) {
my ($config, $dbh, $entry) = @_;
sub update($$) {
my ($config, $entry) = @_;
my $day_start = $config->{date}->{day_starting_hour};
my $dbh = db::connect($config);
my $bind_values = [
$entry->{path}, $entry->{size},
$entry->{created_by}, $entry->{created_at},
@@ -124,19 +156,20 @@ sub update($$$) {
push @$bind_values, $entry->{id};
}
my $result = db::put( $dbh, $query, $bind_values );
update_active($config, $dbh, $entry);
update_active($config, $entry);
return $result;
}
# insert playout entry
sub insert ($$$) {
my ($config, $dbh, $entry) = @_;
sub insert ($$) {
my ($config, $entry) = @_;
return undef unless defined $entry->{project_id};
return undef unless defined $entry->{studio_id};
return undef unless defined $entry->{event_id};
return undef unless defined $entry->{path};
my $dbh = db::connect($config);
$entry = {
project_id => $entry->{project_id},
studio_id => $entry->{studio_id},
@@ -153,19 +186,20 @@ sub insert ($$$) {
};
my $result = db::insert( $dbh, 'calcms_audio_recordings', $entry );
update_active($config, $dbh, $entry);
update_active($config, $entry);
return $result;
}
# delete playout entry
sub delete ($$$) {
my ($config, $dbh, $entry) = @_;
sub delete ($$) {
my ($config, $entry) = @_;
return undef unless defined $entry->{project_id};
return undef unless defined $entry->{studio_id};
return undef unless defined $entry->{event_id};
return undef unless defined $entry->{path};
my $dbh = db::connect($config);
my $query = qq{
delete
from calcms_audio_recordings
@@ -174,41 +208,10 @@ sub delete ($$$) {
my $bind_values = [ $entry->{project_id}, $entry->{studio_id}, $entry->{event_id}, $entry->{path} ];
my $result = db::put( $dbh, $query, $bind_values );
update_active($config, $dbh, $entry);
update_active($config, $entry);
return $result;
}
sub update_active($$$) {
my ($config, $dbh, $entry) = @_;
return undef unless defined $entry->{project_id};
return undef unless defined $entry->{studio_id};
return undef unless defined $entry->{event_id};
my $bind_values = [ $entry->{project_id}, $entry->{studio_id}, $entry->{event_id} ];
my $query = qq{
update calcms_audio_recordings
set active=0
where project_id=? and studio_id=? and event_id=? and active=1
};
db::put( $dbh, $query, $bind_values );
$query = qq{
select max(id) id from calcms_audio_recordings
where project_id=? and studio_id=? and event_id=?
};
my $entries = db::get( $dbh, $query, $bind_values );
my $max = $entries->[0];
return undef unless defined $max->{id};
$query = qq{
update calcms_audio_recordings
set active=1
where id=?
};
return db::put( $dbh, $query, [$max->{id}] );
}
sub error($) {
my $msg = shift;
print "ERROR: $msg<br/>\n";

View File

@@ -209,7 +209,6 @@ sub deleteRecording {
}
}
my $dbh = db::connect($config);
$config->{access}->{write} = 0;
my $audioRecordings = audio_recordings::get(
@@ -245,7 +244,7 @@ sub deleteRecording {
$config->{access}->{write} = 1;
$audioRecordings = audio_recordings::delete(
$config, $dbh,
$config,
{
project_id => $params->{project_id},
studio_id => $params->{studio_id},
@@ -410,8 +409,6 @@ sub updateDatabase {
};
#connect
my $dbh = db::connect($config);
my $entries = audio_recordings::get(
$config,
{
@@ -424,7 +421,7 @@ sub updateDatabase {
if ( ( defined $entries ) && ( scalar @$entries > 0 ) ) {
print STDERR "update\n";
audio_recordings::update( $config, $dbh, $entry );
audio_recordings::update( $config, $entry );
my $entry = $entries->[0];
$params->{id} = $entry->{id};
} else {
@@ -436,7 +433,7 @@ sub updateDatabase {
$entry->{rmsRight} = 0.0;
$entry->{audioDuration} = 0.0;
$entry->{modified_at} = time();
$entry->{id} = audio_recordings::insert( $config, $dbh, $entry );
$entry->{id} = audio_recordings::insert( $config, $entry );
$params->{id} = $entry->{id};
}
call_hooks($config, $entry, $params);
@@ -448,7 +445,6 @@ sub updateDatabase {
sub call_hooks {
my ($config, $entry, $params) = @_;
print STDERR Dumper($config->{"audio-upload-hooks"});
my $dbh = db::connect($config);
$entry = audio_recordings::get(
$config, {
@@ -468,7 +464,7 @@ sub call_hooks {
$entry->{$key} = $value;
die "invalid column $key for table calcms_audio_recordings"
unless exists audio_recordings::get_columns($config)->{$key};
audio_recordings::update( $config, $dbh, $entry );
audio_recordings::update( $config, $entry );
} elsif ($line =~ m/^calcms_events\.([a-zA-Z0-9_-]+)\s*=\s*(\S+)/) {
my ($key, $value) = ($1, $2);
die "invalid column $key for calcms_events\n"