From fd4ff74330649a6364bfed2a1753311817448246 Mon Sep 17 00:00:00 2001 From: Christian Pointner Date: Sat, 30 Jul 2016 03:18:47 +0200 Subject: removing musicpool - partly implemented diff --git a/lib/RHRD/rddb.pm b/lib/RHRD/rddb.pm index 65866fc..e1335fe 100755 --- a/lib/RHRD/rddb.pm +++ b/lib/RHRD/rddb.pm @@ -1865,6 +1865,26 @@ sub get_musicpool_num_from_cart return ($num, 'OK', 'success'); } +sub get_musicpool_group +{ + my ($ctx, $shortname) = @_; + + my $sql = qq{select GROUP_NAME from DROPBOXES where PATH = ? and DROPBOXES.STATION_NAME = ?;}; + my $sth = $ctx->{'dbh'}->prepare($sql) + or return (undef, 'ERROR', "Database Error: " . $ctx->{'dbh'}->errstr); + + $sth->execute($shortname, $ctx->{'config'}{'dropboxes'}{'dropbox-pseudo-station'}) + or return (undef, 'ERROR', "Database Error: " . $sth->errstr); + + my ($groupname) = $sth->fetchrow_array(); + $sth->finish(); + + unless(defined($groupname)) { + return (undef, 'ERROR', "Pool not found"); + } + return ($groupname, 'OK', 'success'); +} + sub list_musicpools { my ($ctx) = @_; @@ -2004,6 +2024,60 @@ sub create_musicpool_event return (1, 'OK', 'success'); } +sub remove_musicpool +{ + my ($ctx, $shortname) = @_; + + my ($groupname, $status, $errorstring) = get_musicpool_group($ctx, $shortname); + unless (defined $groupname) { + return (undef, $status, $errorstring); + } + + my @actions = ({ + # Delete Event Permissions + sql => qq{delete from EVENT_PERMS where EVENT_NAME = ?;}, + param => $shortname, + name => 'event permissions', + cnt => 0 + }, { + # Delete Event + sql => qq{delete from EVENTS where NAME = ?;}, + param => $shortname, + name => 'events', + cnt => 0 + }); + + for my $href (@actions) { + my $sth = $ctx->{'dbh'}->prepare($href->{sql}) + or return (undef, 'ERROR', "Database Error: " . $ctx->{'dbh'}->errstr); + delete($href->{sql}); + + $href->{cnt} = $sth->execute($href->{param}) + or return (undef, 'ERROR', "Database Error: " . $sth->errstr); + + $sth->finish(); + } + + (my $cnt_pre, $status, $errorstring) = drop_logevent_table($ctx, $shortname, 1); + unless (defined $cnt_pre) { + return (undef, $status, $errorstring); + } + + (my $cnt_post, $status, $errorstring) = drop_logevent_table($ctx, $shortname, 0); + unless (defined $cnt_post) { + return (undef, $status, $errorstring); + } + push @actions, { name => 'log-event tables', cnt => ($cnt_pre + $cnt_post) }; + + my @group_results = remove_group($ctx, $groupname); + if(!defined $group_results[0] && defined $group_results[2]) { + return (undef, $group_results[1], $group_results[2]); + } + push @actions, @group_results; + + return @actions; +} + sub is_musicpools_user { my ($ctx, $username) = @_; -- cgit v0.10.2