Bug 16154: CGI->multi_param - Declare a list
authorJonathan Druart <jonathan.druart@bugs.koha-community.org>
Tue, 29 Mar 2016 08:15:43 +0000 (09:15 +0100)
committerBrendan Gallagher <brendan@bywatersolutions.com>
Tue, 26 Apr 2016 23:16:42 +0000 (23:16 +0000)
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 <oleonard@myacpl.org>
Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Brendan Gallagher <brendan@bywatersolutions.com>
80 files changed:
acqui/addorder.pl
acqui/addorderiso2709.pl
acqui/basketgroup.pl
acqui/check_duplicate_barcode_ajax.pl
acqui/check_uniqueness.pl
acqui/finishreceive.pl
acqui/histsearch.pl
acqui/invoice.pl
acqui/lateorders-export.pl
acqui/lateorders.pl
acqui/z3950_search.pl
admin/aqplan.pl
admin/audio_alerts.pl
admin/auth_subfields_structure.pl
admin/columns_settings.pl
admin/marc_subfields_structure.pl
admin/oai_set_mappings.pl
admin/oai_sets.pl
admin/patron-attr-types.pl
authorities/auth_finder.pl
authorities/authorities.pl
authorities/merge.pl
authorities/ysearch.pl
catalogue/itemsearch.pl
catalogue/search.pl
cataloguing/addbiblio.pl
cataloguing/addbooks.pl
cataloguing/additem.pl
cataloguing/merge.pl
cataloguing/value_builder/unimarc_field_210c.pl
cataloguing/z3950_auth_search.pl
cataloguing/z3950_search.pl
circ/circulation.pl
course_reserves/mod_course.pl
members/member-flags.pl
members/memberentry.pl
opac/ilsdi.pl
opac/opac-account-pay-paypal-return.pl
opac/opac-account-pay.pl
opac/opac-renew.pl
opac/opac-search-history.pl
opac/opac-search.pl
opac/opac-shelves.pl
opac/opac-suggestions.pl
patron_lists/list.pl
patroncards/create-pdf.pl
patroncards/image-manage.pl
patroncards/print.pl
reports/acquisitions_stats.pl
reports/bor_issues_top.pl
reports/borrowers_out.pl
reports/borrowers_stats.pl
reports/cat_issues_top.pl
reports/catalogue_out.pl
reports/catalogue_stats.pl
reports/dictionary.pl
reports/guided_reports.pl
reports/issues_avg_stats.pl
reports/issues_stats.pl
reports/manager.pl
reserve/modrequest.pl
reserve/placerequest.pl
serials/claims.pl
serials/lateissues-export.pl
serials/serials-collection.pl
serials/serials-edit.pl
serials/subscription-add.pl
suggestion/suggestion.pl
tools/automatic_item_modification_by_age.pl
tools/batchMod.pl
tools/batch_delete_records.pl
tools/batch_record_modification.pl
tools/export.pl
tools/koha-news.pl
tools/letter.pl
tools/modborrowers.pl
tools/overduerules.pl
tools/viewlog.pl
virtualshelves/addbybiblionumber.pl
virtualshelves/shelves.pl

index e5480ef..1e60f79 100755 (executable)
@@ -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.
 
index 0f59a62..e5159dc 100755 (executable)
@@ -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];
index 6492223..85422cb 100755 (executable)
@@ -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');
index fcd85fe..1655ac4 100755 (executable)
@@ -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) {
index 1d700b6..70d95dd 100755 (executable)
@@ -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;
index cc022b3..06be5b0 100755 (executable)
@@ -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;
index efb9468..e9879c5 100755 (executable)
@@ -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;
index 3eb5228..ab01a14 100755 (executable)
@@ -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);
     }
index 2028eda..c8d86e6 100755 (executable)
@@ -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 ) {
index 2d6fdc5..872d0af 100755 (executable)
@@ -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?
index b11c508..b2b5124 100755 (executable)
@@ -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;
index 20a8b00..ccef48f 100755 (executable)
@@ -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
index fa55b28..bf0c0ae 100755 (executable)
@@ -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(
     {
index e26aa79..ffa74f2 100755 (executable)
@@ -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];
index e61782c..4c87142 100755 (executable)
@@ -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|^([^#]*)#([^#]*)#(.*)$|;
index 979d7ec..22d4398 100755 (executable)
@@ -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');
index 04429b6..8c6b0d4 100755 (executable)
@@ -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;
index 1ac919b..1413022 100755 (executable)
@@ -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,
index 3c978e9..261d94b 100755 (executable)
@@ -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') {
index 7c155c0..2966342 100755 (executable)
@@ -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] };
index bc2c8d4..1e49d96 100755 (executable)
@@ -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);
index 16efdd5..b423122 100755 (executable)
@@ -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;
index 9684999..4a5ae79 100755 (executable)
@@ -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;
index 0378e48..ff614e2 100755 (executable)
@@ -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);
index 653ce4c..3935851 100755 (executable)
@@ -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");
index 44d5907..57a0083 100755 (executable)
@@ -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 );
index 86833eb..672a070 100755 (executable)
@@ -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;
 
