@@ -, +, @@ GetRecordValue subroutine --- --- ------ --- --- C4/Biblio.pm | 25 +++++++++++++++++++------ 1 files changed, 19 insertions(+), 6 deletions(-) --- a/C4/Biblio.pm +++ a/C4/Biblio.pm @@ -674,35 +674,48 @@ sub _check_valid_auth_link { =head2 GetRecordValue - my $values = GetRecordValue($field, $record, $frameworkcode); + my $values = GetRecordValue($field, $record, $frameworkcode, $as_string); Get MARC fields from a keyword defined in fieldmapping table. =cut sub GetRecordValue { - my ( $field, $record, $frameworkcode ) = @_; + my ( $field, $record, $frameworkcode, $as_string ) = @_; my $dbh = C4::Context->dbh; my $sth = $dbh->prepare('SELECT fieldcode, subfieldcode FROM fieldmapping WHERE frameworkcode = ? AND field = ?'); $sth->execute( $frameworkcode, $field ); my @result = (); + my $result_string = ''; while ( my $row = $sth->fetchrow_hashref ) { foreach my $field ( $record->field( $row->{fieldcode} ) ) { if ( ( $row->{subfieldcode} ne "" && $field->subfield( $row->{subfieldcode} ) ) ) { foreach my $subfield ( $field->subfield( $row->{subfieldcode} ) ) { - push @result, { 'subfield' => $subfield }; + if ($as_string) { + $result_string .= $subfield . ' '; + } else { + push @result, { 'subfield' => $subfield }; + } } } elsif ( $row->{subfieldcode} eq "" ) { - push @result, { 'subfield' => $field->as_string() }; + if ($as_string) { + $result_string = $field->as_string(); + } else { + push @result, { 'subfield' => $field->as_string() }; + } } } } - - return \@result; + if ($as_string) { + $result_string =~ s/\s+$//;; + return $result_string; + } else { + return \@result; + } } =head2 SetFieldMapping --