From 1e6ea37f9e40b294c6d86a62710426fe0b75aa1e Mon Sep 17 00:00:00 2001
From: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Date: Fri, 18 Mar 2016 15:52:06 +0000
Subject: [PATCH] Bug 16088: [POC] Koha::CGI - Do no create a new CGI object to
 access the language

---
 C4/Languages.pm     | 12 ++++--------
 catalogue/search.pl |  4 ++--
 2 files changed, 6 insertions(+), 10 deletions(-)

diff --git a/C4/Languages.pm b/C4/Languages.pm
index 95bc114..141314f 100644
--- a/C4/Languages.pm
+++ b/C4/Languages.pm
@@ -26,6 +26,7 @@ use Carp;
 use CGI;
 use List::MoreUtils qw( any );
 use C4::Context;
+use Koha::CGI;
 use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $DEBUG);
 
 eval {
@@ -570,7 +571,6 @@ sub accept_language {
 sub getlanguage {
     my ($cgi) = @_;
 
-    $cgi //= new CGI;
     my $interface = C4::Context->interface;
     my $theme = C4::Context->preference( ( $interface eq 'opac' ) ? 'opacthemes' : 'template' );
     my $language;
@@ -584,17 +584,13 @@ sub getlanguage {
         @languages = split /,/, $preference_value;
     }
 
-    # Chose language from the URL
-    $language = $cgi->param( 'language' );
+    # Chose language from the URL or the cookie
+    $language = $cgi ? $cgi->param( 'language' ) || $cgi->cookie('KohaOpacLanguage') : Koha::CGI->language;
+    $language =~ s/[^a-zA-Z_-]*//; # sanitize cookie
     if ( defined $language && any { $_ eq $language } @languages) {
         return $language;
     }
 
-    # cookie
-    if ($language = $cgi->cookie('KohaOpacLanguage') ) {
-        $language =~ s/[^a-zA-Z_-]*//; # sanitize cookie
-    }
-
     # HTTP_ACCEPT_LANGUAGE
     if ( !$language && $ENV{HTTP_ACCEPT_LANGUAGE} ) {
         $language = accept_language( $ENV{HTTP_ACCEPT_LANGUAGE},
diff --git a/catalogue/search.pl b/catalogue/search.pl
index fe5d45d..8e4d5d6 100755
--- a/catalogue/search.pl
+++ b/catalogue/search.pl
@@ -160,8 +160,8 @@ use URI::Escape;
 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' -utf8 );
-my $cgi = new CGI;
+use Koha::CGI qw('-no_undef_params' -utf8 );
+my $cgi = Koha::CGI->new;
 
 # decide which template to use
 my $template_name;
-- 
2.7.0