index eb52415..72618e5 100755 (executable)
@@ -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');
index fc96d3c..54a937d 100755 (executable)
@@ -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;
index 0d0a070..186d464 100755 (executable)
@@ -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');
index 8ea4f41..960b5aa 100755 (executable)
@@ -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 );
index ebf5cda..6ab1baa 100755 (executable)
@@ -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 );
index 7cf295f..cc70776 100755 (executable)
@@ -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; }
 
index 0f58bcb..844d157 100755 (executable)
@@ -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,
index 5bd2d07..629a5c9 100755 (executable)
@@ -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) {
index b899a26..c211a4a 100755 (executable)
@@ -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 );
 }
index 2ff65b5..6a91069 100755 (executable)
@@ -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 ".$_.".";
index 64dcfdd..742f5ae 100755 (executable)
@@ -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;
 
index cb1545c..43261e8 100755 (executable)
@@ -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 } } )
index d62a883..9da82e5 100755 (executable)
@@ -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");
 
index 0364960..4858b5a 100755 (executable)
@@ -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(
                 {
index f68fb9f..4e0a68f 100755 (executable)
@@ -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 .= '&amp;' 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;
index 3d17bd6..4a25a79 100755 (executable)
@@ -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 {
index 7c17d5a..aad0e85 100755 (executable)
@@ -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 );
     }
index ef2085c..596a2c1 100755 (executable)
@@ -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 } );
 }
index 41f1e99..6d352b4 100755 (executable)
@@ -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
index 2a1ab3c..78f0463 100755 (executable)
@@ -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
 
index 2c674a4..46f5d32 100755 (executable)
@@ -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;
 
index 62895c6..8fd8067 100755 (executable)
@@ -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' } ); }
index 58a8d1e..0345a32 100755 (executable)
@@ -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' }); };
 }
index 7b3f68a..eeb7fb3 100755 (executable)
@@ -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] );
 
index 83ef452..607f9d1 100755 (executable)
@@ -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' } ); }
index 6c05d92..949afb7 100755 (executable)
@@ -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' } ); };
 }
index efcfa7d..4ce9b3f 100755 (executable)
@@ -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(
     {
index 0d63946..c153947 100755 (executable)
@@ -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");
index ae6fe7d..7d86f8d 100755 (executable)
@@ -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;
 
index 4b45f95..7af02bc 100755 (executable)
@@ -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;
index f71ac48..b0a1d4f 100755 (executable)
@@ -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' } ); }
index 568d6cc..34911b2 100755 (executable)
@@ -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' } ); }
index 647ca88..e9ec30e 100755 (executable)
@@ -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,
index ff810f8..84703f2 100755 (executable)
@@ -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;
index 28e8868..c8d15d7 100755 (executable)
@@ -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);
index 6a71cc8..1a0c5cf 100755 (executable)
@@ -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 {
index a75b21c..d9fc473 100755 (executable)
@@ -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');
index ad8317e..f51fabb 100755 (executable)
@@ -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;
index 2fcd2e3..30ddc12 100755 (executable)
@@ -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.
index a910354..1d9ab37 100755 (executable)
@@ -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');
index 74e8ab3..f00e53f 100755 (executable)
@@ -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');
index eca339c..82895d2 100755 (executable)
@@ -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 => [],
index 5b104b6..320b4f1 100755 (executable)
@@ -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
index 65cbf21..a5d59d3 100755 (executable)
@@ -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;
index 50a2b50..6ea0317 100755 (executable)
@@ -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 ) {
index efcd544..a4c02da 100755 (executable)
@@ -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;
 
index 9af1640..e344bfa 100755 (executable)
@@ -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");
 }
index 293072f..9f8ac95 100755 (executable)
@@ -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;
index 9937993..c776406 100755 (executable)
@@ -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
index 369ac9c..1478c3a 100755 (executable)
@@ -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);
index 6a26dec..d0dc7cd 100755 (executable)
@@ -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");
index 9772c6d..790904f 100755 (executable)
@@ -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;
index eab6c17..53d39a7 100755 (executable)
@@ -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 {