bug_6488: Take in account opachiddenitems when searching in opac
[koha.git] / opac / opac-authorities-home.pl
index 764af2a..acff077 100755 (executable)
 # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
 # A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
 #
-# You should have received a copy of the GNU General Public License along with
-# Koha; if not, write to the Free Software Foundation, Inc., 59 Temple Place,
-# Suite 330, Boston, MA  02111-1307 USA
+# You should have received a copy of the GNU General Public License along
+# with Koha; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 
 use strict;
+use warnings;
 
 use CGI;
 use C4::Auth;
@@ -30,8 +31,8 @@ use C4::AuthoritiesMarc;
 use C4::Koha;    # XXX subfield_is_koha_internal_p
 
 my $query        = new CGI;
-my $op           = $query->param('op');
-my $authtypecode = $query->param('authtypecode');
+my $op           = $query->param('op') || '';
+my $authtypecode = $query->param('authtypecode') || '';
 my $dbh          = C4::Context->dbh;
 
 my $startfrom = $query->param('startfrom');
@@ -40,18 +41,20 @@ $startfrom = 0 if ( !defined $startfrom );
 my ( $template, $loggedinuser, $cookie );
 my $resultsperpage;
 
-my $authtypes = getauthtypes;
-my @authtypesloop;
-foreach my $thisauthtype ( sort { $authtypes->{$a}{'authtypetext'} cmp $authtypes->{$b}{'authtypetext'} }
-    keys %$authtypes )
-{
-    my $selected = 1 if $thisauthtype eq $authtypecode;
-    my %row = (
-        value        => $thisauthtype,
-        selected     => $selected,
-        authtypetext => $authtypes->{$thisauthtype}{'authtypetext'},
-    );
-    push @authtypesloop, \%row;
+my $authtypes     = getauthtypes();
+my @authtypesloop = ();
+foreach my $thisauthtype (
+    sort {
+        $authtypes->{$a}->{'authtypetext'}
+          cmp $authtypes->{$b}->{'authtypetext'}
+    }
+    keys %{$authtypes}
+  ) {
+    push @authtypesloop,
+      { value        => $thisauthtype,
+        selected     => $thisauthtype eq $authtypecode,
+        authtypetext => $authtypes->{$thisauthtype}->{'authtypetext'},
+      };
 }
 
 if ( $op eq "do_search" ) {
@@ -60,7 +63,7 @@ if ( $op eq "do_search" ) {
     my @excluding = ($query->param('excludinga'),$query->param('excludingb'),$query->param('excludingc'),);
     my @operator = ($query->param('operatora'),$query->param('operatorb'),$query->param('operatorc'));
     my $orderby = $query->param('orderby');
-    my @value = ($query->param('valuea'),$query->param('valueb'),$query->param('valuec'),);
+    my @value = ($query->param('valuea') || "",$query->param('valueb') || "",$query->param('valuec') || "",);
 
     $resultsperpage = $query->param('resultsperpage');
     $resultsperpage = 20 if ( !defined $resultsperpage );
@@ -82,6 +85,7 @@ if ( $op eq "do_search" ) {
     # multi page display gestion
     my $displaynext = 0;
     my $displayprev = $startfrom;
+    $total ||= 0;
     if ( ( $total - ( ( $startfrom + 1 ) * ($resultsperpage) ) ) > 0 ) {
         $displaynext = 1;
     }
@@ -89,11 +93,11 @@ if ( $op eq "do_search" ) {
     my @field_data = ();
 
     foreach my $letter (qw/a b c/){
-        push @field_data, { term => "marclist$letter" , val => $query->param("marclist$letter")};
-        push @field_data, { term => "and_or$letter" , val => $query->param("and_or$letter")};
-        push @field_data, { term => "excluding$letter" , val => $query->param("excluding$letter")};
-        push @field_data, { term => "operator$letter" , val => $query->param("operator$letter")};
-        push @field_data, { term => "value$letter" , val => $query->param("value$letter")};
+        push @field_data, { term => "marclist$letter" , val => $query->param("marclist$letter") || ''};
+        push @field_data, { term => "and_or$letter" , val => $query->param("and_or$letter") || ''};
+        push @field_data, { term => "excluding$letter" , val => $query->param("excluding$letter") || ''};
+        push @field_data, { term => "operator$letter" , val => $query->param("operator$letter") || ''};
+        push @field_data, { term => "value$letter" , val => $query->param("value$letter") || ''};
     }
 
     my @numbers = ();
@@ -139,6 +143,7 @@ if ( $op eq "do_search" ) {
         to             => $to,
         numbers        => \@numbers,
         authtypecode   => $authtypecode,
+        authtypetext   => $authtypes->{$authtypecode}{'authtypetext'},
         isEDITORS      => $authtypecode eq 'EDITORS',
     );
 
@@ -149,7 +154,7 @@ else {
             template_name   => "opac-authorities-home.tmpl",
             query           => $query,
             type            => 'opac',
-            authnotrequired => 1,
+            authnotrequired => ( C4::Context->preference("OpacPublic") ? 1 : 0 ),
             debug           => 1,
         }
     );