Adds decoding for cgi params (for completeness).
Apparently, the NAME attribute of DBI statement handle has a UTF8 bug.
Fixing this by decoding the returned column names.
Did this in a shared routine.
http://bugs.koha-community.org/show_bug.cgi?id=10110
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Katrin Fischer <Katrin.Fischer.83@web.de>
Copying test plan from bug report:
Example SQL:
select
branchname as "Bibliothek (üöä)",
branchname "Bibiothek (üäa)",
branchname
from branches where branchcode = <<Bibliothekskürzel|branches>>
1) Create report with given example SQL or your own including
some diacritics in the columnnames
2) Save the report and run it
3) Verify column names are broken before patch, but fixed after..
All tests and QA script pass.
Signed-off-by: Jared Camins-Esakov <jcamins@cpbibliography.com>
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
use Text::CSV;
use URI::Escape;
use C4::Reports::Guided;
use Text::CSV;
use URI::Escape;
use C4::Reports::Guided;
unless ($sth) {
die "execute_query failed to return sth for report $report_id: $sql";
} else {
unless ($sth) {
die "execute_query failed to return sth for report $report_id: $sql";
} else {
- my $headref = $sth->{NAME} || [];
- my @headers = map { +{ cell => $_ } } @$headref;
- $template->param(header_row => \@headers);
+ my $headers= header_cell_loop($sth);
+ $template->param(header_row => $headers);
while (my $row = $sth->fetchrow_arrayref()) {
my @cells = map { +{ cell => $_ } } @$row;
push @rows, { cells => \@cells };
while (my $row = $sth->fetchrow_arrayref()) {
my @cells = map { +{ cell => $_ } } @$row;
push @rows, { cells => \@cells };
# pass $sth, get back an array of names for the column headers
sub header_cell_values {
my $sth = shift or return ();
# pass $sth, get back an array of names for the column headers
sub header_cell_values {
my $sth = shift or return ();
- return @{$sth->{NAME}};
+ my @cols;
+ foreach my $c (@{$sth->{NAME}}) {
+ #FIXME apparently DBI still needs a utf8 fix for this?
+ utf8::decode($c);
+ push @cols, $c;
+ }
+ return @cols;
}
# pass $sth, get back a TMPL_LOOP-able set of names for the column headers
}
# pass $sth, get back a TMPL_LOOP-able set of names for the column headers