Bug 10331 - Little errors in unimarc_field_4XX.pl (punctuation)
[koha.git] / cataloguing / value_builder / unimarc_field_4XX.pl
index ddb6547..75862cb 100755 (executable)
@@ -1,6 +1,6 @@
 #!/usr/bin/perl
 
-# Copyright 2000-2002 Katipo Communications
+# Copyright Biblibre 2007
 #
 # This file is part of Koha.
 #
@@ -116,16 +116,19 @@ sub plugin {
             $subfield_value_a .= " " . $marcrecord->subfield( '700', "d" )
               if $marcrecord->subfield( '700', 'd' );
             $subfield_value_a .=
-              " (" . $marcrecord->subfield( '700', 'c' ) . " - "
+              " (" . $marcrecord->subfield( '700', 'c' )
               if $marcrecord->subfield( '700',     'c' );
+            $subfield_value_a .=  " ; "
+              if $marcrecord->subfield( '700',     'c' )
+                and $marcrecord->subfield( '700',     'f' );
             $subfield_value_a .= " ("
               if ( $marcrecord->subfield( '700', 'f' )
                 and not( $marcrecord->subfield( '700', 'c' ) ) );
             $subfield_value_a .= $marcrecord->subfield( '700', 'f' )
               if ( $marcrecord->subfield( '700', 'f' ) );
             $subfield_value_a .= ")"
-              if ( $marcrecord->subfield( '701', 'f' )
-                or $marcrecord->subfield( '701', 'c' ) );
+              if ( $marcrecord->subfield( '700', 'f' )
+                or $marcrecord->subfield( '700', 'c' ) );
         }
         elsif ( $marcrecord->field('702') ) {
             $subfield_value_a = $marcrecord->subfield( '702', 'a' );
@@ -134,8 +137,11 @@ sub plugin {
             $subfield_value_a .= " " . $marcrecord->subfield( '702', 'd' )
               if $marcrecord->subfield( '702', 'd' );
             $subfield_value_a .=
-              " (" . $marcrecord->subfield( '702', 'c' ) . "; "
+              " (" . $marcrecord->subfield( '702', 'c' )
               if $marcrecord->subfield( '702',     'c' );
+            $subfield_value_a .=  " ; "
+              if $marcrecord->subfield( '702',     'c' )
+                and $marcrecord->subfield( '702',     'f' );
             $subfield_value_a .= " ("
               if $marcrecord->subfield( '702', 'f' )
               and not $marcrecord->subfield( '702', 'c' );
@@ -193,7 +199,7 @@ sub plugin {
               " (" . $marcrecord->subfield( '712', 'f' ) . " - "
               if $marcrecord->subfield( '712',     'f' );
             $subfield_value_a .= " ("
-              if $marcrecord->field( '712', "e" )
+              if $marcrecord->subfield( '712', "e" )
               and not $marcrecord->subfield( '712', 'f' );
             $subfield_value_a .= $marcrecord->subfield( '712', 'e' )
               if $marcrecord->subfield( '712', 'e' );
@@ -204,12 +210,14 @@ sub plugin {
         elsif ( $marcrecord->field('200') ) {
             $subfield_value_a = $marcrecord->subfield( '200', 'f' );
         }
-        my $subfield_value_c = $marcrecord->field('210')->subfield("a")
+       my $subfield_value_c;
+       my $subfield_value_d;
+       my $subfield_value_e;
+        $subfield_value_c = $marcrecord->field('210')->subfield("a")
           if ( $marcrecord->field('210') );
-        my $subfield_value_d = $marcrecord->field('210')->subfield("d")
+        $subfield_value_d = $marcrecord->field('210')->subfield("d")
           if ( $marcrecord->field('210') );
-
-        my $subfield_value_e = $marcrecord->field('205')->subfield("a")
+       $subfield_value_e = $marcrecord->field('205')->subfield("a")
           if ( $marcrecord->field('205') );
 
         my $subfield_value_h;
@@ -246,7 +254,8 @@ sub plugin {
             $subfield_value_i = $marcrecord->field('500')->subfield("i");
         }
 
-        my $subfield_value_p = $marcrecord->field('215')->subfield("a")
+        my $subfield_value_p;
+       $subfield_value_p = $marcrecord->field('215')->subfield("a")
           if ( $marcrecord->field('215') );
 
         my $subfield_value_t;
@@ -266,8 +275,10 @@ sub plugin {
             $subfield_value_t = $marcrecord->field('500')->subfield("a");
         }
 
-        my $subfield_value_u = $marcrecord->field('856')->subfield("u")
-          if ( $marcrecord->field('856') );
+        my $subfield_value_u;
+        if ( $marcrecord->field('856') ) {
+            $subfield_value_u = $marcrecord->field('856')->subfield("u");
+        }
 
         my $subfield_value_v;
         if (   ( $marcrecord->field('225') )
@@ -280,14 +291,17 @@ sub plugin {
         {
             $subfield_value_v = $marcrecord->field('200')->subfield("h");
         }
-        my $subfield_value_x = $marcrecord->field('011')->subfield("a")
-          if (
+        my $subfield_value_x;
+        if (
             $marcrecord->field('011')
             and not( ( $marcrecord->field('011')->subfield("y") )
-                or ( $marcrecord->field('011')->subfield("z") ) )
-          );
-        my $subfield_value_y = $marcrecord->field('013')->subfield("a")
-          if ( $marcrecord->field('013') );
+                or ( $marcrecord->field('011')->subfield("z") ) ) ) {
+             $subfield_value_x = $marcrecord->field('011')->subfield("a");
+        }
+        my $subfield_value_y;
+          if ( $marcrecord->field('013') ) {
+             $subfield_value_y = $marcrecord->field('013')->subfield("a");
+        }
         if   ( $marcrecord->field('010') ) {
             $subfield_value_y = $marcrecord->field('010')->subfield("a");
         }
@@ -333,7 +347,15 @@ sub plugin {
         my $startfrom      = $query->param('startfrom');
         my $resultsperpage = $query->param('resultsperpage') || 20;
         my $orderby;
-        $search = 'kw,wrdl='.$search.' and mc-itemtype='.$itype if $itype;
+        my $QParser;
+        $QParser = C4::Context->queryparser if (C4::Context->preference('UseQueryParser'));
+        my $op;
+        if ($QParser) {
+            $op = '&&';
+        } else {
+            $op = 'and';
+        }
+        $search = 'kw:'.$search." $op mc-itemtype:".$itype if $itype;
         my ( $errors, $results, $total_hits ) = SimpleSearch($search, $startfrom * $resultsperpage, $resultsperpage );
         if (defined $errors ) {
             $results = [];
@@ -371,7 +393,10 @@ sub plugin {
             my $record = MARC::Record::new_from_usmarc( $results->[$i] );
             my $rechash = TransformMarcToKoha( $dbh, $record );
             my $pos;
-            my $countitems = 1 if ( $rechash->{itemnumber} );
+            my $countitems;
+            if ( $rechash->{itemnumber} ) {
+                $countitems=1;
+            }
             while ( index( $rechash->{itemnumber}, '|', $pos ) > 0 ) {
                 $countitems += 1;
                 $pos = index( $rechash->{itemnumber}, '|', $pos ) + 1;
@@ -492,25 +517,7 @@ sub plugin {
         );
         $sth->finish;
 
-        my @branchloop;
-        my @select_branch;
-        my %select_branches;
-        my $branches = GetBranches;
-        push @select_branch, "";
-        $select_branches{''} = "";
-        foreach my $thisbranch ( keys %$branches ) {
-            push @select_branch, $branches->{$thisbranch}->{'branchcode'};
-            $select_branches{ $branches->{$thisbranch}->{'branchcode'} } =
-              $branches->{$thisbranch}->{'branchname'};
-        }
-        my $CGIbranch = CGI::scrolling_list(
-            -name     => 'value',
-            -values   => \@select_branch,
-            -labels   => \%select_branches,
-            -size     => 1,
-            -multiple => 0
-        );
-        $sth->finish;
+        # To show list of branches please use GetBranchesLoop() and modify template
 
         my $req =
           $dbh->prepare(
@@ -541,7 +548,6 @@ sub plugin {
 
         $template->param(    #classlist => $classlist,
             CGIitemtype  => $CGIitemtype,
-            CGIbranch    => $CGIbranch,
             CGIPublisher => $CGIpublisher,
             itypeloop    => \@itemtypes,
             index        => $query->param('index'),