ffzg/recall_notices.pl: added --interval and --dedup
[koha.git] / C4 / AuthoritiesMarc.pm
index 165ef36..10c67fc 100644 (file)
@@ -163,9 +163,12 @@ sub SearchAuthorities {
                 elsif ( @$tags[$i] eq "thesaurus" ) {
                     $attr = " \@attr 1=Subject-heading-thesaurus ";
                 }
-                else {    # Assume any if no index was specified
+                elsif ( @$tags[$i] eq "all" ) {
                     $attr = " \@attr 1=Any ";
                 }
+                else {    # Use the index passed in params
+                    $attr = " \@attr 1=" . @$tags[$i] . " ";
+                }
             }         #if @$tags[$i]
             else {    # Assume any if no index was specified
                 $attr = " \@attr 1=Any ";
@@ -760,7 +763,7 @@ sub FindDuplicateAuthority {
     if ($QParser) {
         $op = '&&';
     } else {
-        $op = 'and';
+        $op = 'AND';
     }
     my $query='at:'.$authtypecode.' ';
     my $filtervalues=qr([\001-\040\Q!'"`#$%&*+,-./:;<=>?@(){[}_|~\E\]]);
@@ -1471,10 +1474,11 @@ sub merge {
                 my $newtag = $tags_new && @$tags_new
                   ? _merge_newtag( $tag, $tags_new )
                   : $tag;
+                my $controlled_ind = $authto->controlled_indicators({ record => $MARCto, biblio_tag => $newtag });
                 my $field_to = MARC::Field->new(
                     $newtag,
-                    $field->indicator(1),
-                    $field->indicator(2),
+                    $controlled_ind->{ind1} // $field->indicator(1),
+                    $controlled_ind->{ind2} // $field->indicator(2),
                     9 => $mergeto, # Needed to create field, will be moved
                 );
                 my ( @prefix, @postfix );
@@ -1500,6 +1504,15 @@ sub merge {
                 foreach my $subfield ( @prefix, @record_to, @postfix ) {
                     $field_to->add_subfields($subfield->[0] => $subfield->[1]);
                 }
+                if( exists $controlled_ind->{sub2} ) { # thesaurus info
+                    if( defined $controlled_ind->{sub2} ) {
+                        # Add or replace
+                        $field_to->update( 2 => $controlled_ind->{sub2} );
+                    } else {
+                        # Key alerts us here to remove $2
+                        $field_to->delete_subfield( code => '2' );
+                    }
+                }
                 # Move $9 to the end
                 $field_to->delete_subfield( code => '9' );
                 $field_to->add_subfields( 9 => $mergeto );