Merge remote branch 'kc/new/bug_4885' into kcmaster
[koha_gimpoz] / C4 / AuthoritiesMarc.pm
index d07cca4..9315e55 100644 (file)
@@ -220,6 +220,7 @@ sub SearchAuthorities {
         my $dosearch;
         my $and=" \@and " ;
         my $q2;
+        my $attr_cnt = 0;
         for(my $i = 0 ; $i <= $#{$value} ; $i++)
         {
             if (@$value[$i]){
@@ -246,15 +247,16 @@ sub SearchAuthorities {
                 }
                 $attr =$attr."\"".@$value[$i]."\"";
                 $q2 .=$attr;
-            $dosearch=1;
+                $dosearch=1;
+                ++$attr_cnt;
             }#if value
         }
         ##Add how many queries generated
-        if ($query=~/\S+/){    
-          $query= $and.$query.$q2 
+        if ($query=~/\S+/){
+          $query= $and x $attr_cnt . $query . $q2;
         } else {
-          $query=$q2;    
-        }         
+          $query= $q2;
+        }
         ## Adding order
         #$query=' @or  @attr 7=2 @attr 1=Heading 0 @or  @attr 7=1 @attr 1=Heading 1'.$query if ($sortby eq "HeadingDsc");
         my $orderstring= ($sortby eq "HeadingAsc"?
@@ -264,8 +266,9 @@ sub SearchAuthorities {
                             '@attr 7=2 @attr 1=Heading 0'
                            :''
                         );            
-        $query=($query?"\@or $orderstring $query":"\@or \@attr 1=_ALLRECORDS \@attr 2=103 '' $orderstring ");
-        
+        $query=($query?$query:"\@attr 1=_ALLRECORDS \@attr 2=103 ''");
+        $query="\@or $orderstring $query" if $orderstring;
+
         $offset=0 unless $offset;
         my $counter = $offset;
         $length=10 unless $length;
@@ -610,6 +613,16 @@ sub AddAuthority {
         $format= 'MARC21';
     }
 
+    #update date/time to 005 for marc and unimarc
+    my $time=POSIX::strftime("%Y%m%d%H%M%S",localtime);
+    my $f5=$record->field('005');
+    if (!$f5) {
+      $record->insert_fields_ordered( MARC::Field->new('005',$time.".0") );
+    }
+    else {
+      $f5->update($time.".0");
+    }
+
        if ($format eq "MARC21") {
                if (!$record->leader) {
                        $record->leader($leader);
@@ -619,12 +632,6 @@ sub AddAuthority {
                                MARC::Field->new('003',C4::Context->preference('MARCOrgCode'))
                        );
                }
-               my $time=POSIX::strftime("%Y%m%d%H%M%S",localtime);
-               if (!$record->field('005')) {
-                       $record->insert_fields_ordered(
-                               MARC::Field->new('005',$time.".0")
-                       );
-               }
                my $date=POSIX::strftime("%y%m%d",localtime);
                if (!$record->field('008')) {
                        $record->insert_fields_ordered(
@@ -712,8 +719,8 @@ sub DelAuthority {
     my $dbh=C4::Context->dbh;
 
     ModZebra($authid,"recordDelete","authorityserver",GetAuthority($authid),undef);
-    $dbh->do("delete from auth_header where authid=$authid") ;
-
+    my $sth = prepare("DELETE FROM auth_header WHERE authid=?");
+    $sth->execute($authid);
 }
 
 sub ModAuthority {