From 6308b7ded118b1b57b1e1f7275269156e82e6e0d Mon Sep 17 00:00:00 2001 From: Marcel de Rooy Date: Thu, 25 Apr 2013 13:54:31 +0200 Subject: [PATCH] [PASSED QA] Bug 10110: Problems with diacritics in saved SQL reports MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 Signed-off-by: Katrin Fischer Copying test plan from bug report: Example SQL: select branchname as "Bibliothek (üöä)", branchname "Bibiothek (üäa)", branchname from branches where branchcode = <> 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. --- reports/guided_reports.pl | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/reports/guided_reports.pl b/reports/guided_reports.pl index 52539f5..6e8ac7e 100755 --- a/reports/guided_reports.pl +++ b/reports/guided_reports.pl @@ -18,7 +18,7 @@ # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -use CGI; +use CGI qw/-utf8/; use Text::CSV; use URI::Escape; use C4::Reports::Guided; @@ -725,9 +725,8 @@ elsif ($phase eq 'Run this report'){ 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 }; @@ -844,7 +843,13 @@ elsif ($phase eq 'Save Compound'){ # 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 -- 1.7.9.5