}
} else {
my $query;
+ my $qpquery = '';
+ my $QParser;
+ $QParser = C4::Context->queryparser if (C4::Context->preference('UseQueryParser'));
my $attr = '';
# the marclist may contain "mainentry". In this case, search the tag_to_report, that depends on
# the authtypecode. Then, search on $a of this tag_to_report
if ($n>1){
while ($n>1){$query= "\@or ".$query;$n--;}
}
+ if ($QParser) {
+ $qpquery .= '(authtype:' . join('|| authtype:', @auths) . ')';
+ }
}
my $dosearch;
$q2 .=$attr;
$dosearch=1;
++$attr_cnt;
+ if ($QParser) {
+ $qpquery .= " $tags->[$i]:$value->[$i]";
+ }
}#if value
}
##Add how many queries generated
} elsif ($sortby eq 'HeadingDsc') {
$orderstring = '@attr 7=2 @attr 1=Heading 0';
} elsif ($sortby eq 'AuthidAsc') {
- $orderstring = '@attr 7=1 @attr 1=Local-Number 0';
+ $orderstring = '@attr 7=1 @attr 4=109 @attr 1=Local-Number 0';
} elsif ($sortby eq 'AuthidDsc') {
- $orderstring = '@attr 7=2 @attr 1=Local-Number 0';
+ $orderstring = '@attr 7=2 @attr 4=109 @attr 1=Local-Number 0';
+ }
+ if ($QParser) {
+ $qpquery .= ' all:all' unless $value->[0];
+
+ if ( $value->[0] =~ m/^qp=(.*)$/ ) {
+ $qpquery = $1;
+ }
+
+ $qpquery .= " #$sortby";
+
+ $QParser->parse( $qpquery );
+ $query = $QParser->target_syntax('authorityserver');
+ } else {
+ $query=($query?$query:"\@attr 1=_ALLRECORDS \@attr 2=103 ''");
+ $query="\@or $orderstring $query" if $orderstring;
}
- $query=($query?$query:"\@attr 1=_ALLRECORDS \@attr 2=103 ''");
- $query="\@or $orderstring $query" if $orderstring;
$offset=0 unless $offset;
my $counter = $offset;
} else {
### ZOOM search here
my $query;
- $query= "an=".$authid;
+ $query= "an:".$authid;
my ($err,$res,$result) = C4::Search::SimpleSearch($query,0,10);
if ($err) {
warn "Error: $err from search $query";
if ($format eq "UNIMARCAUTH") {
$record->leader(" nx j22 ") unless ($record->leader());
- my $date=POSIX::strftime("%Y%m%d",localtime);
+ my $date=POSIX::strftime("%Y%m%d",localtime);
+ my $defaultfield100 = C4::Context->preference('UNIMARCAuthorityField100');
if (my $string=$record->subfield('100',"a")){
$string=~s/fre50/frey50/;
$record->field('100')->update('a'=>$string);
}
elsif ($record->field('100')){
- $record->field('100')->update('a'=>$date."afrey50 ba0");
+ $record->field('100')->update('a'=>$date.$defaultfield100);
} else {
$record->append_fields(
MARC::Field->new('100',' ',' '
- ,'a'=>$date."afrey50 ba0")
+ ,'a'=>$date.$defaultfield100)
);
}
}
$sth->finish;
# warn "record :".$record->as_formatted." auth_tag_to_report :$auth_tag_to_report";
# build a request for SearchAuthorities
- my $query='at='.$authtypecode.' ';
+ my $QParser;
+ $QParser = C4::Context->queryparser if (C4::Context->preference('UseQueryParser'));
+ my $op;
+ if ($QParser) {
+ $op = '&&';
+ } else {
+ $op = 'and';
+ }
+ my $query='at:'.$authtypecode.' ';
my $filtervalues=qr([\001-\040\!\'\"\`\#\$\%\&\*\+,\-\./:;<=>\?\@\(\)\{\[\]\}_\|\~]);
if ($record->field($auth_tag_to_report)) {
foreach ($record->field($auth_tag_to_report)->subfields()) {
- $_->[1]=~s/$filtervalues/ /g; $query.= " and he,wrdl=\"".$_->[1]."\"" if ($_->[0]=~/[A-z]/);
+ $_->[1]=~s/$filtervalues/ /g; $query.= " $op he:\"".$_->[1]."\"" if ($_->[0]=~/[A-z]/);
}
}
my ($error, $results, $total_hits) = C4::Search::SimpleSearch( $query, 0, 1, [ "authorityserver" ] );