[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Koha-cvs] CVS: koha/C4 Biblio.pm,1.122,1.123
From: |
Paul POULAIN |
Subject: |
[Koha-cvs] CVS: koha/C4 Biblio.pm,1.122,1.123 |
Date: |
Tue, 09 Aug 2005 07:11:07 -0700 |
Update of /cvsroot/koha/koha/C4
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv23879/C4
Modified Files:
Biblio.pm
Log Message:
1st commit to go to zebra.
don't update your cvs if you want to have a working head...
this commit contains :
* updater/updatedatabase : get rid with marc_* tables, but DON'T remove them.
As a lot of things uses them, it would not be a good idea for instance to drop
them. If you really want to play, you can rename them to test head without them
but being still able to reintroduce them...
* Biblio.pm : modify MARCgetbiblio to find the raw marc record in
biblioitems.marc field, not from marc_subfield_table, modify
MARCfindframeworkcode to find frameworkcode in biblio.frameworkcode, modify
some other subs to use biblio.biblionumber & get rid of bibid.
* other files : get rid of bibid and use biblionumber instead.
What is broken :
* does not do anything on zebra yet.
* if you rename marc_subfield_table, you can't search anymore.
* you can view a biblio & bibliodetails, go to MARC editor, but NOT save any
modif.
* don't try to add a biblio, it would add data poorly... (don't try to delete
either, it may work, but that would be a surprise ;-) )
IMPORTANT NOTE : you need MARC::XML package
(http://search.cpan.org/~esummers/MARC-XML-0.7/lib/MARC/File/XML.pm), that
requires a recent version of MARC::Record
Updatedatabase stores the iso2709 data in biblioitems.marc field & an xml
version in biblioitems.marcxml Not sure we will keep it when releasing the
stable version, but I think it's a good idea to have something readable in sql,
at least for development stage.
Index: Biblio.pm
===================================================================
RCS file: /cvsroot/koha/koha/C4/Biblio.pm,v
retrieving revision 1.122
retrieving revision 1.123
diff -C2 -r1.122 -r1.123
*** Biblio.pm 4 Aug 2005 13:27:48 -0000 1.122
--- Biblio.pm 9 Aug 2005 14:10:28 -0000 1.123
***************
*** 23,26 ****
--- 23,27 ----
use C4::Database;
use MARC::Record;
+ use MARC::File::USMARC;
use vars qw($VERSION @ISA @EXPORT);
***************
*** 478,566 ****
# Returns MARC::Record of the biblio passed in parameter.
! my ( $dbh, $bibid ) = @_;
! my $record = MARC::Record->new();
! # warn "". $bidid;
!
! my $sth =
! $dbh->prepare(
! "select
bibid,subfieldid,tag,tagorder,tag_indicator,subfieldcode,subfieldorder,subfieldvalue,valuebloblink
! from marc_subfield_table
! where bibid=? order by
tag,tagorder,subfieldorder
! "
! );
! my $sth2 =
! $dbh->prepare(
! "select subfieldvalue from marc_blob_subfield where blobidlink=?");
! $sth->execute($bibid);
! my $prevtagorder = 1;
! my $prevtag = 'XXX';
! my $previndicator;
! my $field; # for >=10 tags
! my $prevvalue; # for <10 tags
! while ( my $row = $sth->fetchrow_hashref ) {
!
! if ( $row->{'valuebloblink'} ) { #---- search blob if there is one
! $sth2->execute( $row->{'valuebloblink'} );
! my $row2 = $sth2->fetchrow_hashref;
! $sth2->finish;
! $row->{'subfieldvalue'} = $row2->{'subfieldvalue'};
! }
! if ( $row->{tagorder} ne $prevtagorder || $row->{tag} ne $prevtag ) {
! $previndicator .= " ";
! if ( $prevtag < 10 ) {
! if ($prevtag ne '000') {
! $record->add_fields( ( sprintf "%03s", $prevtag ),
$prevvalue ) unless $prevtag eq "XXX"; # ignore the 1st loop
! } else {
!
$record->leader(sprintf("%24s",$prevvalue));
! }
! }
! else {
! $record->add_fields($field) unless $prevtag eq "XXX";
! }
! undef $field;
! $prevtagorder = $row->{tagorder};
! $prevtag = $row->{tag};
! $previndicator = $row->{tag_indicator};
! if ( $row->{tag} < 10 ) {
! $prevvalue = $row->{subfieldvalue};
! }
! else {
! $field = MARC::Field->new(
! ( sprintf "%03s", $prevtag ),
! substr( $row->{tag_indicator} . ' ', 0, 1 ),
! substr( $row->{tag_indicator} . ' ', 1, 1 ),
! $row->{'subfieldcode'},
! $row->{'subfieldvalue'}
! );
! }
! }
! else {
! if ( $row->{tag} < 10 ) {
! $record->add_fields( ( sprintf "%03s", $row->{tag} ),
! $row->{'subfieldvalue'} );
! }
! else {
! $field->add_subfields( $row->{'subfieldcode'},
! $row->{'subfieldvalue'} );
! }
! $prevtag = $row->{tag};
! $previndicator = $row->{tag_indicator};
! }
! }
!
! # the last has not been included inside the loop... do it now !
! if ( $prevtag ne "XXX" )
! { # check that we have found something. Otherwise, prevtag is still XXX
and we
! # must return an empty record, not make MARC::Record fail because we
try to
! # create a record with XXX as field :-(
! if ( $prevtag < 10 ) {
! $record->add_fields( $prevtag, $prevvalue );
! }
! else {
!
! # my $field = MARC::Field->new( $prevtag, "", "",
%subfieldlist);
! $record->add_fields($field);
! }
! }
return $record;
}
--- 479,488 ----
# Returns MARC::Record of the biblio passed in parameter.
! my ( $dbh, $biblionumber ) = @_;
! my $sth = $dbh->prepare('select marc from biblioitems where
biblionumber=?');
! $sth->execute($biblionumber);
! my ($marc) = $sth->fetchrow;
! my $record = MARC::File::USMARC::decode($marc);
! warn "$biblionumber => $marc = ".$record->as_usmarc();
return $record;
}
***************
*** 837,844 ****
sub MARCfind_frameworkcode {
! my ( $dbh, $bibid ) = @_;
my $sth =
! $dbh->prepare("select frameworkcode from marc_biblio where bibid=?");
! $sth->execute($bibid);
my ($frameworkcode) = $sth->fetchrow;
return $frameworkcode;
--- 759,766 ----
sub MARCfind_frameworkcode {
! my ( $dbh, $biblionumber ) = @_;
my $sth =
! $dbh->prepare("select frameworkcode from biblio where biblionumber=?");
! $sth->execute($biblionumber);
my ($frameworkcode) = $sth->fetchrow;
return $frameworkcode;
***************
*** 2739,2742 ****
--- 2661,2682 ----
# $Id$
# $Log$
+ # Revision 1.123 2005/08/09 14:10:28 tipaul
+ # 1st commit to go to zebra.
+ # don't update your cvs if you want to have a working head...
+ #
+ # this commit contains :
+ # * updater/updatedatabase : get rid with marc_* tables, but DON'T remove
them. As a lot of things uses them, it would not be a good idea for instance to
drop them. If you really want to play, you can rename them to test head without
them but being still able to reintroduce them...
+ # * Biblio.pm : modify MARCgetbiblio to find the raw marc record in
biblioitems.marc field, not from marc_subfield_table, modify
MARCfindframeworkcode to find frameworkcode in biblio.frameworkcode, modify
some other subs to use biblio.biblionumber & get rid of bibid.
+ # * other files : get rid of bibid and use biblionumber instead.
+ #
+ # What is broken :
+ # * does not do anything on zebra yet.
+ # * if you rename marc_subfield_table, you can't search anymore.
+ # * you can view a biblio & bibliodetails, go to MARC editor, but NOT save
any modif.
+ # * don't try to add a biblio, it would add data poorly... (don't try to
delete either, it may work, but that would be a surprise ;-) )
+ #
+ # IMPORTANT NOTE : you need MARC::XML package
(http://search.cpan.org/~esummers/MARC-XML-0.7/lib/MARC/File/XML.pm), that
requires a recent version of MARC::Record
+ # Updatedatabase stores the iso2709 data in biblioitems.marc field & an xml
version in biblioitems.marcxml Not sure we will keep it when releasing the
stable version, but I think it's a good idea to have something readable in sql,
at least for development stage.
+ #
# Revision 1.122 2005/08/04 13:27:48 tipaul
# synch'ing 2.2 and head
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Koha-cvs] CVS: koha/C4 Biblio.pm,1.122,1.123,
Paul POULAIN <=
- Prev by Date:
[Koha-cvs] CVS: koha/koha-tmpl/intranet-tmpl/default/en/acqui.simple addbiblio.tmpl,1.38,1.39
- Next by Date:
[Koha-cvs] CVS: koha/acqui.simple addbiblio.pl,1.59,1.60 additem.pl,1.31,1.32
- Previous by thread:
[Koha-cvs] CVS: koha/koha-tmpl/intranet-tmpl/default/en/acqui.simple addbiblio.tmpl,1.38,1.39
- Next by thread:
[Koha-cvs] CVS: koha/acqui.simple addbiblio.pl,1.59,1.60 additem.pl,1.31,1.32
- Index(es):