[Koha-cvs] CVS: koha/C4 Biblio.pm,1.122,1.123

Paul POULAIN tipaul at users.sourceforge.net
Tue Aug 9 16:11:07 CEST 2005


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





More information about the Koha-cvs mailing list