From 444c7d9f9da66309ed0e4e2d6d7050ecc436b0fc Mon Sep 17 00:00:00 2001 From: Christian Pointner Date: Wed, 14 Sep 2016 22:43:37 +0200 Subject: implemented multi-show diff --git a/lib/RHRD/rddb.pm b/lib/RHRD/rddb.pm index da3a1e5..4f8f469 100755 --- a/lib/RHRD/rddb.pm +++ b/lib/RHRD/rddb.pm @@ -2064,6 +2064,36 @@ sub create_multi_show return ($number, 'OK', 'success'); } +sub get_multi_show_info +{ + my ($ctx, $showid) = @_; + + my $sql = qq{select TITLE,USER_DEFINED from CART where NUMBER = ?}; + + my $sth = $ctx->{'dbh'}->prepare($sql) + or return (undef, 'ERROR', "Database Error: " . $ctx->{'dbh'}->errstr); + + $sth->execute($showid) + or return (undef, 'ERROR', "Database Error: " . $sth->errstr); + + my ($title, $shows) = $sth->fetchrow_array(); + $sth->finish(); + + my $entry = {}; + $entry->{'ID'} = $showid; + $entry->{'TITLE'} = $title; + $entry->{'SHOWS'} = {}; + + my @showlist = split(';', $shows); + foreach my $show (@showlist) { + my ($week, $showid) = split(':', $show, 2); + next unless(defined($week) && defined($showid)); + $entry->{'SHOWS'}{int($week)} = int($showid); + } + + return ($entry, 'OK', 'success'); +} + sub remove_multi_show { my ($ctx, $showid) = @_; diff --git a/utils/rhrd-show b/utils/rhrd-show index ef8cb7a..534f467 100755 --- a/utils/rhrd-show +++ b/utils/rhrd-show @@ -327,7 +327,7 @@ sub multi_list for my $href (@sorted) { my %showids = %{$href->{'SHOWS'}}; my $showstr = join(", ", map { "W$_: $showids{$_}" } sort keys %showids); - print $href->{'ID'} . ": " . $href->{'TITLE'} . ": (" . $showstr . ")\n"; + print $href->{'ID'} . ": " . $href->{'TITLE'} . " (" . $showstr . ")\n"; } return 0; } @@ -411,6 +411,31 @@ sub multi_add return 0; } +sub multi_show +{ + my ($ctx, $showid) = @_; + + my ($show, $status, $errorstring) = RHRD::rddb::get_multi_show_info($ctx, $showid); + unless (defined $show) { + print STDERR "$errorstring\n"; + return 1; + } + print $show->{'TITLE'} . ":\n"; + + my %showids = %{$show->{'SHOWS'}}; + foreach my $week (sort keys %showids) { + if($showids{$week} > 0) { + (my $title, undef, $status, $errorstring) = RHRD::rddb::get_show_title_and_log($ctx, $showids{$week}); + unless(defined $title) { + print STDERR $status . ": " . $errorstring . "\n"; + return 1; + } + print " - W" . $week . ": (" . $showids{$week} . ") " . $title . "\n"; + } + } + return 0; +} + sub multi_remove { my ($ctx, $showid) = @_; @@ -512,6 +537,14 @@ if(defined $ctx) { $ret = multi_add($ctx, $title, @ARGV) } } + elsif($cmd eq "multi-show") { + if($num_args != 2) { + print_usage(); + $ret = 1; + } else { + $ret = multi_show($ctx, $ARGV[1]); + } + } elsif($cmd eq "multi-remove") { if($num_args != 2) { print_usage(); -- cgit v0.10.2