Merge branch 'bug_6554' into 3.12-master
This commit is contained in:
commit
9c0b2e408b
23 changed files with 54 additions and 74 deletions
|
@ -1104,7 +1104,9 @@ set_userenv is called in Auth.pm
|
|||
|
||||
#'
|
||||
sub set_userenv {
|
||||
my ($usernum, $userid, $usercnum, $userfirstname, $usersurname, $userbranch, $branchname, $userflags, $emailaddress, $branchprinter, $persona)= @_;
|
||||
my ($usernum, $userid, $usercnum, $userfirstname, $usersurname, $userbranch, $branchname, $userflags, $emailaddress, $branchprinter, $persona)=
|
||||
map { utf8::decode($_); $_ } # CGI::Session doesn't handle utf-8, so we decode it here
|
||||
@_;
|
||||
my $var=$context->{"activeuser"} || '';
|
||||
my $cell = {
|
||||
"number" => $usernum,
|
||||
|
|
|
@ -81,7 +81,7 @@ sub all {
|
|||
for ( @{$dbh->selectall_arrayref(
|
||||
"SELECT * FROM itemtypes ORDER BY description", { Slice => {} })} )
|
||||
{
|
||||
utf8::encode($_->{description});
|
||||
# utf8::encode($_->{description});
|
||||
push @itypes, $class->new($_);
|
||||
}
|
||||
return @itypes;
|
||||
|
|
|
@ -298,12 +298,8 @@ sub output_with_http_headers {
|
|||
$options->{'Content-Script-Type'} = 'text/javascript';
|
||||
}
|
||||
|
||||
# We can't encode here, that will double encode our templates, and xslt
|
||||
# We need to fix the encoding as it comes out of the database, or when we pass the variables to templates
|
||||
|
||||
# utf8::encode($data) if utf8::is_utf8($data);
|
||||
|
||||
$data =~ s/\&\;amp\; /\&\; /g;
|
||||
utf8::encode($data);
|
||||
print $query->header($options), $data;
|
||||
}
|
||||
|
||||
|
|
25
C4/Search.pm
25
C4/Search.pm
|
@ -484,6 +484,7 @@ sub getRecords {
|
|||
# not an index scan
|
||||
else {
|
||||
$record = $results[ $i - 1 ]->record($j)->raw();
|
||||
utf8::decode( $record );
|
||||
|
||||
# warn "RECORD $j:".$record;
|
||||
$results_hash->{'RECORDS'}[$j] = $record;
|
||||
|
@ -501,6 +502,7 @@ sub getRecords {
|
|||
for ( my $j = 0 ; $j < $jmax ; $j++ ) {
|
||||
my $render_record =
|
||||
$results[ $i - 1 ]->record($j)->render();
|
||||
utf8::decode($render_record);
|
||||
my @used_datas = ();
|
||||
foreach my $tag ( @{ $facet->{tags} } ) {
|
||||
|
||||
|
@ -714,6 +716,7 @@ sub pazGetRecords {
|
|||
for (my $i = 0; $i < $count; $i++) {
|
||||
# FIXME -- may need to worry about diacritics here
|
||||
my $rec = $paz->record($recid, $i);
|
||||
utf8::decode( $rec );
|
||||
push @{ $result_group->{'RECORDS'} }, $rec;
|
||||
}
|
||||
|
||||
|
@ -1290,17 +1293,17 @@ sub buildQuery {
|
|||
if ( @limits ) {
|
||||
$q .= ' and '.join(' and ', @limits);
|
||||
}
|
||||
return ( undef, $q, $q, "q=ccl=".uri_escape($q), $q, '', '', '', '', 'ccl' );
|
||||
return ( undef, $q, $q, "q=ccl=".uri_escape_utf8($q), $q, '', '', '', '', 'ccl' );
|
||||
}
|
||||
if ( $query =~ /^cql=/ ) {
|
||||
return ( undef, $', $', "q=cql=".uri_escape($'), $', '', '', '', '', 'cql' );
|
||||
return ( undef, $', $', "q=cql=".uri_escape_utf8($'), $', '', '', '', '', 'cql' );
|
||||
}
|
||||
if ( $query =~ /^pqf=/ ) {
|
||||
if ($query_desc) {
|
||||
$query_cgi = "q=".uri_escape($query_desc);
|
||||
$query_cgi = "q=".uri_escape_utf8($query_desc);
|
||||
} else {
|
||||
$query_desc = $';
|
||||
$query_cgi = "q=pqf=".uri_escape($');
|
||||
$query_cgi = "q=pqf=".uri_escape_utf8($');
|
||||
}
|
||||
return ( undef, $', $', $query_cgi, $query_desc, '', '', '', '', 'pqf' );
|
||||
}
|
||||
|
@ -1472,9 +1475,9 @@ sub buildQuery {
|
|||
$query .= " $operators[$i-1] ";
|
||||
$query .= " $index_plus " unless $indexes_set;
|
||||
$query .= " $operand";
|
||||
$query_cgi .= "&op=".uri_escape($operators[$i-1]);
|
||||
$query_cgi .= "&idx=".uri_escape($index) if $index;
|
||||
$query_cgi .= "&q=".uri_escape($operands[$i]) if $operands[$i];
|
||||
$query_cgi .= "&op=".uri_escape_utf8($operators[$i-1]);
|
||||
$query_cgi .= "&idx=".uri_escape_utf8($index) if $index;
|
||||
$query_cgi .= "&q=".uri_escape_utf8($operands[$i]) if $operands[$i];
|
||||
$query_desc .=
|
||||
" $operators[$i-1] $index_plus $operands[$i]";
|
||||
}
|
||||
|
@ -1484,8 +1487,8 @@ sub buildQuery {
|
|||
$query .= " and ";
|
||||
$query .= "$index_plus " unless $indexes_set;
|
||||
$query .= "$operand";
|
||||
$query_cgi .= "&op=and&idx=".uri_escape($index) if $index;
|
||||
$query_cgi .= "&q=".uri_escape($operands[$i]) if $operands[$i];
|
||||
$query_cgi .= "&op=and&idx=".uri_escape_utf8($index) if $index;
|
||||
$query_cgi .= "&q=".uri_escape_utf8($operands[$i]) if $operands[$i];
|
||||
$query_desc .= " and $index_plus $operands[$i]";
|
||||
}
|
||||
}
|
||||
|
@ -1497,8 +1500,8 @@ sub buildQuery {
|
|||
$query .= " $index_plus " unless $indexes_set;
|
||||
$query .= $operand;
|
||||
$query_desc .= " $index_plus $operands[$i]";
|
||||
$query_cgi .= "&idx=".uri_escape($index) if $index;
|
||||
$query_cgi .= "&q=".uri_escape($operands[$i]) if $operands[$i];
|
||||
$query_cgi .= "&idx=".uri_escape_utf8($index) if $index;
|
||||
$query_cgi .= "&q=".uri_escape_utf8($operands[$i]) if $operands[$i];
|
||||
$previous_operand = 1;
|
||||
}
|
||||
} #/if $operands
|
||||
|
|
|
@ -67,6 +67,7 @@ sub new {
|
|||
COMPILE_DIR => C4::Context->config('template_cache_dir')?C4::Context->config('template_cache_dir'):'',,
|
||||
INCLUDE_PATH => \@includes,
|
||||
FILTERS => {},
|
||||
ENCODING => 'utf8', # templates don't have BOM, see Template::FAQ
|
||||
}
|
||||
) or die Template->error();
|
||||
my $self = {
|
||||
|
@ -114,57 +115,16 @@ sub output {
|
|||
C4::Context->preference('opaclayoutstylesheet');
|
||||
|
||||
# add variables set via param to $vars for processing
|
||||
# and clean any utf8 mess
|
||||
for my $k ( keys %{ $self->{VARS} } ) {
|
||||
$vars->{$k} = $self->{VARS}->{$k};
|
||||
if (ref($vars->{$k}) eq 'ARRAY'){
|
||||
utf8_arrayref($vars->{$k});
|
||||
}
|
||||
elsif (ref($vars->{$k}) eq 'HASH'){
|
||||
utf8_hashref($vars->{$k});
|
||||
}
|
||||
else {
|
||||
utf8::encode($vars->{$k}) if utf8::is_utf8($vars->{$k});
|
||||
}
|
||||
}
|
||||
my $data;
|
||||
# binmode( STDOUT, ":utf8" );
|
||||
$template->process( $self->filename, $vars, \$data )
|
||||
|| die "Template process failed: ", $template->error();
|
||||
return $data;
|
||||
}
|
||||
|
||||
sub utf8_arrayref {
|
||||
my $arrayref = shift;
|
||||
foreach my $element (@$arrayref){
|
||||
if (ref($element) eq 'ARRAY'){
|
||||
utf8_arrayref($element);
|
||||
next;
|
||||
}
|
||||
if (ref($element) eq 'HASH'){
|
||||
utf8_hashref($element);
|
||||
next;
|
||||
}
|
||||
utf8::encode($element) if utf8::is_utf8($element);
|
||||
}
|
||||
}
|
||||
|
||||
sub utf8_hashref {
|
||||
my $hashref = shift;
|
||||
for my $key (keys %{$hashref}){
|
||||
if (ref($hashref->{$key}) eq 'ARRAY'){
|
||||
utf8_arrayref($hashref->{$key});
|
||||
next;
|
||||
}
|
||||
if (ref($hashref->{$key}) eq 'HASH'){
|
||||
utf8_hashref($hashref->{$key});
|
||||
next;
|
||||
}
|
||||
utf8::encode($hashref->{$key}) if utf8::is_utf8($hashref->{$key});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
# FIXME - this is a horrible hack to cache
|
||||
# the current known-good language, temporarily
|
||||
# put in place to resolve bug 4403. It is
|
||||
|
|
|
@ -221,7 +221,8 @@ sub XSLTParse4Display {
|
|||
$stylesheet->{$xslfilename} = $xslt->parse_stylesheet($style_doc);
|
||||
}
|
||||
my $results = $stylesheet->{$xslfilename}->transform($source);
|
||||
my $newxmlrecord = $stylesheet->{$xslfilename}->output_string($results);
|
||||
my $newxmlrecord = $stylesheet->{$xslfilename}->output_as_chars($results);
|
||||
#no need to decode with UTF-8 in header of XSLT templates: BZ 6554
|
||||
return $newxmlrecord;
|
||||
}
|
||||
|
||||
|
|
|
@ -74,6 +74,7 @@ my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
|
|||
|
||||
#parameters
|
||||
my $supplier = $query->param('supplier');
|
||||
utf8::decode($supplier);
|
||||
my $booksellerid = $query->param('booksellerid');
|
||||
my @suppliers;
|
||||
|
||||
|
|
|
@ -60,13 +60,22 @@ use C4::Debug;
|
|||
|
||||
my $input = new CGI;
|
||||
my $title = $input->param( 'title');
|
||||
utf8::decode($title);
|
||||
my $author = $input->param('author');
|
||||
utf8::decode($author);
|
||||
my $isbn = $input->param('isbn');
|
||||
utf8::decode($isbn);
|
||||
my $name = $input->param( 'name' );
|
||||
utf8::decode($name);
|
||||
my $ean = $input->param('ean');
|
||||
utf8::decode($ean);
|
||||
my $basket = $input->param( 'basket' );
|
||||
utf8::decode($basket);
|
||||
my $basketgroupname = $input->param('basketgroupname');
|
||||
utf8::decode($basketgroupname);
|
||||
my $booksellerinvoicenumber = $input->param( 'booksellerinvoicenumber' );
|
||||
utf8::decode($booksellerinvoicenumber);
|
||||
|
||||
my $do_search = $input->param('do_search') || 0;
|
||||
my $from_placed_on = C4::Dates->new($input->param('from'));
|
||||
my $to_placed_on = C4::Dates->new($input->param('to'));
|
||||
|
|
|
@ -21,6 +21,7 @@ use strict;
|
|||
use warnings;
|
||||
|
||||
use CGI;
|
||||
|
||||
use C4::Auth;
|
||||
use C4::Context;
|
||||
use C4::Koha;
|
||||
|
@ -34,6 +35,7 @@ use File::Spec;
|
|||
use IO::File;
|
||||
use YAML::Syck qw();
|
||||
$YAML::Syck::ImplicitTyping = 1;
|
||||
$YAML::Syck::ImplicitUnicode = 1; # force utf-8 for preference encoding
|
||||
our $lang;
|
||||
|
||||
# use Smart::Comments;
|
||||
|
@ -295,7 +297,8 @@ if ( $op eq 'save' ) {
|
|||
my @TABS;
|
||||
|
||||
if ( $op eq 'search' ) {
|
||||
my $searchfield = $input->param( 'searchfield' );
|
||||
my $searchfield = $input->param('searchfield');
|
||||
utf8::decode($searchfield);
|
||||
|
||||
$searchfield =~ s/\p{IsC}//g;
|
||||
$searchfield =~ s/\s+/ /;
|
||||
|
|
|
@ -21,7 +21,7 @@
|
|||
|
||||
use strict;
|
||||
use warnings;
|
||||
use CGI;
|
||||
use CGI qw( -utf8 );
|
||||
use C4::Context;
|
||||
use C4::Auth;
|
||||
use C4::Output;
|
||||
|
|
|
@ -125,7 +125,7 @@ if ( $op eq "do_search" ) {
|
|||
# next/previous would not work anymore
|
||||
|
||||
# construction of the url of each page
|
||||
my $value_url = uri_escape($value);
|
||||
my $value_url = uri_escape_utf8($value);
|
||||
my $base_url = "authorities-home.pl?"
|
||||
."marclist=$marclist"
|
||||
."&and_or=$and_or"
|
||||
|
|
|
@ -154,7 +154,7 @@ use C4::Branch; # GetBranches
|
|||
my $DisplayMultiPlaceHold = C4::Context->preference("DisplayMultiPlaceHold");
|
||||
# create a new CGI object
|
||||
# FIXME: no_undef_params needs to be tested
|
||||
use CGI qw('-no_undef_params');
|
||||
use CGI qw( -no_undef_params -utf8 );
|
||||
my $cgi = new CGI;
|
||||
|
||||
my ($template,$borrowernumber,$cookie);
|
||||
|
|
|
@ -880,7 +880,7 @@ if ( $op eq "addbiblio" ) {
|
|||
.'&frameworkcode='.$frameworkcode
|
||||
.'&circborrowernumber='.$fa_circborrowernumber
|
||||
.'&branch='.$fa_branch
|
||||
.'&barcode='.uri_escape($fa_barcode)
|
||||
.'&barcode='.uri_escape_utf8($fa_barcode)
|
||||
.'&stickyduedate='.$fa_stickyduedate
|
||||
.'&duedatespec='.$fa_duedatespec
|
||||
);
|
||||
|
|
|
@ -517,7 +517,7 @@ if ($op eq "additem") {
|
|||
print $input->redirect(
|
||||
'/cgi-bin/koha/circ/circulation.pl?'
|
||||
.'borrowernumber='.$fa_circborrowernumber
|
||||
.'&barcode='.uri_escape($fa_barcode)
|
||||
.'&barcode='.uri_escape_utf8($fa_barcode)
|
||||
.'&duedatespec='.$fa_duedatespec
|
||||
.'&stickyduedate=1'
|
||||
);
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
|
||||
use strict;
|
||||
use warnings;
|
||||
use CGI;
|
||||
use CGI qw( -utf8 );
|
||||
|
||||
use C4::Auth;
|
||||
use C4::Output;
|
||||
|
|
|
@ -24,6 +24,7 @@
|
|||
use strict;
|
||||
use warnings;
|
||||
use CGI;
|
||||
|
||||
use C4::Output;
|
||||
use C4::Print;
|
||||
use C4::Auth qw/:DEFAULT get_session/;
|
||||
|
@ -102,6 +103,7 @@ our %return_failed = ();
|
|||
for (@failedreturns) { $return_failed{$_} = 1; }
|
||||
|
||||
my $findborrower = $query->param('findborrower') || q{};
|
||||
utf8::decode($findborrower);
|
||||
$findborrower =~ s|,| |g;
|
||||
my $borrowernumber = $query->param('borrowernumber');
|
||||
|
||||
|
|
|
@ -27,7 +27,7 @@ use strict;
|
|||
#use warnings; FIXME - Bug 2505
|
||||
use C4::Auth;
|
||||
use C4::Output;
|
||||
use CGI;
|
||||
use CGI qw( -utf8 );
|
||||
use C4::Members;
|
||||
use C4::Branch;
|
||||
use C4::Category;
|
||||
|
|
|
@ -60,7 +60,7 @@ use Business::ISBN;
|
|||
my $DisplayMultiPlaceHold = C4::Context->preference("DisplayMultiPlaceHold");
|
||||
# create a new CGI object
|
||||
# FIXME: no_undef_params needs to be tested
|
||||
use CGI qw('-no_undef_params');
|
||||
use CGI qw( -no_undef_params -utf8 );
|
||||
my $cgi = new CGI;
|
||||
|
||||
my $branch_group_limit = $cgi->param("branch_group_limit");
|
||||
|
@ -652,7 +652,7 @@ for (my $i=0;$i<@servers;$i++) {
|
|||
$newsearchcookie = $cgi->cookie(
|
||||
-name => 'KohaOpacRecentSearches',
|
||||
# We uri_escape the whole freezed structure so we're sure we won't have any encoding problems
|
||||
-value => uri_escape(freeze(\@recentSearches)),
|
||||
-value => uri_escape_utf8(freeze(\@recentSearches)),
|
||||
-expires => ''
|
||||
);
|
||||
$cookie = [$cookie, $newsearchcookie];
|
||||
|
|
|
@ -665,7 +665,7 @@ elsif ($phase eq 'Run this report'){
|
|||
my $totpages = int($total/$limit) + (($total % $limit) > 0 ? 1 : 0);
|
||||
my $url = "/cgi-bin/koha/reports/guided_reports.pl?reports=$report_id&phase=Run%20this%20report&limit=$limit";
|
||||
if (@sql_params) {
|
||||
$url = join('&sql_params=', $url, map { URI::Escape::uri_escape($_) } @sql_params);
|
||||
$url = join('&sql_params=', $url, map { URI::Escape::uri_escape_utf8($_) } @sql_params);
|
||||
}
|
||||
$template->param(
|
||||
'results' => \@rows,
|
||||
|
|
|
@ -127,7 +127,7 @@ foreach my $barcode (@barcodes) {
|
|||
# redirection to the referrer page
|
||||
#
|
||||
if ( $input->param('destination') eq "circ" ) {
|
||||
$cardnumber = uri_escape($cardnumber);
|
||||
$cardnumber = uri_escape_utf8($cardnumber);
|
||||
print $input->redirect( '/cgi-bin/koha/circ/circulation.pl?findborrower='
|
||||
. $cardnumber
|
||||
. $failedrenews
|
||||
|
|
|
@ -127,7 +127,7 @@ $routingnotes =~ s/\n/\<br \/\>/g;
|
|||
$template->param(
|
||||
title => $subs->{'bibliotitle'},
|
||||
issue => $issue,
|
||||
issue_escaped => URI::Escape::uri_escape($issue),
|
||||
issue_escaped => URI::Escape::uri_escape_utf8($issue),
|
||||
subscriptionid => $subscriptionid,
|
||||
memberloop => $memberloop,
|
||||
routingnotes => $routingnotes,
|
||||
|
|
|
@ -62,7 +62,7 @@ if($op eq 'add'){
|
|||
if($op eq 'save'){
|
||||
my $sth = $dbh->prepare('UPDATE serial SET routingnotes = ? WHERE subscriptionid = ?');
|
||||
$sth->execute($notes,$subscriptionid);
|
||||
my $urldate = URI::Escape::uri_escape($date_selected);
|
||||
my $urldate = URI::Escape::uri_escape_utf8($date_selected);
|
||||
print $query->redirect("routing-preview.pl?subscriptionid=$subscriptionid&issue=$urldate");
|
||||
}
|
||||
|
||||
|
|
|
@ -38,10 +38,13 @@ use C4::Serials;
|
|||
|
||||
my $query = new CGI;
|
||||
my $title = $query->param('title_filter') || '';
|
||||
utf8::decode($title);
|
||||
my $ISSN = $query->param('ISSN_filter') || '';
|
||||
my $EAN = $query->param('EAN_filter') || '';
|
||||
my $publisher = $query->param('publisher_filter') || '';
|
||||
utf8::decode($publisher);
|
||||
my $bookseller = $query->param('bookseller_filter') || '';
|
||||
utf8::decode($bookseller);
|
||||
my $biblionumber = $query->param('biblionumber') || '';
|
||||
my $branch = $query->param('branch_filter') || '';
|
||||
my $routing = $query->param('routing') || C4::Context->preference("RoutingSerials");
|
||||
|
|
Loading…
Reference in a new issue