Fix the language detection, to use the browser language if opac is translated, so...
[koha.git] / opac / opac-main.pl
1 #!/usr/bin/perl
2
3 # This file is part of Koha.
4 #
5 # Koha is free software; you can redistribute it and/or modify it under the
6 # terms of the GNU General Public License as published by the Free Software
7 # Foundation; either version 2 of the License, or (at your option) any later
8 # version.
9 #
10 # Koha is distributed in the hope that it will be useful, but WITHOUT ANY
11 # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
12 # A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
13 #
14 # You should have received a copy of the GNU General Public License along with
15 # Koha; if not, write to the Free Software Foundation, Inc., 59 Temple Place,
16 # Suite 330, Boston, MA  02111-1307 USA
17
18
19 use strict;
20 use CGI;
21 use C4::Auth;    # get_template_and_user
22 use C4::Output;
23 use C4::VirtualShelves;
24 use C4::Branch;          # GetBranches
25 use C4::Members;         # GetMember
26 use C4::NewsChannels;    # get_opac_news
27 use C4::Acquisition;     # GetRecentAcqui
28 use C4::Languages qw(getTranslatedLanguages);
29
30 my $input = new CGI;
31 my $dbh   = C4::Context->dbh;
32
33 my ( $template, $borrowernumber, $cookie ) = get_template_and_user(
34     {
35         template_name   => "opac-main.tmpl",
36         type            => "opac",
37         query           => $input,
38         authnotrequired => 1,
39         flagsrequired   => { borrow => 1 },
40     }
41 );
42
43 my $borrower = GetMember( $borrowernumber, 'borrowernumber' );
44 $template->param(
45     textmessaging        => $borrower->{textmessaging},
46 );
47
48 # display news
49 # use cookie setting for language, bug default to syspref if it's not set
50 (my $theme) = themelanguage(C4::Context->config('opachtdocs'),'opac-main.tmpl','opac',$input);
51
52 my $translations = getTranslatedLanguages('opac',$theme);
53 my @languages = ();
54 foreach my $trans (@$translations)
55 {
56     push(@languages, $trans->{rfc4646_subtag});
57 }
58
59 my $news_lang;
60 if($input->cookie('KohaOpacLanguage')){
61     $news_lang = $input->cookie('KohaOpacLanguage');
62 }else{
63     while( !$news_lang && ( $ENV{HTTP_ACCEPT_LANGUAGE} =~ m/([a-zA-Z]{2,}-?[a-zA-Z]*)(;|,)?/g ) ){
64         if( my @lang = grep { /^$1$/i } @languages ) {
65             $news_lang = $lang[0];
66         }
67     }
68 }
69
70 $news_lang = $news_lang ? $news_lang : 'en' ;
71
72 my $all_koha_news   = &GetNewsToDisplay($news_lang);
73 my $koha_news_count = scalar @$all_koha_news;
74
75 $template->param(
76     koha_news       => $all_koha_news,
77     koha_news_count => $koha_news_count
78 );
79
80 output_html_with_http_headers $input, $cookie, $template->output;