diff options
Diffstat (limited to 'lib')
-rwxr-xr-x | lib/RHRD/rddb.pm | 55 |
1 files changed, 53 insertions, 2 deletions
diff --git a/lib/RHRD/rddb.pm b/lib/RHRD/rddb.pm index e1afd55..d87acb7 100755 --- a/lib/RHRD/rddb.pm +++ b/lib/RHRD/rddb.pm @@ -1002,7 +1002,7 @@ sub create_show_log return (undef, 'ERROR', "Log with name '" . $logname . "' already exists") } - my $sql = qq{insert into LOGS set NAME = ?, LOG_EXISTS='N', TYPE=0, DESCRIPTION = ?, ORIGIN_USER = ?, ORIGIN_DATETIME=NOW(), LINK_DATETIME=NOW(), SERVICE = ?}; + my $sql = qq{insert into LOGS (NAME, LOG_EXISTS, TYPE, DESCRIPTION, ORIGIN_USER, ORIGIN_DATETIME, LINK_DATETIME, SERVICE) values (?, 'N', 0, ?, ?, NOW(), NOW(), ?)}; my $sth = $ctx->{'dbh'}->prepare($sql) or return (undef, 'ERROR', "Database Error: " . $ctx->{'dbh'}->errstr); @@ -1010,8 +1010,10 @@ sub create_show_log $sth->execute($logname, $logname . " log", $ctx->{'config'}{'shows'}{'defaultuser'}, $ctx->{'config'}{'shows'}{'service'}) or return (undef, 'ERROR', "Database Error: " . $sth->errstr); + $sth->finish(); + (my $result, $status, $errorstring) = create_log_table($ctx, $logname); - unless (defined $result && defined $status) { + unless (defined $result) { return (undef, $status, $errorstring); } @@ -1039,9 +1041,58 @@ sub create_show_log $sth->execute($next_id, $logname) or return (undef, 'ERROR', "Database Error: " . $sth->errstr); + $sth->finish(); + return (1, 'OK', 'success'); } +sub get_next_free_showid +{ + my ($ctx) = @_; + + my ($low, $high, $type, undef) = RHRD::rddb::get_group_carts($ctx, $ctx->{'config'}{'specialgroups'}{'shows'}); + unless(defined $low) { + return (undef, $high, $type); + } + + my $sql = qq{select NUMBER from CART where GROUP_NAME = ? order by NUMBER}; + + my $sth = $ctx->{'dbh'}->prepare($sql) + or return (undef, 'ERROR', "Database Error: " . $ctx->{'dbh'}->errstr); + + $sth->execute($ctx->{'config'}{'specialgroups'}{'shows'}) + or return (undef, 'ERROR', "Database Error: " . $sth->errstr); + + my $show_id = $low; + while(my ($cart) = $sth->fetchrow_array()) { + last if($show_id < $cart); + $show_id += 1; + } + $sth->finish(); + + return ($show_id, 'OK', 'success'); +} + +sub create_show_macro_cart +{ + my ($ctx, $logname, $title) = @_; + my $macro = 'LL 1 ' . $logname . ' 0!'; + + my ($number, $status, $errorstring) = get_next_free_showid($ctx); + + my $sql = qq{insert into CART (NUMBER, TYPE, GROUP_NAME, TITLE, MACROS, VALIDITY, METADATA_DATETIME) values (?, 2, ?, ?, ?, 3, NOW())}; + + my $sth = $ctx->{'dbh'}->prepare($sql) + or return (undef, 'ERROR', "Database Error: " . $ctx->{'dbh'}->errstr); + + $sth->execute($number, $ctx->{'config'}{'specialgroups'}{'shows'}, $title, $macro) + or return (undef, 'ERROR', "Database Error: " . $sth->errstr); + + $sth->finish(); + + return ($number, 'OK', 'success'); +} + ########################### MUSICPOOL handling ########################### sub get_musicpools_cart_range |