use multi_param() if available to avoid the new warning
[bse.git] / site / cgi-bin / modules / BSE / CGI.pm
1 package BSE::CGI;
2 use strict;
3 use Encode;
4
5 our $VERSION = "1.002";
6
7 sub new {
8   my ($class, $q, $charset) = @_;
9
10   my $param = $q->can("multi_param") ? "multi_param" : "param";
11   my $self = bless
12     {
13      cgi => $q,
14      charset => $charset,
15      param => $param,
16     }, $class;
17
18   return $self;
19 }
20
21 sub param {
22   my ($self, @args) = @_;
23
24   my $param = $self->{param};
25   my @result = $self->{cgi}->$param(@args)
26     or return;
27   for my $value (@result) {
28     $value = decode($self->{charset}, $value)
29       unless ref $value;
30   }
31
32   return wantarray && @result > 1 ? @result : $result[0];
33 }
34
35 sub multi_param {
36   my ($self, @args) = @_;
37
38   my $param = $self->{param};
39   my @result = $self->{cgi}->$param(@args)
40     or return;
41   for my $value (@result) {
42     $value = decode($self->{charset}, $value)
43       unless ref $value;
44   }
45
46   return wantarray ? @result : $result[0];
47 }
48
49 sub upload {
50   my ($self, @args) = @_;
51
52   return $self->{cgi}->upload(@args);
53 }
54
55 sub uploadInfo {
56   my ($self, @args) = @_;
57
58   return $self->{cgi}->uploadInfo(@args);
59 }
60
61 1;
62
63 =head1 NAME
64
65 BSE::CGI - CGI.pm wrapper that does character set conversions to perl's internal encoding
66
67 =head1 SYNOPSIS
68
69   my $cgi1 = CGI->new;
70   my $cgi = BSE::CGI->new($cgi1, $charset);
71
72 =head1 DESCRIPTION
73
74 Only provides param(), upload() and uploadInfo().
75
76 =cut