# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
# A PARTICULAR PURPOSE. See the GNU General Public License for more details.
#
-# You should have received a copy of the GNU General Public License along with
-# Koha; if not, write to the Free Software Foundation, Inc., 59 Temple Place,
-# Suite 330, Boston, MA 02111-1307 USA
+# You should have received a copy of the GNU General Public License along
+# with Koha; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
use strict;
+#use warnings; FIXME - Bug 2505
use C4::Context;
use C4::Koha;
use MARC::Record;
);
}
+
+=head1 NAME
+
+C4::AuthoritiesMarc
+
=head2 GetAuthMARCFromKohaField
-=over 4
+ ( $tag, $subfield ) = &GetAuthMARCFromKohaField ($kohafield,$authtypecode);
-( $tag, $subfield ) = &GetAuthMARCFromKohaField ($kohafield,$authtypecode);
returns tag and subfield linked to kohafield
Comment :
Suppose Kohafield is only linked to ONE subfield
-=back
-
=cut
sub GetAuthMARCFromKohaField {
=head2 SearchAuthorities
-=over 4
+ (\@finalresult, $nbresults)= &SearchAuthorities($tags, $and_or,
+ $excluding, $operator, $value, $offset,$length,$authtypecode,$sortby)
-(\@finalresult, $nbresults)= &SearchAuthorities($tags, $and_or, $excluding, $operator, $value, $offset,$length,$authtypecode,$sortby)
returns ref to array result and count of results returned
-=back
-
=cut
sub SearchAuthorities {
=head2 CountUsage
-=over 4
+ $count= &CountUsage($authid)
-$count= &CountUsage($authid)
counts Usage of Authid in bibliorecords.
-=back
-
=cut
sub CountUsage {
=head2 CountUsageChildren
-=over 4
+ $count= &CountUsageChildren($authid)
-$count= &CountUsageChildren($authid)
counts Usage of narrower terms of Authid in bibliorecords.
-=back
-
=cut
sub CountUsageChildren {
=head2 GetAuthTypeCode
-=over 4
+ $authtypecode= &GetAuthTypeCode($authid)
-$authtypecode= &GetAuthTypeCode($authid)
returns authtypecode of an authid
-=back
-
=cut
sub GetAuthTypeCode {
=head2 GuessAuthTypeCode
-=over 4
-
-my $authtypecode = GuessAuthTypeCode($record);
-
-=back
+ my $authtypecode = GuessAuthTypeCode($record);
Get the record and tries to guess the adequate authtypecode from its content.
=head2 GuessAuthId
-=over 4
-
-my $authtid = GuessAuthId($record);
-
-=back
+ my $authtid = GuessAuthId($record);
Get the record and tries to guess the adequate authtypecode from its content.
=head2 GetTagsLabels
-=over 4
+ $tagslabel= &GetTagsLabels($forlibrarian,$authtypecode)
-$tagslabel= &GetTagsLabels($forlibrarian,$authtypecode)
returns a ref to hashref of authorities tag and subfield structure.
tagslabel usage :
-$tagslabel->{$tag}->{$subfield}->{'attribute'}
+
+ $tagslabel->{$tag}->{$subfield}->{'attribute'}
+
where attribute takes values in :
+
lib
tab
mandatory
isurl
link
-=back
-
=cut
sub GetTagsLabels {
my $dbh=C4::Context->dbh;
$authtypecode="" unless $authtypecode;
my $sth;
- my $libfield = ($forlibrarian eq 1)? 'liblibrarian' : 'libopac';
+ my $libfield = ($forlibrarian == 1)? 'liblibrarian' : 'libopac';
# check that authority exists
=head2 AddAuthority
-=over 4
-
-$authid= &AddAuthority($record, $authid,$authtypecode)
-returns authid of the newly created authority
+ $authid= &AddAuthority($record, $authid,$authtypecode)
Either Create Or Modify existing authority.
-
-=back
+returns authid of the newly created authority
=cut
=head2 DelAuthority
-=over 4
+ $authid= &DelAuthority($authid)
-$authid= &DelAuthority($authid)
Deletes $authid
-=back
-
=cut
-
sub DelAuthority {
my ($authid) = @_;
my $dbh=C4::Context->dbh;
=head2 GetAuthorityXML
-=over 4
+ $marcxml= &GetAuthorityXML( $authid)
-$marcxml= &GetAuthorityXML( $authid)
returns xml form of record $authid
-=back
-
=cut
sub GetAuthorityXML {
=head2 GetAuthority
-=over 4
+ $record= &GetAuthority( $authid)
-$record= &GetAuthority( $authid)
Returns MARC::Record of the authority passed in parameter.
-=back
-
=cut
sub GetAuthority {
=head2 GetAuthType
-=over 4
-
-$result = &GetAuthType($authtypecode)
-
-=back
+ $result = &GetAuthType($authtypecode)
If the authority type specified by C<$authtypecode> exists,
returns a hashref of the type's fields. If the type
=head2 FindDuplicateAuthority
-=over 4
+ $record= &FindDuplicateAuthority( $record, $authtypecode)
-$record= &FindDuplicateAuthority( $record, $authtypecode)
return $authid,Summary if duplicate is found.
Comments : an improvement would be to return All the records that match.
-=back
-
=cut
sub FindDuplicateAuthority {
=head2 BuildSummary
-=over 4
+ $text= &BuildSummary( $record, $authid, $authtypecode)
-$text= &BuildSummary( $record, $authid, $authtypecode)
return HTML encoded Summary
Comment : authtypecode can be infered from both record and authid.
Moreover, authid can also be inferred from $record.
Would it be interesting to delete those things.
-=back
-
=cut
sub BuildSummary{
# construct UNIMARC summary, that is quite different from MARC21 one
# accepted form
foreach my $field ($record->field('2..')) {
- $heading.= $field->subfield('a');
+ $heading.= $field->as_string('abcdefghijlmnopqrstuvwxyz');
}
# rejected form(s)
foreach my $field ($record->field('3..')) {
foreach my $field ($record->field('4..')) {
if ($field->subfield('2')) {
my $thesaurus = "thes. : ".$thesaurus{"$field->subfield('2')"}." : ";
- $see.= '<span class="UF">'.$thesaurus.$field->subfield('a')."</span> -- \n";
+ $see.= '<span class="UF">'.$thesaurus.$field->as_string('abcdefghijlmnopqrstuvwxyz')."</span> -- \n";
}
}
# see :
foreach my $field ($record->field('5..')) {
if (($field->subfield('5')) && ($field->subfield('a')) && ($field->subfield('5') eq 'g')) {
- $broaderterms.= '<span class="BT"> <a href="detail.pl?authid='.$field->subfield('3').'">'.$field->subfield('a')."</a></span> -- \n";
- } elsif (($field->subfield('5')) && ($field->subfield('a')) && ($field->subfield('5') eq 'h')){
- $narrowerterms.= '<span class="NT"><a href="detail.pl?authid='.$field->subfield('3').'">'.$field->subfield('a')."</a></span> -- \n";
+ $broaderterms.= '<span class="BT"> '.$field->as_string('abcdefgjxyz')."</span> -- \n";
+ } elsif (($field->subfield('5')) && ($field->as_string) && ($field->subfield('5') eq 'h')){
+ $narrowerterms.= '<span class="NT">'.$field->as_string('abcdefgjxyz')."</span> -- \n";
} elsif ($field->subfield('a')) {
- $seealso.= '<span class="RT"><a href="detail.pl?authid='.$field->subfield('3').'">'.$field->subfield('a')."</a></span> -- \n";
+ $seealso.= '<span class="RT">'.$field->as_string('abcdefgxyz')."</a></span> -- \n";
}
}
# // form
=head2 BuildUnimarcHierarchies
-=over 4
+ $text= &BuildUnimarcHierarchies( $authid, $force)
-$text= &BuildUnimarcHierarchies( $authid, $force)
return text containing trees for hierarchies
for them to be stored in auth_header
Example of text:
122,1314,2452;1324,2342,3,2452
-=back
-
=cut
sub BuildUnimarcHierarchies{
=head2 BuildUnimarcHierarchy
-=over 4
+ $ref= &BuildUnimarcHierarchy( $record, $class,$authid)
-$ref= &BuildUnimarcHierarchy( $record, $class,$authid)
return a hashref in order to display hierarchy for record and final Authid $authid
"loopparents"
"ifchildren"
Those two latest ones should disappear soon.
-=back
-
=cut
sub BuildUnimarcHierarchy{
=head2 GetHeaderAuthority
-=over 4
+ $ref= &GetHeaderAuthority( $authid)
-$ref= &GetHeaderAuthority( $authid)
return a hashref in order auth_header table data
-=back
-
=cut
sub GetHeaderAuthority{
=head2 AddAuthorityTrees
-=over 4
+ $ref= &AddAuthorityTrees( $authid, $trees)
-$ref= &AddAuthorityTrees( $authid, $trees)
return success or failure
-=back
-
=cut
sub AddAuthorityTrees{
=head2 merge
-=over 4
-
-$ref= &merge(mergefrom,$MARCfrom,$mergeto,$MARCto)
-
+ $ref= &merge(mergefrom,$MARCfrom,$mergeto,$MARCto)
Could add some feature : Migrating from a typecode to an other for instance.
Then we should add some new parameter : bibliotargettag, authtargettag
-=back
-
=cut
sub merge {
=head2 get_auth_type_location
-=over 4
-
-my ($tag, $subfield) = get_auth_type_location($auth_type_code);
-
-=back
+ my ($tag, $subfield) = get_auth_type_location($auth_type_code);
Get the tag and subfield used to store the heading type
for indexing purposes. The C<$auth_type> parameter is
=head1 AUTHOR
-Koha Developement team <info@koha.org>
+Koha Development Team <info@koha.org>
Paul POULAIN paul.poulain@free.fr