From 308a989ca62ba7d97fa7a60a8940d9d2b6dbb7b7 Mon Sep 17 00:00:00 2001 From: Christian Pointner Date: Wed, 14 Sep 2016 22:05:48 +0200 Subject: harmonized input output values for mulit-show lib functions diff --git a/lib/RHRD/rddb.pm b/lib/RHRD/rddb.pm index d4ff7a5..5e0afbc 100755 --- a/lib/RHRD/rddb.pm +++ b/lib/RHRD/rddb.pm @@ -2036,7 +2036,9 @@ sub create_multi_show { my $ctx = shift; my $title = shift; - my $shows = join(";", @_); + my %shows = %{shift()}; + + my $showstr = join(";", map { "$_:$shows{$_}" } sort keys %shows); my ($number, $status, $errorstring) = get_next_free_multi_showid($ctx); unless (defined $number) { @@ -2048,7 +2050,7 @@ sub create_multi_show my $sth = $ctx->{'dbh'}->prepare($sql) or return (undef, 'ERROR', "Database Error: " . $ctx->{'dbh'}->errstr); - $sth->execute($number, $ctx->{'config'}{'specialgroups'}{'multishows'}, $title, $shows) + $sth->execute($number, $ctx->{'config'}{'specialgroups'}{'multishows'}, $title, $showstr) or return (undef, 'ERROR', "Database Error: " . $sth->errstr); $sth->finish(); diff --git a/utils/rhrd-show b/utils/rhrd-show index dad0800..d4646ba 100755 --- a/utils/rhrd-show +++ b/utils/rhrd-show @@ -38,7 +38,7 @@ sub print_usage " multi show handling:\n" . " rhrd-show multi-list\n" . " rhrd-show (multi-show|multi-remove) \n" . - " rhrd-show (multi-add) <week>:<show-id> [ <week>:<show-id> [ .. ] ]\n" . + " rhrd-show (multi-add) <title> <week>=<show-id> [ <week>=<show-id> [ .. ] ]\n" . " rhrd-show (multi-add-id|multi-remove-id) <multi-show-id> <show-id> [ <show-id> [ .. ] ]\n"; } @@ -333,80 +333,81 @@ sub multi_list } -sub multi_add__check_shows +sub multi_add__parse_shows { my $ctx = shift; - my @shows = @_; - my %weeks = ( 1 => 0, 2 => 0, 3 => 0, 4 => 0 ); - - foreach my $show (@shows) { - my ($week, $show_id) = split(':', $show, 2); + my %shows = ( 1 => 0, 2 => 0, 3 => 0, 4 => 0 ); + foreach my $show (@_) { + my ($week, $show_id) = split('=', $show, 2); unless(defined $week && defined $show_id) { - print STDERR "'" . $show . "' is invalid, needs to have format <week>:<showid>\n"; - return 1; + print STDERR "'" . $show . "' is invalid, needs to have format <week>=<showid>\n"; + return undef; } $week = int($week); if($week < 1 || $week > 4) { print STDERR "week '" . $week . "' is out of range (needs to be 1,2,3 or 4)\n"; - return 1; + return undef; } - if($weeks{$week} != 0) { - print STDERR "week " . $week . " is already set to show-id $weeks{$week}\n"; - return 1; + if($shows{$week} != 0) { + print STDERR "week " . $week . " is already set to show-id $shows{$week}\n"; + return undef; } $show_id = int($show_id); my ($show_id_min, $show_id_max, $errorstring) = RHRD::rddb::get_showid_range($ctx); unless(defined $show_id_min) { print STDERR $show_id_max . ": " . $errorstring . "\n"; - return 1; + return undef; } if ($show_id < $show_id_min || $show_id > $show_id_max) { print STDERR "show-id '" . $show_id . "' is out of range (min: $show_id_min, max: $show_id_max)\n"; - return 1; + return undef; } (my $exists, my $status, $errorstring) = RHRD::rddb::check_show_exists($ctx, $show_id); unless(defined $exists) { print STDERR $status . ": " . $errorstring . "\n"; - return 1; + return undef; } if($exists != 1) { print STDERR "show with id '" . $show_id . "' does not exist!\n"; - return 1; + return undef; } (my $title, undef, $status, $errorstring) = RHRD::rddb::get_show_title_and_log($ctx, $show_id); unless(defined $title) { print STDERR $status . ": " . $errorstring . "\n"; - return 1; + return undef; } - $weeks{$week} = $show_id; + $shows{$week} = $show_id; - print "W$week: ($show_id) $title\n"; + print " - W$week: ($show_id) $title\n"; } - return 0; + return \%shows; } sub multi_add { my $ctx = shift; my $title = shift; - my @shows = @_; - my $ret = multi_add__check_shows($ctx, @shows); - if($ret) { - return $ret; + print " * creating multi-show: " . $title . "\n"; + + my %shows = %{multi_add__parse_shows($ctx, @_)}; + unless(%shows) { + return 1; } - my ($result, $status, $errorstring) = RHRD::rddb::create_multi_show($ctx, $title, @shows); + my ($result, $status, $errorstring) = RHRD::rddb::create_multi_show($ctx, $title, \%shows); unless(defined $result) { print STDERR $status . ": " . $errorstring . "\n"; return 1; } + print " * finished\n"; + return 0; } -- cgit v0.10.2