diff options
-rw-r--r-- | TODO | 1 | ||||
-rwxr-xr-x | rhimport | 4 | ||||
-rw-r--r-- | rhimport.pm | 27 |
3 files changed, 25 insertions, 7 deletions
@@ -1,5 +1,4 @@ * multi-cart-show - upload a single file.. -* multi-cart/pool - check size of pool vs length of m3u * add "show log" button after import @@ -267,7 +267,7 @@ sub start_import_gui() $log = rhimport::clear_carts($dbh, $group, $to_cart, $gui_progress_cb); } my $import_log; - ($ret, $import_log) = rhimport::import_playlist($file, $dropbox, $user, $gui_progress_cb, $gui_error_cb); + ($ret, $import_log) = rhimport::import_playlist($file, $dropbox, $user, rhimport::get_num_carts($dbh, $group) ,$gui_progress_cb, $gui_error_cb); $log .= $import_log; } else { $log = rhimport::clear_carts($dbh, $group, $to_cart, $gui_progress_cb); @@ -443,7 +443,7 @@ if($POOL) { } my $import_log; - ($ret, $import_log) = rhimport::import_playlist($FILE, $DROPBOX, $user, 0, $cl_error_cb); + ($ret, $import_log) = rhimport::import_playlist($FILE, $DROPBOX, $user, rhimport::get_num_carts($dbh, $group), 0, $cl_error_cb); $log .= $import_log; } else { $log = rhimport::clear_carts($dbh, $group, $to_cart); diff --git a/rhimport.pm b/rhimport.pm index 6597fb4..7ecc2fe 100644 --- a/rhimport.pm +++ b/rhimport.pm @@ -108,6 +108,14 @@ sub get_used_carts return @carts; } +sub get_num_carts +{ + my ($dbh, $group) = @_; + + my ($low_cart, $high_cart) = get_cart_range($dbh, $group); + return $high_cart - $low_cart + 1; +} + sub clear_carts { my ($dbh, $group, $to_cart, $progress_cb) = @_; @@ -150,7 +158,7 @@ sub clear_carts sub import_playlist { - my ($playlist, $dropbox, $user, $progress_cb, $error_cb) = @_; + my ($playlist, $dropbox, $user, $num_carts, $progress_cb, $error_cb) = @_; print "Starting import from playlist $playlist to $dropbox"; my @entries; @@ -165,10 +173,21 @@ sub import_playlist } close(FILE); my $num_entries = scalar(@entries); - print " ($num_entries Files in list)\n"; - + print " ($num_entries Files in list -> $num_carts available)\n"; + + if($num_carts < $num_entries) { + if($error_cb) { + my $ret = $error_cb->("Achtung!\nDie Playlist beinhaltet mehr als $num_carts Dateien. Es werden nur die ersten $num_carts Dateien importiert."); + if(!$ret) { + return 0, "too many files in playlist"; + } + + $#entries = $num_carts-1; + $num_entries = scalar(@entries); + } + } + print "will import $num_entries files\n"; - return (0, ""); my $cnt = 0; my $ret = 0; my $log = ""; |