From 66aacace086f16d2eca860cc6c2aa164866d0488 Mon Sep 17 00:00:00 2001 From: Jonathan Druart Date: Tue, 29 Mar 2016 09:15:43 +0100 Subject: [PATCH] Bug 16154: CGI->multi_param - Declare a list This patch replaces the occurrences of my @foo = $cgi->param('foo'); with my @foo = $cgi->multi_param('foo'); perl -p -i -e 's/^(\s*my\s*@\w+\s*=\s*)\$(cgi|input|query)\->param\(/$1\$$2\->multi_param\(/xms' **/*.pl Signed-off-by: Owen Leonard Signed-off-by: Katrin Fischer Signed-off-by: Brendan Gallagher --- acqui/addorder.pl | 14 ++++---- acqui/addorderiso2709.pl | 26 +++++++------- acqui/basketgroup.pl | 2 +- acqui/check_duplicate_barcode_ajax.pl | 2 +- acqui/check_uniqueness.pl | 4 +-- acqui/finishreceive.pl | 14 ++++---- acqui/histsearch.pl | 2 +- acqui/invoice.pl | 2 +- acqui/lateorders-export.pl | 2 +- acqui/lateorders.pl | 2 +- acqui/z3950_search.pl | 2 +- admin/aqplan.pl | 4 +-- admin/audio_alerts.pl | 2 +- admin/auth_subfields_structure.pl | 20 +++++------ admin/columns_settings.pl | 2 +- admin/marc_subfields_structure.pl | 26 +++++++------- admin/oai_set_mappings.pl | 8 ++--- admin/oai_sets.pl | 4 +-- admin/patron-attr-types.pl | 2 +- authorities/auth_finder.pl | 10 +++--- authorities/authorities.pl | 10 +++--- authorities/merge.pl | 2 +- authorities/ysearch.pl | 8 ++--- catalogue/itemsearch.pl | 18 +++++----- catalogue/search.pl | 4 +-- cataloguing/addbiblio.pl | 2 +- cataloguing/addbooks.pl | 2 +- cataloguing/additem.pl | 20 +++++------ cataloguing/merge.pl | 2 +- .../value_builder/unimarc_field_210c.pl | 10 +++--- cataloguing/z3950_auth_search.pl | 2 +- cataloguing/z3950_search.pl | 2 +- circ/circulation.pl | 4 +-- course_reserves/mod_course.pl | 2 +- members/member-flags.pl | 2 +- members/memberentry.pl | 2 +- opac/ilsdi.pl | 2 +- opac/opac-account-pay-paypal-return.pl | 2 +- opac/opac-account-pay.pl | 2 +- opac/opac-renew.pl | 2 +- opac/opac-search-history.pl | 4 +-- opac/opac-search.pl | 18 +++++----- opac/opac-shelves.pl | 2 +- opac/opac-suggestions.pl | 2 +- patron_lists/list.pl | 4 +-- patroncards/create-pdf.pl | 4 +-- patroncards/image-manage.pl | 2 +- patroncards/print.pl | 6 ++-- reports/acquisitions_stats.pl | 2 +- reports/bor_issues_top.pl | 2 +- reports/borrowers_out.pl | 2 +- reports/borrowers_stats.pl | 2 +- reports/cat_issues_top.pl | 2 +- reports/catalogue_out.pl | 2 +- reports/catalogue_stats.pl | 2 +- reports/dictionary.pl | 4 +-- reports/guided_reports.pl | 14 ++++---- reports/issues_avg_stats.pl | 2 +- reports/issues_stats.pl | 2 +- reports/manager.pl | 2 +- reserve/modrequest.pl | 14 ++++---- reserve/placerequest.pl | 6 ++-- serials/claims.pl | 2 +- serials/lateissues-export.pl | 2 +- serials/serials-collection.pl | 2 +- serials/serials-edit.pl | 34 +++++++++---------- serials/subscription-add.pl | 4 +-- suggestion/suggestion.pl | 2 +- tools/automatic_item_modification_by_age.pl | 10 +++--- tools/batchMod.pl | 14 ++++---- tools/batch_delete_records.pl | 2 +- tools/batch_record_modification.pl | 2 +- tools/export.pl | 6 ++-- tools/koha-news.pl | 2 +- tools/letter.pl | 6 ++-- tools/modborrowers.pl | 8 ++--- tools/overduerules.pl | 4 +-- tools/viewlog.pl | 4 +-- virtualshelves/addbybiblionumber.pl | 2 +- virtualshelves/shelves.pl | 2 +- 80 files changed, 229 insertions(+), 229 deletions(-) diff --git a/acqui/addorder.pl b/acqui/addorder.pl index e5480ef9e3..1e60f79d5a 100755 --- a/acqui/addorder.pl +++ b/acqui/addorder.pl @@ -280,13 +280,13 @@ if ( $orderinfo->{quantity} ne '0' ) { # now, add items if applicable if (C4::Context->preference('AcqCreateItem') eq 'ordering') { - my @tags = $input->param('tag'); - my @subfields = $input->param('subfield'); - my @field_values = $input->param('field_value'); - my @serials = $input->param('serial'); - my @itemid = $input->param('itemid'); - my @ind_tag = $input->param('ind_tag'); - my @indicator = $input->param('indicator'); + my @tags = $input->multi_param('tag'); + my @subfields = $input->multi_param('subfield'); + my @field_values = $input->multi_param('field_value'); + my @serials = $input->multi_param('serial'); + my @itemid = $input->multi_param('itemid'); + my @ind_tag = $input->multi_param('ind_tag'); + my @indicator = $input->multi_param('indicator'); #Rebuilding ALL the data for items into a hash # parting them on $itemid. diff --git a/acqui/addorderiso2709.pl b/acqui/addorderiso2709.pl index 0f59a62a19..e5159dc74b 100755 --- a/acqui/addorderiso2709.pl +++ b/acqui/addorderiso2709.pl @@ -133,13 +133,13 @@ if ($op eq ""){ my $biblios = GetImportRecordsRange($import_batch_id); my $duplinbatch; my $imported = 0; - my @import_record_id_selected = $input->param("import_record_id"); - my @quantities = $input->param('quantity'); - my @prices = $input->param('price'); - my @budgets_id = $input->param('budget_id'); - my @discount = $input->param('discount'); - my @sort1 = $input->param('sort1'); - my @sort2 = $input->param('sort2'); + my @import_record_id_selected = $input->multi_param("import_record_id"); + my @quantities = $input->multi_param('quantity'); + my @prices = $input->multi_param('price'); + my @budgets_id = $input->multi_param('budget_id'); + my @discount = $input->multi_param('discount'); + my @sort1 = $input->multi_param('sort1'); + my @sort2 = $input->multi_param('sort2'); my $active_currency = Koha::Acquisition::Currencies->get_active; for my $biblio (@$biblios){ # Check if this import_record_id was selected @@ -239,12 +239,12 @@ if ($op eq ""){ # parse the item sent by the form, and create an item just for the import_record_id we are dealing with # this is not optimised, but it's working ! if ( C4::Context->preference('AcqCreateItem') eq 'ordering' ) { - my @tags = $input->param('tag'); - my @subfields = $input->param('subfield'); - my @field_values = $input->param('field_value'); - my @serials = $input->param('serial'); - my @ind_tag = $input->param('ind_tag'); - my @indicator = $input->param('indicator'); + my @tags = $input->multi_param('tag'); + my @subfields = $input->multi_param('subfield'); + my @field_values = $input->multi_param('field_value'); + my @serials = $input->multi_param('serial'); + my @ind_tag = $input->multi_param('ind_tag'); + my @indicator = $input->multi_param('indicator'); my $item; push @{ $item->{tags} }, $tags[0]; push @{ $item->{subfields} }, $subfields[0]; diff --git a/acqui/basketgroup.pl b/acqui/basketgroup.pl index 6492223bd2..85422cbcdc 100755 --- a/acqui/basketgroup.pl +++ b/acqui/basketgroup.pl @@ -340,7 +340,7 @@ if ( $op eq "add" ) { # # Getting parameters my $basketgroup = {}; - my @baskets = $input->param('basket'); + my @baskets = $input->multi_param('basket'); my $basketgroupid = $input->param('basketgroupid'); my $basketgroupname = $input->param('basketgroupname'); my $booksellerid = $input->param('booksellerid'); diff --git a/acqui/check_duplicate_barcode_ajax.pl b/acqui/check_duplicate_barcode_ajax.pl index fcd85fef60..1655ac4be1 100755 --- a/acqui/check_duplicate_barcode_ajax.pl +++ b/acqui/check_duplicate_barcode_ajax.pl @@ -41,7 +41,7 @@ if ($auth_status ne "ok") { my $json; #Check if the barcodes already exist. -my @barcodes = $input->param('barcodes'); +my @barcodes = $input->multi_param('barcodes'); foreach my $barcode (@barcodes) { my $existing_itemnumber = GetItemnumberFromBarcode($barcode); if ($existing_itemnumber) { diff --git a/acqui/check_uniqueness.pl b/acqui/check_uniqueness.pl index 1d700b6a6f..70d95ddd7b 100755 --- a/acqui/check_uniqueness.pl +++ b/acqui/check_uniqueness.pl @@ -37,8 +37,8 @@ use C4::Output; use C4::Items; my $input = new CGI; -my @field = $input->param('field[]'); -my @value = $input->param('value[]'); +my @field = $input->multi_param('field[]'); +my @value = $input->multi_param('value[]'); my $r = {}; my $i = 0; diff --git a/acqui/finishreceive.pl b/acqui/finishreceive.pl index cc022b33e6..06be5b0a48 100755 --- a/acqui/finishreceive.pl +++ b/acqui/finishreceive.pl @@ -122,13 +122,13 @@ if ($quantityrec > $origquantityrec ) { # now, add items if applicable if (C4::Context->preference('AcqCreateItem') eq 'receiving') { - my @tags = $input->param('tag'); - my @subfields = $input->param('subfield'); - my @field_values = $input->param('field_value'); - my @serials = $input->param('serial'); - my @itemid = $input->param('itemid'); - my @ind_tag = $input->param('ind_tag'); - my @indicator = $input->param('indicator'); + my @tags = $input->multi_param('tag'); + my @subfields = $input->multi_param('subfield'); + my @field_values = $input->multi_param('field_value'); + my @serials = $input->multi_param('serial'); + my @itemid = $input->multi_param('itemid'); + my @ind_tag = $input->multi_param('ind_tag'); + my @indicator = $input->multi_param('indicator'); #Rebuilding ALL the data for items into a hash # parting them on $itemid. my %itemhash; diff --git a/acqui/histsearch.pl b/acqui/histsearch.pl index efb9468356..e9879c5de0 100755 --- a/acqui/histsearch.pl +++ b/acqui/histsearch.pl @@ -74,7 +74,7 @@ my $budget = $input->param( 'budget' ); my $orderstatus = $input->param( 'orderstatus' ); my $ordernumber = $input->param( 'ordernumber' ); my $search_children_too = $input->param( 'search_children_too' ); -my @created_by = $input->param('created_by'); +my @created_by = $input->multi_param('created_by'); my $from_placed_on = eval { dt_from_string( $input->param('from') ) } || dt_from_string; my $to_placed_on = eval { dt_from_string( $input->param('to') ) } || dt_from_string; diff --git a/acqui/invoice.pl b/acqui/invoice.pl index 3eb52284a5..ab01a143b8 100755 --- a/acqui/invoice.pl +++ b/acqui/invoice.pl @@ -92,7 +92,7 @@ elsif ( $op && $op eq 'mod' ) { } elsif ($input->param('close')) { CloseInvoice($invoiceid); } elsif ($input->param('merge')) { - my @sources = $input->param('merge'); + my @sources = $input->multi_param('merge'); MergeInvoices($invoiceid, \@sources); defined($invoice_files) && $invoice_files->MergeFileRecIds(@sources); } diff --git a/acqui/lateorders-export.pl b/acqui/lateorders-export.pl index 2028eda560..c8d86e6be4 100755 --- a/acqui/lateorders-export.pl +++ b/acqui/lateorders-export.pl @@ -31,7 +31,7 @@ my ($template, $loggedinuser, $cookie) = get_template_and_user({ authnotrequired => 0, flagsrequired => {acquisition => 'order_receive'}, }); -my @ordernumbers = $input->param('ordernumber'); +my @ordernumbers = $input->multi_param('ordernumber'); my @orders; for my $ordernumber ( @ordernumbers ) { diff --git a/acqui/lateorders.pl b/acqui/lateorders.pl index 2d6fdc5348..872d0af18b 100755 --- a/acqui/lateorders.pl +++ b/acqui/lateorders.pl @@ -103,7 +103,7 @@ if ( $delay and not $delay =~ /^\d{1,3}$/ ) { } if ($op and $op eq "send_alert"){ - my @ordernums = $input->param("ordernumber");# FIXME: Fallback values? + my @ordernums = $input->multi_param("ordernumber");# FIXME: Fallback values? my $err; eval { $err = SendAlerts( 'claimacquisition', \@ordernums, $input->param("letter_code") ); # FIXME: Fallback value? diff --git a/acqui/z3950_search.pl b/acqui/z3950_search.pl index b11c508228..b2b5124463 100755 --- a/acqui/z3950_search.pl +++ b/acqui/z3950_search.pl @@ -110,7 +110,7 @@ if ( $op ne "do_search" ) { exit; } -my @id = $input->param('id'); +my @id = $input->multi_param('id'); if (@id==0) { $template->param( emptyserverlist => 1 ); output_html_with_http_headers $input, $cookie, $template->output; diff --git a/admin/aqplan.pl b/admin/aqplan.pl index 20a8b004a3..ccef48fb18 100755 --- a/admin/aqplan.pl +++ b/admin/aqplan.pl @@ -96,7 +96,7 @@ my $del = $input->param("sep"); my $show_mine = $input->param('show_mine') ; -my @hide_cols = $input->param('hide_cols'); +my @hide_cols = $input->multi_param('hide_cols'); if ( $budget_period_locked == 1 && not defined $show_actual ) { $show_actual = 1; @@ -141,7 +141,7 @@ my @budgets = @$budgets_ref; my @authvals; my %labels; -my @names = $input->param(); +my @names = $input->multi_param(); # ------------------------------------------------------------ if ( $op eq 'save' ) { #get budgets diff --git a/admin/audio_alerts.pl b/admin/audio_alerts.pl index fa55b28dfb..bf0c0ae83c 100755 --- a/admin/audio_alerts.pl +++ b/admin/audio_alerts.pl @@ -32,7 +32,7 @@ my $sound = $cgi->param('sound'); my $id = $cgi->param('id'); my $action = $cgi->param('action'); my $where = $cgi->param('where'); -my @delete = $cgi->param('delete'); +my @delete = $cgi->multi_param('delete'); my ( $template, $loggedinuser, $cookie ) = get_template_and_user( { diff --git a/admin/auth_subfields_structure.pl b/admin/auth_subfields_structure.pl index e26aa79196..ffa74f2746 100755 --- a/admin/auth_subfields_structure.pl +++ b/admin/auth_subfields_structure.pl @@ -192,18 +192,18 @@ if ($op eq 'add_form') { values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); my $sth_update = $dbh->prepare("update auth_subfield_structure set authtypecode=?, tagfield=?, tagsubfield=?, liblibrarian=?, libopac=?, repeatable=?, mandatory=?, kohafield=?, tab=?, seealso=?, authorised_value=?, frameworkcode=?, value_builder=?, hidden=?, isurl=?, defaultvalue=? where authtypecode=? and tagfield=? and tagsubfield=?"); - my @tagsubfield = $input->param('tagsubfield'); - my @liblibrarian = $input->param('liblibrarian'); - my @libopac = $input->param('libopac'); + my @tagsubfield = $input->multi_param('tagsubfield'); + my @liblibrarian = $input->multi_param('liblibrarian'); + my @libopac = $input->multi_param('libopac'); my @kohafield = ''.$input->param('kohafield'); - my @tab = $input->param('tab'); - my @seealso = $input->param('seealso'); - my @ohidden = $input->param('ohidden'); - my @authorised_values = $input->param('authorised_value'); + my @tab = $input->multi_param('tab'); + my @seealso = $input->multi_param('seealso'); + my @ohidden = $input->multi_param('ohidden'); + my @authorised_values = $input->multi_param('authorised_value'); my $authtypecode = $input->param('authtypecode'); - my @frameworkcodes = $input->param('frameworkcode'); - my @value_builder =$input->param('value_builder'); - my @defaultvalue = $input->param('defaultvalue'); + my @frameworkcodes = $input->multi_param('frameworkcode'); + my @value_builder =$input->multi_param('value_builder'); + my @defaultvalue = $input->multi_param('defaultvalue'); for (my $i=0; $i<= $#tagsubfield ; $i++) { my $tagfield =$input->param('tagfield'); my $tagsubfield =$tagsubfield[$i]; diff --git a/admin/columns_settings.pl b/admin/columns_settings.pl index e61782c5ff..4c8714270e 100755 --- a/admin/columns_settings.pl +++ b/admin/columns_settings.pl @@ -24,7 +24,7 @@ my $action = $input->param('action') // 'list'; if ( $action eq 'save' ) { my $module = $input->param('module'); - my @columnids = $input->param("columnid"); + my @columnids = $input->multi_param("columnid"); my @columns; for my $columnid (@columnids) { next unless $columnid =~ m|^([^#]*)#([^#]*)#(.*)$|; diff --git a/admin/marc_subfields_structure.pl b/admin/marc_subfields_structure.pl index 979d7ec2b2..22d4398c2c 100755 --- a/admin/marc_subfields_structure.pl +++ b/admin/marc_subfields_structure.pl @@ -249,19 +249,19 @@ elsif ( $op eq 'add_validate' ) { update marc_subfield_structure set tagfield=?, tagsubfield=?, liblibrarian=?, libopac=?, repeatable=?, mandatory=?, kohafield=?, tab=?, seealso=?, authorised_value=?, authtypecode=?, value_builder=?, hidden=?, isurl=?, frameworkcode=?, link=?, defaultvalue=?, maxlength=? where tagfield=? and tagsubfield=? and frameworkcode=? }); - my @tagsubfield = $input->param('tagsubfield'); - my @liblibrarian = $input->param('liblibrarian'); - my @libopac = $input->param('libopac'); - my @kohafield = $input->param('kohafield'); - my @tab = $input->param('tab'); - my @seealso = $input->param('seealso'); - my @hidden = $input->param('hidden'); - my @authorised_values = $input->param('authorised_value'); - my @authtypecodes = $input->param('authtypecode'); - my @value_builder = $input->param('value_builder'); - my @link = $input->param('link'); - my @defaultvalue = $input->param('defaultvalue'); - my @maxlength = $input->param('maxlength'); + my @tagsubfield = $input->multi_param('tagsubfield'); + my @liblibrarian = $input->multi_param('liblibrarian'); + my @libopac = $input->multi_param('libopac'); + my @kohafield = $input->multi_param('kohafield'); + my @tab = $input->multi_param('tab'); + my @seealso = $input->multi_param('seealso'); + my @hidden = $input->multi_param('hidden'); + my @authorised_values = $input->multi_param('authorised_value'); + my @authtypecodes = $input->multi_param('authtypecode'); + my @value_builder = $input->multi_param('value_builder'); + my @link = $input->multi_param('link'); + my @defaultvalue = $input->multi_param('defaultvalue'); + my @maxlength = $input->multi_param('maxlength'); for ( my $i = 0 ; $i <= $#tagsubfield ; $i++ ) { my $tagfield = $input->param('tagfield'); diff --git a/admin/oai_set_mappings.pl b/admin/oai_set_mappings.pl index 04429b6e73..8c6b0d4255 100755 --- a/admin/oai_set_mappings.pl +++ b/admin/oai_set_mappings.pl @@ -53,10 +53,10 @@ my $id = $input->param('id'); my $op = $input->param('op'); if($op && $op eq "save") { - my @marcfields = $input->param('marcfield'); - my @marcsubfields = $input->param('marcsubfield'); - my @operators = $input->param('operator'); - my @marcvalues = $input->param('marcvalue'); + my @marcfields = $input->multi_param('marcfield'); + my @marcsubfields = $input->multi_param('marcsubfield'); + my @operators = $input->multi_param('operator'); + my @marcvalues = $input->multi_param('marcvalue'); my @mappings; my $i = 0; diff --git a/admin/oai_sets.pl b/admin/oai_sets.pl index 1ac919b617..1413022879 100755 --- a/admin/oai_sets.pl +++ b/admin/oai_sets.pl @@ -52,7 +52,7 @@ if($op && $op eq "new") { } elsif($op && $op eq "savenew") { my $spec = $input->param('spec'); my $name = $input->param('name'); - my @descriptions = $input->param('description'); + my @descriptions = $input->multi_param('description'); AddOAISet({ spec => $spec, name => $name, @@ -72,7 +72,7 @@ if($op && $op eq "new") { my $id = $input->param('id'); my $spec = $input->param('spec'); my $name = $input->param('name'); - my @descriptions = $input->param('description'); + my @descriptions = $input->multi_param('description'); ModOAISet({ id => $id, spec => $spec, diff --git a/admin/patron-attr-types.pl b/admin/patron-attr-types.pl index 3c978e9d14..261d94bfd3 100755 --- a/admin/patron-attr-types.pl +++ b/admin/patron-attr-types.pl @@ -168,7 +168,7 @@ sub add_update_attribute_type { $attr_type->display_checkout($display_checkout); $attr_type->category_code($input->param('category_code')); $attr_type->class($input->param('class')); - my @branches = $input->param('branches'); + my @branches = $input->multi_param('branches'); $attr_type->branches( \@branches ); if ($op eq 'edit') { diff --git a/authorities/auth_finder.pl b/authorities/auth_finder.pl index 7c155c0349..2966342116 100755 --- a/authorities/auth_finder.pl +++ b/authorities/auth_finder.pl @@ -55,10 +55,10 @@ my $authority_types = Koha::Authority::Types->search( {}, { order_by => ['authty # If search form posted if ( $op eq "do_search" ) { - my @marclist = $query->param('marclist'); - my @and_or = $query->param('and_or'); - my @excluding = $query->param('excluding'); - my @operator = $query->param('operator'); + my @marclist = $query->multi_param('marclist'); + my @and_or = $query->multi_param('and_or'); + my @excluding = $query->multi_param('excluding'); + my @operator = $query->multi_param('operator'); my @value = ( $query->param('value_mainstr') || undef, $query->param('value_main') || undef, @@ -84,7 +84,7 @@ if ( $op eq "do_search" ) { my @field_data = (); # get marclist again, as the previous one has been modified by catalogsearch (mainentry replaced by field name) - my @marclist_ini = $query->param('marclist'); + my @marclist_ini = $query->multi_param('marclist'); for ( my $i = 0 ; $i <= $#marclist ; $i++ ) { push @field_data, { term => "marclist", val => $marclist_ini[$i] }; push @field_data, { term => "and_or", val => $and_or[$i] }; diff --git a/authorities/authorities.pl b/authorities/authorities.pl index bc2c8d415e..1e49d9609e 100755 --- a/authorities/authorities.pl +++ b/authorities/authorities.pl @@ -606,12 +606,12 @@ $op ||= q{}; if ($op eq "add") { #------------------------------------------------------------------------------------------------------------------------------ # rebuild - my @tags = $input->param('tag'); - my @subfields = $input->param('subfield'); - my @values = $input->param('field_value'); + my @tags = $input->multi_param('tag'); + my @subfields = $input->multi_param('subfield'); + my @values = $input->multi_param('field_value'); # build indicator hash. - my @ind_tag = $input->param('ind_tag'); - my @indicator = $input->param('indicator'); + my @ind_tag = $input->multi_param('ind_tag'); + my @indicator = $input->multi_param('indicator'); my $record = TransformHtmlToMarc($input, 0); my ($duplicateauthid,$duplicateauthvalue); diff --git a/authorities/merge.pl b/authorities/merge.pl index 16efdd5522..b423122efd 100755 --- a/authorities/merge.pl +++ b/authorities/merge.pl @@ -28,7 +28,7 @@ use C4::Koha; use C4::Biblio; my $input = new CGI; -my @authid = $input->param('authid'); +my @authid = $input->multi_param('authid'); my $merge = $input->param('merge'); my @errors; diff --git a/authorities/ysearch.pl b/authorities/ysearch.pl index 968499989a..4a5ae796a7 100755 --- a/authorities/ysearch.pl +++ b/authorities/ysearch.pl @@ -48,13 +48,13 @@ if ( $auth_status ne "ok" ) { exit 0; } - my @value = $query->param('term'); + my @value = $query->multi_param('term'); my $searchtype = $query->param('querytype'); my @marclist = ($searchtype); my $authtypecode = $query->param('authtypecode'); - my @and_or = $query->param('and_or'); - my @excluding = $query->param('excluding'); - my @operator = $query->param('operator'); + my @and_or = $query->multi_param('and_or'); + my @excluding = $query->multi_param('excluding'); + my @operator = $query->multi_param('operator'); my $orderby = $query->param('orderby'); my $resultsperpage = 50; diff --git a/catalogue/itemsearch.pl b/catalogue/itemsearch.pl index 0378e483e3..ff614e2167 100755 --- a/catalogue/itemsearch.pl +++ b/catalogue/itemsearch.pl @@ -47,11 +47,11 @@ if (defined $format and $format eq 'json') { $cgi->param('sortby', $columns[ $cgi->param('iSortCol_0') ]); $cgi->param('sortorder', $cgi->param('sSortDir_0')); - my @f = $cgi->param('f'); - my @q = $cgi->param('q'); + my @f = $cgi->multi_param('f'); + my @q = $cgi->multi_param('q'); push @q, '' if @q == 0; - my @op = $cgi->param('op'); - my @c = $cgi->param('c'); + my @op = $cgi->multi_param('op'); + my @c = $cgi->multi_param('c'); foreach my $i (0 .. ($cgi->param('iColumns') - 1)) { my $sSearch = $cgi->param("sSearch_$i"); if (defined $sSearch and $sSearch ne '') { @@ -116,10 +116,10 @@ if (scalar keys %params > 0) { } } - my @c = $cgi->param('c'); - my @fields = $cgi->param('f'); - my @q = $cgi->param('q'); - my @op = $cgi->param('op'); + my @c = $cgi->multi_param('c'); + my @fields = $cgi->multi_param('f'); + my @q = $cgi->multi_param('q'); + my @op = $cgi->multi_param('op'); my $f; for (my $i = 0; $i < @fields; $i++) { @@ -232,7 +232,7 @@ if (scalar keys %params > 0) { my $url = '/cgi-bin/koha/catalogue/itemsearch.pl'; my @params; foreach my $p (keys %params) { - my @v = $cgi->param($p); + my @v = $cgi->multi_param($p); push @params, map { "$p=" . $_ } @v; } $url .= '?' . join ('&', @params); diff --git a/catalogue/search.pl b/catalogue/search.pl index 653ce4c3b7..3935851545 100755 --- a/catalogue/search.pl +++ b/catalogue/search.pl @@ -168,7 +168,7 @@ my $cgi = new CGI; # decide which template to use my $template_name; my $template_type; -my @params = $cgi->param("limit"); +my @params = $cgi->multi_param("limit"); if ((@params>=1) || ($cgi->param("q")) || ($cgi->param('multibranchlimit')) || ($cgi->param('limit-yr')) ) { $template_name = 'catalogue/results.tt'; } @@ -373,7 +373,7 @@ foreach my $sort (@sort_by) { $template->param('sort_by' => $sort_by[0]); # Use the servers defined, or just search our local catalog(default) -my @servers = $cgi->param('server'); +my @servers = $cgi->multi_param('server'); unless (@servers) { #FIXME: this should be handled using Context.pm @servers = ("biblioserver"); diff --git a/cataloguing/addbiblio.pl b/cataloguing/addbiblio.pl index 44d5907b2f..57a0083af1 100755 --- a/cataloguing/addbiblio.pl +++ b/cataloguing/addbiblio.pl @@ -833,7 +833,7 @@ if ( $op eq "addbiblio" ) { biblionumberdata => $biblionumber, ); # getting html input - my @params = $input->param(); + my @params = $input->multi_param(); $record = TransformHtmlToMarc( $input, 1 ); # check for a duplicate my ( $duplicatebiblionumber, $duplicatetitle ); diff --git a/cataloguing/addbooks.pl b/cataloguing/addbooks.pl index 86833ebb3a..672a070ef0 100755 --- a/cataloguing/addbooks.pl +++ b/cataloguing/addbooks.pl @@ -41,7 +41,7 @@ my $input = new CGI; my $success = $input->param('biblioitem'); my $query = $input->param('q'); -my @value = $input->param('value'); +my @value = $input->multi_param('value'); my $page = $input->param('page') || 1; my $results_per_page = 20; diff --git a/cataloguing/additem.pl b/cataloguing/additem.pl index eb52415ee9..72618e5ce0 100755 --- a/cataloguing/additem.pl +++ b/cataloguing/additem.pl @@ -429,12 +429,12 @@ if ($op eq "additem") { #------------------------------------------------------------------------------- # rebuild - my @tags = $input->param('tag'); - my @subfields = $input->param('subfield'); - my @values = $input->param('field_value'); + my @tags = $input->multi_param('tag'); + my @subfields = $input->multi_param('subfield'); + my @values = $input->multi_param('field_value'); # build indicator hash. - my @ind_tag = $input->param('ind_tag'); - my @indicator = $input->param('indicator'); + my @ind_tag = $input->multi_param('ind_tag'); + my @indicator = $input->multi_param('indicator'); my $xml = TransformHtmlToXml(\@tags,\@subfields,\@values,\@indicator,\@ind_tag, 'ITEM'); my $record = MARC::Record::new_from_xml($xml, 'UTF-8'); @@ -671,12 +671,12 @@ if ($op eq "additem") { } elsif ($op eq "saveitem") { #------------------------------------------------------------------------------- # rebuild - my @tags = $input->param('tag'); - my @subfields = $input->param('subfield'); - my @values = $input->param('field_value'); + my @tags = $input->multi_param('tag'); + my @subfields = $input->multi_param('subfield'); + my @values = $input->multi_param('field_value'); # build indicator hash. - my @ind_tag = $input->param('ind_tag'); - my @indicator = $input->param('indicator'); + my @ind_tag = $input->multi_param('ind_tag'); + my @indicator = $input->multi_param('indicator'); # my $itemnumber = $input->param('itemnumber'); my $xml = TransformHtmlToXml(\@tags,\@subfields,\@values,\@indicator,\@ind_tag,'ITEM'); my $itemtosave=MARC::Record::new_from_xml($xml, 'UTF-8'); diff --git a/cataloguing/merge.pl b/cataloguing/merge.pl index fc96d3cfcb..54a937d617 100755 --- a/cataloguing/merge.pl +++ b/cataloguing/merge.pl @@ -32,7 +32,7 @@ use C4::Acquisition qw/ModOrder GetOrdersByBiblionumber/; use Koha::MetadataRecord; my $input = new CGI; -my @biblionumbers = $input->param('biblionumber'); +my @biblionumbers = $input->multi_param('biblionumber'); my $merge = $input->param('merge'); my @errors; diff --git a/cataloguing/value_builder/unimarc_field_210c.pl b/cataloguing/value_builder/unimarc_field_210c.pl index 0d0a07016e..186d46406e 100755 --- a/cataloguing/value_builder/unimarc_field_210c.pl +++ b/cataloguing/value_builder/unimarc_field_210c.pl @@ -70,11 +70,11 @@ my ($input) = @_; my $resultsperpage; if ($op eq "do_search") { - my @marclist = $query->param('marclist'); - my @and_or = $query->param('and_or'); - my @excluding = $query->param('excluding'); - my @operator = $query->param('operator'); - my @value = $query->param('value'); + my @marclist = $query->multi_param('marclist'); + my @and_or = $query->multi_param('and_or'); + my @excluding = $query->multi_param('excluding'); + my @operator = $query->multi_param('operator'); + my @value = $query->multi_param('value'); my $orderby = $query->param('orderby'); $resultsperpage= $query->param('resultsperpage'); diff --git a/cataloguing/z3950_auth_search.pl b/cataloguing/z3950_auth_search.pl index 8ea4f41204..960b5aa94d 100755 --- a/cataloguing/z3950_auth_search.pl +++ b/cataloguing/z3950_auth_search.pl @@ -77,7 +77,7 @@ if ( $op ne "do_search" ) { exit; } -my @id = $input->param('id'); +my @id = $input->multi_param('id'); if ( @id==0 ) { # empty server list -> report and exit $template->param( emptyserverlist => 1 ); diff --git a/cataloguing/z3950_search.pl b/cataloguing/z3950_search.pl index ebf5cdaad4..6ab1baa8cd 100755 --- a/cataloguing/z3950_search.pl +++ b/cataloguing/z3950_search.pl @@ -90,7 +90,7 @@ if ( $op ne "do_search" ) { exit; } -my @id = $input->param('id'); +my @id = $input->multi_param('id'); if ( @id==0 ) { # empty server list -> report and exit $template->param( emptyserverlist => 1 ); diff --git a/circ/circulation.pl b/circ/circulation.pl index 7cf295f964..cc70776d44 100755 --- a/circ/circulation.pl +++ b/circ/circulation.pl @@ -147,11 +147,11 @@ if (!C4::Auth::haspermission( C4::Context->userenv->{id} , { circulate => 'force my $onsite_checkout = $query->param('onsite_checkout'); -my @failedrenews = $query->param('failedrenew'); # expected to be itemnumbers +my @failedrenews = $query->multi_param('failedrenew'); # expected to be itemnumbers our %renew_failed = (); for (@failedrenews) { $renew_failed{$_} = 1; } -my @failedreturns = $query->param('failedreturn'); +my @failedreturns = $query->multi_param('failedreturn'); our %return_failed = (); for (@failedreturns) { $return_failed{$_} = 1; } diff --git a/course_reserves/mod_course.pl b/course_reserves/mod_course.pl index 0f58bcb305..844d157dd1 100755 --- a/course_reserves/mod_course.pl +++ b/course_reserves/mod_course.pl @@ -59,7 +59,7 @@ if ( $action eq 'del' ) { my $course_id = ModCourse(%params); - my @instructors = $cgi->param('instructors'); + my @instructors = $cgi->multi_param('instructors'); ModCourseInstructors( mode => 'replace', cardnumbers => \@instructors, diff --git a/members/member-flags.pl b/members/member-flags.pl index 5bd2d07641..629a5c922c 100755 --- a/members/member-flags.pl +++ b/members/member-flags.pl @@ -43,7 +43,7 @@ $member2{'borrowernumber'}=$member; if ($input->param('newflags')) { my $dbh=C4::Context->dbh(); - my @perms = $input->param('flag'); + my @perms = $input->multi_param('flag'); my %all_module_perms = (); my %sub_perms = (); foreach my $perm (@perms) { diff --git a/members/memberentry.pl b/members/memberentry.pl index b899a26e93..c211a4a4aa 100755 --- a/members/memberentry.pl +++ b/members/memberentry.pl @@ -102,7 +102,7 @@ my $userenv = C4::Context->userenv; ## Deal with debarments $template->param( debarments => GetDebarments( { borrowernumber => $borrowernumber } ) ); -my @debarments_to_remove = $input->param('remove_debarment'); +my @debarments_to_remove = $input->multi_param('remove_debarment'); foreach my $d ( @debarments_to_remove ) { DelDebarment( $d ); } diff --git a/opac/ilsdi.pl b/opac/ilsdi.pl index 2ff65b5c43..6a91069670 100755 --- a/opac/ilsdi.pl +++ b/opac/ilsdi.pl @@ -199,7 +199,7 @@ if ( $service and any { $service eq $_ } @services ) { # check for multiple parameters for ( @names ) { - my @values = $cgi->param($_); + my @values = $cgi->multi_param($_); if ( $#values != 0 ) { $out->{'code'} = "MultipleValuesNotAllowed"; $out->{'message'} = "Multiple values not allowed for the parameter ".$_."."; diff --git a/opac/opac-account-pay-paypal-return.pl b/opac/opac-account-pay-paypal-return.pl index 64dcfddb07..742f5ae8bc 100755 --- a/opac/opac-account-pay-paypal-return.pl +++ b/opac/opac-account-pay-paypal-return.pl @@ -55,7 +55,7 @@ my $active_currency = Koha::Acquisition::Currencies->get_active; my $token = $cgi->param('token'); my $payer_id = $cgi->param('PayerID'); my $amount = $cgi->param('amount'); -my @accountlines = $cgi->param('accountlines'); +my @accountlines = $cgi->multi_param('accountlines'); my $ua = LWP::UserAgent->new; diff --git a/opac/opac-account-pay.pl b/opac/opac-account-pay.pl index cb1545c223..43261e8e9a 100755 --- a/opac/opac-account-pay.pl +++ b/opac/opac-account-pay.pl @@ -50,7 +50,7 @@ my ( $template, $borrowernumber, $cookie ) = get_template_and_user( ); my $payment_method = $cgi->param('payment_method'); -my @accountlines = $cgi->param('accountline'); +my @accountlines = $cgi->multi_param('accountline'); my $amount_to_pay = Koha::Database->new()->schema()->resultset('Accountline')->search( { accountlines_id => { -in => \@accountlines } } ) diff --git a/opac/opac-renew.pl b/opac/opac-renew.pl index d62a8839fd..9da82e54f0 100755 --- a/opac/opac-renew.pl +++ b/opac/opac-renew.pl @@ -42,7 +42,7 @@ my ( $template, $borrowernumber, $cookie ) = get_template_and_user( debug => 1, } ); -my @items = $query->param('item'); +my @items = $query->multi_param('item'); my $opacrenew = C4::Context->preference("OpacRenewalAllowed"); diff --git a/opac/opac-search-history.pl b/opac/opac-search-history.pl index 0364960c46..4858b5ac8d 100755 --- a/opac/opac-search-history.pl +++ b/opac/opac-search-history.pl @@ -55,7 +55,7 @@ unless ( $loggedinuser ) { # Deleting search history if ( $action eq 'delete') { # Deleting session's search history - my @id = $cgi->param('id'); + my @id = $cgi->multi_param('id'); my $all = not scalar( @id ); my $type = $cgi->param('type'); @@ -99,7 +99,7 @@ unless ( $loggedinuser ) { # Deleting search history if ( $action eq 'delete' ) { - my @id = $cgi->param('id'); + my @id = $cgi->multi_param('id'); if ( @id ) { C4::Search::History::delete( { diff --git a/opac/opac-search.pl b/opac/opac-search.pl index f68fb9f99c..4e0a68fe79 100755 --- a/opac/opac-search.pl +++ b/opac/opac-search.pl @@ -96,8 +96,8 @@ my ($template,$borrowernumber,$cookie); # decide which template to use my $template_name; my $template_type = 'basic'; -my @params = $cgi->param("limit"); -my @searchCategories = $cgi->param('searchcat'); +my @params = $cgi->multi_param("limit"); +my @searchCategories = $cgi->multi_param('searchcat'); my $format = $cgi->param("format") || ''; my $build_grouped_results = C4::Context->preference('OPACGroupResults'); @@ -404,7 +404,7 @@ if ( $params->{tag} ) { my $pasarParams = ''; my $j = 0; for (keys %$params) { - my @pasarParam = $cgi->param($_); + my @pasarParam = $cgi->multi_param($_); for my $paramValue(@pasarParam) { $pasarParams .= '&' if ($j > 0); $pasarParams .= $_ . '=' . uri_escape_utf8($paramValue); @@ -435,7 +435,7 @@ foreach my $sort (@sort_by) { $template->param('sort_by' => $sort_by[0]); # Use the servers defined, or just search our local catalog(default) -my @servers = $cgi->param('server'); +my @servers = $cgi->multi_param('server'); unless (@servers) { #FIXME: this should be handled using Context.pm @servers = ("biblioserver"); @@ -444,12 +444,12 @@ unless (@servers) { # operators include boolean and proximity operators and are used # to evaluate multiple operands -my @operators = $cgi->param('op'); +my @operators = $cgi->multi_param('op'); @operators = map { uri_unescape($_) } @operators; # indexes are query qualifiers, like 'title', 'author', etc. They # can be single or multiple parameters separated by comma: kw,right-Truncation -my @indexes = $cgi->param('idx'); +my @indexes = $cgi->multi_param('idx'); @indexes = map { uri_unescape($_) } @indexes; # if a simple index (only one) display the index used in the top search box @@ -457,7 +457,7 @@ if ($indexes[0] && !$indexes[1]) { $template->param("ms_".$indexes[0] => 1); } # an operand can be a single term, a phrase, or a complete ccl query -my @operands = $cgi->param('q'); +my @operands = $cgi->multi_param('q'); @operands = map { uri_unescape($_) } @operands; $template->{VARS}->{querystring} = join(' ', @operands); @@ -470,9 +470,9 @@ if ($operands[0] && !$operands[1]) { } # limits are use to limit to results to a pre-defined category such as branch or language -my @limits = $cgi->param('limit'); +my @limits = $cgi->multi_param('limit'); @limits = map { uri_unescape($_) } @limits; -my @nolimits = $cgi->param('nolimit'); +my @nolimits = $cgi->multi_param('nolimit'); @nolimits = map { uri_unescape($_) } @nolimits; my %is_nolimit = map { $_ => 1 } @nolimits; @limits = grep { not $is_nolimit{$_} } @limits; diff --git a/opac/opac-shelves.pl b/opac/opac-shelves.pl index 3d17bd6026..4a25a799c8 100755 --- a/opac/opac-shelves.pl +++ b/opac/opac-shelves.pl @@ -188,7 +188,7 @@ if ( $op eq 'add_form' ) { } elsif ( $op eq 'remove_biblios' ) { $shelfnumber = $query->param('shelfnumber'); $shelf = Koha::Virtualshelves->find($shelfnumber); - my @biblionumber = $query->param('biblionumber'); + my @biblionumber = $query->multi_param('biblionumber'); if ($shelf) { if ( $shelf->can_biblios_be_removed( $loggedinuser ) ) { my $number_of_biblios_removed = eval { diff --git a/opac/opac-suggestions.pl b/opac/opac-suggestions.pl index 7c17d5a78b..aad0e85f0e 100755 --- a/opac/opac-suggestions.pl +++ b/opac/opac-suggestions.pl @@ -142,7 +142,7 @@ if ( $op eq "add_confirm" ) { } if ( $op eq "delete_confirm" ) { - my @delete_field = $input->param("delete_field"); + my @delete_field = $input->multi_param("delete_field"); foreach my $delete_field (@delete_field) { &DelSuggestion( $borrowernumber, $delete_field ); } diff --git a/patron_lists/list.pl b/patron_lists/list.pl index ef2085c29f..596a2c1960 100755 --- a/patron_lists/list.pl +++ b/patron_lists/list.pl @@ -40,12 +40,12 @@ my ( $template, $logged_in_user, $cookie ) = get_template_and_user( my ($list) = GetPatronLists( { patron_list_id => $cgi->param('patron_list_id') } ); -my @patrons_to_add = $cgi->param('patrons_to_add'); +my @patrons_to_add = $cgi->multi_param('patrons_to_add'); if (@patrons_to_add) { AddPatronsToList( { list => $list, cardnumbers => \@patrons_to_add } ); } -my @patrons_to_remove = $cgi->param('patrons_to_remove'); +my @patrons_to_remove = $cgi->multi_param('patrons_to_remove'); if (@patrons_to_remove) { DelPatronsFromList( { list => $list, patron_list_patrons => \@patrons_to_remove } ); } diff --git a/patroncards/create-pdf.pl b/patroncards/create-pdf.pl index 41f1e99351..6d352b4140 100755 --- a/patroncards/create-pdf.pl +++ b/patroncards/create-pdf.pl @@ -51,8 +51,8 @@ my $batch_id = $cgi->param('batch_id') if $cgi->param('batch_id'); my $template_id = $cgi->param('template_id') || undef; my $layout_id = $cgi->param('layout_id') || undef; my $start_card = $cgi->param('start_card') || 1; -my @label_ids = $cgi->param('label_id') if $cgi->param('label_id'); -my @borrower_numbers = $cgi->param('borrower_number') if $cgi->param('borrower_number'); +my @label_ids = $cgi->multi_param('label_id') if $cgi->param('label_id'); +my @borrower_numbers = $cgi->multi_param('borrower_number') if $cgi->param('borrower_number'); my $patronlist_id = $cgi->param('patronlist_id'); my $items = undef; # items = cards diff --git a/patroncards/image-manage.pl b/patroncards/image-manage.pl index 2a1ab3cf11..78f0463e60 100755 --- a/patroncards/image-manage.pl +++ b/patroncards/image-manage.pl @@ -30,7 +30,7 @@ my $image_name = $cgi->param('image_name') || ''; my $file_name = $cgi->param('uploadfile') || ''; my $upload_file = $cgi->upload('uploadfile') || ''; my $op = $cgi->param('op') || 'none'; -my @image_ids = $cgi->param('image_id') if $cgi->param('image_id'); +my @image_ids = $cgi->multi_param('image_id') if $cgi->param('image_id'); my $source_file = "$file_name"; # otherwise we end up with what amounts to a pointer to a filehandle rather than a user-friendly filename diff --git a/patroncards/print.pl b/patroncards/print.pl index 2c674a4c5a..46f5d32418 100755 --- a/patroncards/print.pl +++ b/patroncards/print.pl @@ -41,13 +41,13 @@ my ( $template, $loggedinuser, $cookie ) = get_template_and_user( ); my $op = $cgi->param('op') || 'none'; -my @label_ids = $cgi->param('label_id') if $cgi->param('label_id'); # this will handle individual card printing; we use label_id to maintain consistency with the column names in the creator_batches table -my @batch_ids = $cgi->param('batch_id') if $cgi->param('batch_id'); +my @label_ids = $cgi->multi_param('label_id') if $cgi->param('label_id'); # this will handle individual card printing; we use label_id to maintain consistency with the column names in the creator_batches table +my @batch_ids = $cgi->multi_param('batch_id') if $cgi->param('batch_id'); my $patronlist_id = $cgi->param('patronlist_id') || undef; my $layout_id = $cgi->param('layout_id') || undef; my $template_id = $cgi->param('template_id') || undef; my $start_card = $cgi->param('start_card') || 1; -my @borrower_numbers = $cgi->param('borrower_number') if $cgi->param('borrower_number'); +my @borrower_numbers = $cgi->multi_param('borrower_number') if $cgi->param('borrower_number'); my $output_format = $cgi->param('output_format') || 'pdf'; my $referer = $cgi->param('referer') || undef; diff --git a/reports/acquisitions_stats.pl b/reports/acquisitions_stats.pl index 62895c63c6..8fd806750f 100755 --- a/reports/acquisitions_stats.pl +++ b/reports/acquisitions_stats.pl @@ -45,7 +45,7 @@ my $do_it = $input->param('do_it'); my $fullreportname = "reports/acquisitions_stats.tt"; my $line = $input->param("Line"); my $column = $input->param("Column"); -my @filters = $input->param("Filter"); +my @filters = $input->multi_param("Filter"); $filters[0] = eval { output_pref( { dt => dt_from_string( $filters[0]), dateonly => 1, dateformat => 'iso' } ); } if ( $filters[0] ); $filters[1] = eval { output_pref( { dt => dt_from_string( $filters[1]), dateonly => 1, dateformat => 'iso' } ); } diff --git a/reports/bor_issues_top.pl b/reports/bor_issues_top.pl index 58a8d1e25d..0345a32309 100755 --- a/reports/bor_issues_top.pl +++ b/reports/bor_issues_top.pl @@ -49,7 +49,7 @@ my $fullreportname = "reports/bor_issues_top.tt"; my $do_it = $input->param('do_it'); my $limit = $input->param("Limit"); my $column = $input->param("Criteria"); -my @filters = $input->param("Filter"); +my @filters = $input->multi_param("Filter"); foreach ( @filters[0..3] ) { $_ and $_ = eval { output_pref( { dt => dt_from_string ( $_ ), dateonly => 1, dateformat => 'iso' }); }; } diff --git a/reports/borrowers_out.pl b/reports/borrowers_out.pl index 7b3f68af32..eeb7fb3952 100755 --- a/reports/borrowers_out.pl +++ b/reports/borrowers_out.pl @@ -45,7 +45,7 @@ my $do_it=$input->param('do_it'); my $fullreportname = "reports/borrowers_out.tt"; my $limit = $input->param("Limit"); my $column = $input->param("Criteria"); -my @filters = $input->param("Filter"); +my @filters = $input->multi_param("Filter"); $filters[1] = eval { output_pref( { dt => dt_from_string( $filters[1]), dateonly => 1, dateformat => 'iso' } ); } if ( $filters[1] ); diff --git a/reports/borrowers_stats.pl b/reports/borrowers_stats.pl index 83ef452b38..607f9d1588 100755 --- a/reports/borrowers_stats.pl +++ b/reports/borrowers_stats.pl @@ -49,7 +49,7 @@ my $do_it=$input->param('do_it'); my $fullreportname = "reports/borrowers_stats.tt"; my $line = $input->param("Line"); my $column = $input->param("Column"); -my @filters = $input->param("Filter"); +my @filters = $input->multi_param("Filter"); $filters[3] = eval { output_pref( { dt => dt_from_string( $filters[3]), dateonly => 1, dateformat => 'iso' } ); } if ( $filters[3] ); $filters[4] = eval { output_pref ({ dt => dt_from_string( $filters[4]), dateonly => 1, dateformat => 'iso' } ); } diff --git a/reports/cat_issues_top.pl b/reports/cat_issues_top.pl index 6c05d92241..949afb70ac 100755 --- a/reports/cat_issues_top.pl +++ b/reports/cat_issues_top.pl @@ -46,7 +46,7 @@ my $do_it=$input->param('do_it'); my $fullreportname = "reports/cat_issues_top.tt"; my $limit = $input->param("Limit"); my $column = $input->param("Criteria"); -my @filters = $input->param("Filter"); +my @filters = $input->multi_param("Filter"); foreach ( @filters[0..3] ) { $_ and $_ = eval { output_pref( { dt => dt_from_string ( $_ ), dateonly => 1, dateformat => 'iso' } ); }; } diff --git a/reports/catalogue_out.pl b/reports/catalogue_out.pl index efcfa7d252..4ce9b3fcab 100755 --- a/reports/catalogue_out.pl +++ b/reports/catalogue_out.pl @@ -40,7 +40,7 @@ my $input = new CGI; my $do_it = $input->param('do_it'); my $limit = $input->param("Limit") || 10; my $column = $input->param("Criteria"); -my @filters = $input->param("Filter"); +my @filters = $input->multi_param("Filter"); my ( $template, $borrowernumber, $cookie ) = get_template_and_user( { diff --git a/reports/catalogue_stats.pl b/reports/catalogue_stats.pl index 0d63946d7a..c153947bc3 100755 --- a/reports/catalogue_stats.pl +++ b/reports/catalogue_stats.pl @@ -47,7 +47,7 @@ my $do_it = $input->param('do_it'); my $line = $input->param("Line"); my $column = $input->param("Column"); my $cellvalue = $input->param("Cellvalue"); # one of 'items', 'biblios', 'deleteditems' -my @filters = $input->param("Filter"); +my @filters = $input->multi_param("Filter"); my $cotedigits = $input->param("cotedigits"); my $output = $input->param("output"); my $basename = $input->param("basename"); diff --git a/reports/dictionary.pl b/reports/dictionary.pl index ae6fe7dd15..7d86f8d11a 100755 --- a/reports/dictionary.pl +++ b/reports/dictionary.pl @@ -92,7 +92,7 @@ elsif ( $phase eq 'New Term step 3' ) { elsif ( $phase eq 'New Term step 4' ) { # Choosing the values - my @columns = $input->param('columns'); + my @columns = $input->multi_param('columns'); my $columnstring = join( ',', @columns ); my @column_loop; foreach my $column (@columns) { @@ -130,7 +130,7 @@ elsif ( $phase eq 'New Term step 4' ) { elsif ( $phase eq 'New Term step 5' ) { # Confirmation screen my $columnstring = $input->param('columnstring'); - my @criteria = $input->param('criteria_column'); + my @criteria = $input->multi_param('criteria_column'); my $query_criteria; my @criteria_loop; diff --git a/reports/guided_reports.pl b/reports/guided_reports.pl index 4b45f95325..7af02bc1cb 100755 --- a/reports/guided_reports.pl +++ b/reports/guided_reports.pl @@ -116,7 +116,7 @@ elsif ( $phase eq 'Build new' ) { } elsif ( $phase eq 'Delete Multiple') { - my @ids = $input->param('ids'); + my @ids = $input->multi_param('ids'); delete_report( @ids ); print $input->redirect("/cgi-bin/koha/reports/guided_reports.pl?phase=Use%20saved"); exit; @@ -320,7 +320,7 @@ elsif ( $phase eq 'Choose these columns' ) { # next step is the constraints my $area = $input->param('area'); my $type = $input->param('type'); - my @columns = $input->param('columns'); + my @columns = $input->multi_param('columns'); my $column = join( ',', @columns ); $template->param( @@ -345,9 +345,9 @@ elsif ( $phase eq 'Choose these criteria' ) { my $area = $input->param('area'); my $type = $input->param('type'); my $column = $input->param('column'); - my @definitions = $input->param('definition'); + my @definitions = $input->multi_param('definition'); my $definition = join (',',@definitions); - my @criteria = $input->param('criteria_column'); + my @criteria = $input->multi_param('criteria_column'); my $query_criteria; foreach my $crit (@criteria) { my $value = $input->param( $crit . "_value" ); @@ -427,7 +427,7 @@ elsif ( $phase eq 'Choose these operations' ) { my $column = $input->param('column'); my $criteria = $input->param('criteria'); my $definition = $input->param('definition'); - my @total_by = $input->param('total_by'); + my @total_by = $input->multi_param('total_by'); my $totals; foreach my $total (@total_by) { my $value = $input->param( $total . "_tvalue" ); @@ -474,7 +474,7 @@ elsif ( $phase eq 'Build report' ) { my $query_criteria=$crit; # split the columns up by , my @columns = split( ',', $column ); - my @order_by = $input->param('order_by'); + my @order_by = $input->multi_param('order_by'); my $query_orderby; foreach my $order (@order_by) { @@ -621,7 +621,7 @@ elsif ($phase eq 'Run this report'){ my $limit = $input->param('limit') || 20; my $offset = 0; my $report_id = $input->param('reports'); - my @sql_params = $input->param('sql_params'); + my @sql_params = $input->multi_param('sql_params'); # offset algorithm if ($input->param('page')) { $offset = ($input->param('page') - 1) * $limit; diff --git a/reports/issues_avg_stats.pl b/reports/issues_avg_stats.pl index f71ac484a4..b0a1d4fd28 100755 --- a/reports/issues_avg_stats.pl +++ b/reports/issues_avg_stats.pl @@ -46,7 +46,7 @@ my $do_it=$input->param('do_it'); my $fullreportname = "reports/issues_avg_stats.tt"; my $line = $input->param("Line"); my $column = $input->param("Column"); -my @filters = $input->param("Filter"); +my @filters = $input->multi_param("Filter"); $filters[0] = eval { output_pref( { dt => dt_from_string( $filters[0]), dateonly => 1, dateformat => 'iso' } ); } if ( $filters[0] ); $filters[1] = eval { output_pref( { dt => dt_from_string( $filters[1]), dateonly => 1, dateformat => 'iso' } ); } diff --git a/reports/issues_stats.pl b/reports/issues_stats.pl index 568d6cc12b..34911b2804 100755 --- a/reports/issues_stats.pl +++ b/reports/issues_stats.pl @@ -50,7 +50,7 @@ my $fullreportname = "reports/issues_stats.tt"; my $do_it = $input->param('do_it'); my $line = $input->param("Line"); my $column = $input->param("Column"); -my @filters = $input->param("Filter"); +my @filters = $input->multi_param("Filter"); $filters[0] = eval { output_pref( { dt => dt_from_string( $filters[0]), dateonly => 1, dateformat => 'iso' } ); } if ( $filters[0] ); $filters[1] = eval { output_pref( { dt => dt_from_string( $filters[1]), dateonly => 1, dateformat => 'iso' } ); } diff --git a/reports/manager.pl b/reports/manager.pl index 647ca88a5e..e9ec30e16d 100755 --- a/reports/manager.pl +++ b/reports/manager.pl @@ -30,7 +30,7 @@ my $input = new CGI; my $report_name=$input->param("report_name"); my $do_it=$input->param('do_it'); my $fullreportname = "reports/".$report_name.".tt"; -my @values = $input->param("value"); +my @values = $input->multi_param("value"); my ($template, $borrowernumber, $cookie) = get_template_and_user({template_name => $fullreportname, query => $input, diff --git a/reserve/modrequest.pl b/reserve/modrequest.pl index ff810f8183..84703f20ca 100755 --- a/reserve/modrequest.pl +++ b/reserve/modrequest.pl @@ -41,13 +41,13 @@ my ( $template, $loggedinuser, $cookie ) = get_template_and_user( } ); -my @reserve_id = $query->param('reserve_id'); -my @rank = $query->param('rank-request'); -my @biblionumber = $query->param('biblionumber'); -my @borrower = $query->param('borrowernumber'); -my @branch = $query->param('pickup'); -my @itemnumber = $query->param('itemnumber'); -my @suspend_until=$query->param('suspend_until'); +my @reserve_id = $query->multi_param('reserve_id'); +my @rank = $query->multi_param('rank-request'); +my @biblionumber = $query->multi_param('biblionumber'); +my @borrower = $query->multi_param('borrowernumber'); +my @branch = $query->multi_param('pickup'); +my @itemnumber = $query->multi_param('itemnumber'); +my @suspend_until=$query->multi_param('suspend_until'); my $multi_hold = $query->param('multi_hold'); my $biblionumbers = $query->param('biblionumbers'); my $count=@rank; diff --git a/reserve/placerequest.pl b/reserve/placerequest.pl index 28e886898c..c8d15d76e5 100755 --- a/reserve/placerequest.pl +++ b/reserve/placerequest.pl @@ -37,14 +37,14 @@ my $input = CGI->new(); checkauth($input, 0, { reserveforothers => 'place_holds' }, 'intranet'); -my @bibitems=$input->param('biblioitem'); -my @reqbib=$input->param('reqbib'); +my @bibitems=$input->multi_param('biblioitem'); +my @reqbib=$input->multi_param('reqbib'); my $biblionumber=$input->param('biblionumber'); my $borrowernumber=$input->param('borrowernumber'); my $notes=$input->param('notes'); my $branch=$input->param('pickup'); my $startdate=$input->param('reserve_date') || ''; -my @rank=$input->param('rank-request'); +my @rank=$input->multi_param('rank-request'); my $type=$input->param('type'); my $title=$input->param('title'); my $borrower=GetMember('borrowernumber'=>$borrowernumber); diff --git a/serials/claims.pl b/serials/claims.pl index 6a71cc8ac3..1a0c5cfaa3 100755 --- a/serials/claims.pl +++ b/serials/claims.pl @@ -67,7 +67,7 @@ for my $field ( @$additional_fields ) { my $branchloop = GetBranchesLoop(); -my @serialnums=$input->param('serialid'); +my @serialnums=$input->multi_param('serialid'); if (@serialnums) { # i.e. they have been flagged to generate claims my $err; eval { diff --git a/serials/lateissues-export.pl b/serials/lateissues-export.pl index a75b21cd11..d9fc473917 100755 --- a/serials/lateissues-export.pl +++ b/serials/lateissues-export.pl @@ -28,7 +28,7 @@ use Text::CSV_XS; my $query = new CGI; my $supplierid = $query->param('supplierid'); -my @serialids = $query->param('serialid'); +my @serialids = $query->multi_param('serialid'); my $op = $query->param('op') || q{}; my $csv_profile_id = $query->param('csv_profile'); diff --git a/serials/serials-collection.pl b/serials/serials-collection.pl index ad8317efac..f51fabb4d6 100755 --- a/serials/serials-collection.pl +++ b/serials/serials-collection.pl @@ -46,7 +46,7 @@ my ($template, $loggedinuser, $cookie) debug => 1, }); my $biblionumber = $query->param('biblionumber'); -my @subscriptionid = $query->param('subscriptionid'); +my @subscriptionid = $query->multi_param('subscriptionid'); @subscriptionid= uniq @subscriptionid; @subscriptionid= sort @subscriptionid; diff --git a/serials/serials-edit.pl b/serials/serials-edit.pl index 2fcd2e31bb..30ddc12b23 100755 --- a/serials/serials-edit.pl +++ b/serials/serials-edit.pl @@ -79,14 +79,14 @@ use List::MoreUtils qw/uniq/; my $query = CGI->new(); my $dbh = C4::Context->dbh; -my @serialids = $query->param('serialid'); -my @serialseqs = $query->param('serialseq'); -my @planneddates = $query->param('planneddate'); -my @publisheddates = $query->param('publisheddate'); -my @publisheddatetexts = $query->param('publisheddatetext'); -my @status = $query->param('status'); -my @notes = $query->param('notes'); -my @subscriptionids = $query->param('subscriptionid'); +my @serialids = $query->multi_param('serialid'); +my @serialseqs = $query->multi_param('serialseq'); +my @planneddates = $query->multi_param('planneddate'); +my @publisheddates = $query->multi_param('publisheddate'); +my @publisheddatetexts = $query->multi_param('publisheddatetext'); +my @status = $query->multi_param('status'); +my @notes = $query->multi_param('notes'); +my @subscriptionids = $query->multi_param('subscriptionid'); my $op = $query->param('op'); if ( scalar(@subscriptionids) == 1 && index( $subscriptionids[0], q|,| ) > 0 ) { @subscriptionids = split( /,/, $subscriptionids[0] ); @@ -251,16 +251,16 @@ if ( $op and $op eq 'serialchangestatus' ) { ); } } - my @moditems = $query->param('moditem'); + my @moditems = $query->multi_param('moditem'); if ( scalar(@moditems) ) { - my @tags = $query->param('tag'); - my @subfields = $query->param('subfield'); - my @field_values = $query->param('field_value'); - my @serials = $query->param('serial'); - my @bibnums = $query->param('bibnum'); - my @itemid = $query->param('itemid'); - my @ind_tag = $query->param('ind_tag'); - my @indicator = $query->param('indicator'); + my @tags = $query->multi_param('tag'); + my @subfields = $query->multi_param('subfield'); + my @field_values = $query->multi_param('field_value'); + my @serials = $query->multi_param('serial'); + my @bibnums = $query->multi_param('bibnum'); + my @itemid = $query->multi_param('itemid'); + my @ind_tag = $query->multi_param('ind_tag'); + my @indicator = $query->multi_param('indicator'); #Rebuilding ALL the data for items into a hash # parting them on $itemid. diff --git a/serials/subscription-add.pl b/serials/subscription-add.pl index a910354979..1d9ab37d25 100755 --- a/serials/subscription-add.pl +++ b/serials/subscription-add.pl @@ -294,7 +294,7 @@ sub redirect_add_subscription { my $cost = $query->param('cost'); my $aqbudgetid = $query->param('aqbudgetid'); my $periodicity = $query->param('frequency'); - my @irregularity = $query->param('irregularity'); + my @irregularity = $query->multi_param('irregularity'); my $numberpattern = $query->param('numbering_pattern'); my $locale = $query->param('locale'); my $graceperiod = $query->param('graceperiod') || 0; @@ -355,7 +355,7 @@ sub redirect_add_subscription { sub redirect_mod_subscription { my $subscriptionid = $query->param('subscriptionid'); - my @irregularity = $query->param('irregularity'); + my @irregularity = $query->multi_param('irregularity'); my $auser = $query->param('user'); my $librarian => $query->param('librarian'), my $branchcode = $query->param('branchcode'); diff --git a/suggestion/suggestion.pl b/suggestion/suggestion.pl index 74e8ab3b1b..f00e53fb6e 100755 --- a/suggestion/suggestion.pl +++ b/suggestion/suggestion.pl @@ -78,7 +78,7 @@ my $input = CGI->new; my $redirect = $input->param('redirect'); my $suggestedbyme = (defined $input->param('suggestedbyme')? $input->param('suggestedbyme'):1); my $op = $input->param('op')||'else'; -my @editsuggestions = $input->param('edit_field'); +my @editsuggestions = $input->multi_param('edit_field'); my $suggestedby = $input->param('suggestedby'); my $returnsuggestedby = $input->param('returnsuggestedby'); my $returnsuggested = $input->param('returnsuggested'); diff --git a/tools/automatic_item_modification_by_age.pl b/tools/automatic_item_modification_by_age.pl index eca339cb39..82895d25dd 100755 --- a/tools/automatic_item_modification_by_age.pl +++ b/tools/automatic_item_modification_by_age.pl @@ -58,12 +58,12 @@ my $op = $cgi->param('op') // 'show'; my $syspref_name = q|automatic_item_modification_by_age_configuration|; if ( $op eq 'update' ) { my @rules; - my @unique_ids = $cgi->param('unique_id'); + my @unique_ids = $cgi->multi_param('unique_id'); for my $unique_id ( @unique_ids ) { - my @substitution_fields = $cgi->param("substitution_field_$unique_id"); - my @substitution_values = $cgi->param("substitution_value_$unique_id"); - my @condition_fields = $cgi->param("condition_field_$unique_id"); - my @condition_values = $cgi->param("condition_value_$unique_id"); + my @substitution_fields = $cgi->multi_param("substitution_field_$unique_id"); + my @substitution_values = $cgi->multi_param("substitution_value_$unique_id"); + my @condition_fields = $cgi->multi_param("condition_field_$unique_id"); + my @condition_values = $cgi->multi_param("condition_value_$unique_id"); my $rule = { substitutions => [], conditions => [], diff --git a/tools/batchMod.pl b/tools/batchMod.pl index 5b104b6915..320b4f1f1b 100755 --- a/tools/batchMod.pl +++ b/tools/batchMod.pl @@ -40,7 +40,7 @@ use Koha::DateUtils; my $input = new CGI; my $dbh = C4::Context->dbh; my $error = $input->param('error'); -my @itemnumbers = $input->param('itemnumber'); +my @itemnumbers = $input->multi_param('itemnumber'); my $biblionumber = $input->param('biblionumber'); my $op = $input->param('op'); my $del = $input->param('del'); @@ -98,13 +98,13 @@ my $sessionID = $cookies{'CGISESSID'}->value; #--- ---------------------------------------------------------------------------- if ($op eq "action") { #------------------------------------------------------------------------------- - my @tags = $input->param('tag'); - my @subfields = $input->param('subfield'); - my @values = $input->param('field_value'); - my @disabled = $input->param('disable_input'); + my @tags = $input->multi_param('tag'); + my @subfields = $input->multi_param('subfield'); + my @values = $input->multi_param('field_value'); + my @disabled = $input->multi_param('disable_input'); # build indicator hash. - my @ind_tag = $input->param('ind_tag'); - my @indicator = $input->param('indicator'); + my @ind_tag = $input->multi_param('ind_tag'); + my @indicator = $input->multi_param('indicator'); # Is there something to modify ? # TODO : We shall use this var to warn the user in case no modification was done to the items diff --git a/tools/batch_delete_records.pl b/tools/batch_delete_records.pl index 65cbf21e3c..a5d59d36de 100755 --- a/tools/batch_delete_records.pl +++ b/tools/batch_delete_records.pl @@ -109,7 +109,7 @@ if ( $op eq 'form' ) { ); } elsif ( $op eq 'delete' ) { # We want to delete selected records! - my @record_ids = $input->param('record_id'); + my @record_ids = $input->multi_param('record_id'); my $dbh = C4::Context->dbh; $dbh->{AutoCommit} = 0; $dbh->{RaiseError} = 1; diff --git a/tools/batch_record_modification.pl b/tools/batch_record_modification.pl index 50a2b50103..6ea0317955 100755 --- a/tools/batch_record_modification.pl +++ b/tools/batch_record_modification.pl @@ -151,7 +151,7 @@ if ( $op eq 'form' ) { ); } elsif ( $op eq 'modify' ) { # We want to modify selected records! - my @record_ids = $input->param('record_id'); + my @record_ids = $input->multi_param('record_id'); my ( $job ); if ( $runinbackground ) { diff --git a/tools/export.pl b/tools/export.pl index efcd544d11..a4c02dac23 100755 --- a/tools/export.pl +++ b/tools/export.pl @@ -67,7 +67,7 @@ my ( $template, $loggedinuser, $cookie, $flags ) = get_template_and_user( } ); -my @branch = $query->param("branch"); +my @branch = $query->multi_param("branch"); my $only_my_branch; # Limit to local branch if IndependentBranches and not superlibrarian if ( @@ -89,8 +89,8 @@ my %branchmap = map { $_ => 1 } @branch; # for quick lookups if ( $op eq "export" ) { my $export_remove_fields = $query->param("export_remove_fields") || q||; - my @biblionumbers = $query->param("biblionumbers"); - my @itemnumbers = $query->param("itemnumbers"); + my @biblionumbers = $query->multi_param("biblionumbers"); + my @itemnumbers = $query->multi_param("itemnumbers"); my @sql_params; my $sql_query; diff --git a/tools/koha-news.pl b/tools/koha-news.pl index 9af1640ee6..e344bfaa62 100755 --- a/tools/koha-news.pl +++ b/tools/koha-news.pl @@ -139,7 +139,7 @@ elsif ( $op eq 'edit' ) { print $cgi->redirect("/cgi-bin/koha/tools/koha-news.pl"); } elsif ( $op eq 'del' ) { - my @ids = $cgi->param('ids'); + my @ids = $cgi->multi_param('ids'); del_opac_new( join ",", @ids ); print $cgi->redirect("/cgi-bin/koha/tools/koha-news.pl"); } diff --git a/tools/letter.pl b/tools/letter.pl index 293072f8ab..9f8ac95429 100755 --- a/tools/letter.pl +++ b/tools/letter.pl @@ -254,9 +254,9 @@ sub add_validate { my $oldmodule = $input->param('oldmodule'); my $code = $input->param('code'); my $name = $input->param('name'); - my @mtt = $input->param('message_transport_type'); - my @title = $input->param('title'); - my @content = $input->param('content'); + my @mtt = $input->multi_param('message_transport_type'); + my @title = $input->multi_param('title'); + my @content = $input->multi_param('content'); for my $mtt ( @mtt ) { my $is_html = $input->param("is_html_$mtt"); my $title = shift @title; diff --git a/tools/modborrowers.pl b/tools/modborrowers.pl index 99379931b0..c776406a90 100755 --- a/tools/modborrowers.pl +++ b/tools/modborrowers.pl @@ -258,7 +258,7 @@ if ( $op eq 'show' ) { # Process modifications if ( $op eq 'do' ) { - my @disabled = $input->param('disable_input'); + my @disabled = $input->multi_param('disable_input'); my $infos; for my $field ( qw/surname firstname branchcode categorycode city state zipcode country sort1 sort2 dateenrolled dateexpiry borrowernotes/ ) { my $value = $input->param($field); @@ -270,11 +270,11 @@ if ( $op eq 'do' ) { $infos->{$field} = dt_from_string($infos->{$field}) if $infos->{$field}; } - my @attributes = $input->param('patron_attributes'); - my @attr_values = $input->param('patron_attributes_value'); + my @attributes = $input->multi_param('patron_attributes'); + my @attr_values = $input->multi_param('patron_attributes_value'); my @errors; - my @borrowernumbers = $input->param('borrowernumber'); + my @borrowernumbers = $input->multi_param('borrowernumber'); # For each borrower selected for my $borrowernumber ( @borrowernumbers ) { # If at least one field are filled, we want to modify the borrower diff --git a/tools/overduerules.pl b/tools/overduerules.pl index 369ac9c452..1478c3a96e 100755 --- a/tools/overduerules.pl +++ b/tools/overduerules.pl @@ -91,7 +91,7 @@ my $err=0; my %temphash; my $input_saved = 0; if ($op eq 'save') { - my @names=$input->param(); + my @names=$input->multi_param(); my $sth_search = $dbh->prepare("SELECT count(*) AS total FROM overduerules WHERE branchcode=? AND categorycode=?"); my $sth_insert = $dbh->prepare("INSERT INTO overduerules (branchcode,categorycode, delay1,letter1,debarred1, delay2,letter2,debarred2, delay3,letter3,debarred3) VALUES (?,?,?,?,?,?,?,?,?,?,?)"); @@ -194,7 +194,7 @@ if ($op eq 'save') { $sth_delete_mtt->execute( $branch, $bor ); for my $letternumber ( 1..3 ) { - my @mtt = $input->param( "mtt${letternumber}-$bor" ); + my @mtt = $input->multi_param( "mtt${letternumber}-$bor" ); next unless @mtt; for my $mtt ( @mtt ) { $sth_insert_mtt->execute( $branch, $bor, $letternumber, $mtt); diff --git a/tools/viewlog.pl b/tools/viewlog.pl index 6a26dec80e..d0dc7cd057 100755 --- a/tools/viewlog.pl +++ b/tools/viewlog.pl @@ -45,9 +45,9 @@ my $input = new CGI; $debug or $debug = $cgi_debug; my $do_it = $input->param('do_it'); -my @modules = $input->param("modules"); +my @modules = $input->multi_param("modules"); my $user = $input->param("user") // ''; -my @actions = $input->param("actions"); +my @actions = $input->multi_param("actions"); my $object = $input->param("object"); my $info = $input->param("info"); my $datefrom = $input->param("from"); diff --git a/virtualshelves/addbybiblionumber.pl b/virtualshelves/addbybiblionumber.pl index 9772c6de48..790904fefa 100755 --- a/virtualshelves/addbybiblionumber.pl +++ b/virtualshelves/addbybiblionumber.pl @@ -112,7 +112,7 @@ else { #end sub HandleBiblioPars { - my @bib= $query->param('biblionumber'); + my @bib= $query->multi_param('biblionumber'); if(@bib==0 && $query->param('biblionumbers')) { my $str= $query->param('biblionumbers'); @bib= split '/', $str; diff --git a/virtualshelves/shelves.pl b/virtualshelves/shelves.pl index eab6c17f70..53d39a7e1a 100755 --- a/virtualshelves/shelves.pl +++ b/virtualshelves/shelves.pl @@ -161,7 +161,7 @@ if ( $op eq 'add_form' ) { } elsif ( $op eq 'remove_biblios' ) { $shelfnumber = $query->param('shelfnumber'); $shelf = Koha::Virtualshelves->find($shelfnumber); - my @biblionumbers = $query->param('biblionumber'); + my @biblionumbers = $query->multi_param('biblionumber'); if ($shelf) { if ( $shelf->can_biblios_be_removed( $loggedinuser ) ) { my $number_of_biblios_removed = eval { -- 2.39.5