[Koha-cvs] CVS: koha/C4 Biblio.pm,1.106,1.107

Paul POULAIN tipaul at users.sourceforge.net
Fri Nov 5 11:15:31 CET 2004


Update of /cvsroot/koha/koha/C4
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv12240/C4

Modified Files:
	Biblio.pm 
Log Message:
Improving FindDuplicate to find duplicate records on adding biblio

Index: Biblio.pm
===================================================================
RCS file: /cvsroot/koha/koha/C4/Biblio.pm,v
retrieving revision 1.106
retrieving revision 1.107
diff -C2 -r1.106 -r1.107
*** Biblio.pm	2 Nov 2004 16:44:45 -0000	1.106
--- Biblio.pm	5 Nov 2004 10:15:27 -0000	1.107
***************
*** 2534,2541 ****
  	my $dbh = C4::Context->dbh;
  	my $result = MARCmarc2koha($dbh,$record,'');
  	my $sth = $dbh->prepare("select biblio.biblionumber,bibid,title from biblio,biblioitems,marc_biblio where biblio.biblionumber=biblioitems.biblionumber and marc_biblio.biblionumber=biblioitems.biblionumber and isbn=?");
  	$sth->execute($result->{'isbn'});
  	my ($biblionumber,$bibid,$title) = $sth->fetchrow;
! 	return $biblionumber,$bibid,$title;
  }
  
--- 2534,2625 ----
  	my $dbh = C4::Context->dbh;
  	my $result = MARCmarc2koha($dbh,$record,'');
+ 	# search duplicate on ISBN, easy and fast...
  	my $sth = $dbh->prepare("select biblio.biblionumber,bibid,title from biblio,biblioitems,marc_biblio where biblio.biblionumber=biblioitems.biblionumber and marc_biblio.biblionumber=biblioitems.biblionumber and isbn=?");
  	$sth->execute($result->{'isbn'});
  	my ($biblionumber,$bibid,$title) = $sth->fetchrow;
! 	return $biblionumber,$bibid,$title if ($biblionumber);
! 	# a more complex search : build a request for SearchMarc::catalogsearch()
! 	my (@tags, @and_or, @excluding, @operator, @value, $offset,$length);
! 	# search on biblio.title
! 	my ($tag,$subfield) = MARCfind_marc_from_kohafield($dbh,"biblio.title","");
! 	if ($record->field($tag)) {
! 		if ($record->field($tag)->subfields($subfield)) {
! 			push @tags, "'".$tag.$subfield."'";
! 			push @and_or, "and";
! 			push @excluding, "";
! 			push @operator, "contains";
! 			push @value, $record->field($tag)->subfield($subfield);
! # 			warn "for title, I add $tag / $subfield".$record->field($tag)->subfield($subfield);
! 		}
! 	}
! 	# ... and on biblio.author
! 	($tag,$subfield) = MARCfind_marc_from_kohafield($dbh,"biblio.author","");
! 	if ($record->field($tag)) {
! 		if ($record->field($tag)->subfields($subfield)) {
! 			push @tags, "'".$tag.$subfield."'";
! 			push @and_or, "and";
! 			push @excluding, "";
! 			push @operator, "contains";
! 			push @value, $record->field($tag)->subfield($subfield);
! # 			warn "for author, I add $tag / $subfield".$record->field($tag)->subfield($subfield);
! 		}
! 	}
! 	# ... and on publicationyear.
! 	($tag,$subfield) = MARCfind_marc_from_kohafield($dbh,"biblioitems.publicationyear","");
! 	if ($record->field($tag)) {
! 		if ($record->field($tag)->subfields($subfield)) {
! 			push @tags, "'".$tag.$subfield."'";
! 			push @and_or, "and";
! 			push @excluding, "";
! 			push @operator, "contains";
! 			push @value, $record->field($tag)->subfield($subfield);
! # 			warn "for publicationyear, I add $tag / $subfield".$record->field($tag)->subfield($subfield);
! 		}
! 	}
! 	# ... and on size.
! 	($tag,$subfield) = MARCfind_marc_from_kohafield($dbh,"biblioitems.size","");
! 	if ($record->field($tag)) {
! 		if ($record->field($tag)->subfields($subfield)) {
! 			push @tags, "'".$tag.$subfield."'";
! 			push @and_or, "and";
! 			push @excluding, "";
! 			push @operator, "contains";
! 			push @value, $record->field($tag)->subfield($subfield);
! # 			warn "for size, I add $tag / $subfield".$record->field($tag)->subfield($subfield);
! 		}
! 	}
! 	# ... and on publisher.
! 	($tag,$subfield) = MARCfind_marc_from_kohafield($dbh,"biblioitems.publishercode","");
! 	if ($record->field($tag)) {
! 		if ($record->field($tag)->subfields($subfield)) {
! 			push @tags, "'".$tag.$subfield."'";
! 			push @and_or, "and";
! 			push @excluding, "";
! 			push @operator, "contains";
! 			push @value, $record->field($tag)->subfield($subfield);
! # 			warn "for publishercode, I add $tag / $subfield".$record->field($tag)->subfield($subfield);
! 		}
! 	}
! 	# ... and on volume.
! 	($tag,$subfield) = MARCfind_marc_from_kohafield($dbh,"biblioitems.volume","");
! 	if ($record->field($tag)) {
! 		if ($record->field($tag)->subfields($subfield)) {
! 			push @tags, "'".$tag.$subfield."'";
! 			push @and_or, "and";
! 			push @excluding, "";
! 			push @operator, "contains";
! 			push @value, $record->field($tag)->subfield($subfield);
! # 			warn "for volume, I add $tag / $subfield".$record->field($tag)->subfield($subfield);
! 		}
! 	}
! 
! 	my ($finalresult,$nbresult) = C4::SearchMarc::catalogsearch($dbh,\@tags,\@and_or,\@excluding,\@operator,\@value,0,10);
! 	# there is at least 1 result => return the 1st one
! 	if ($nbresult) {
! 		warn "$nbresult => ".@$finalresult[0]->{biblionumber},@$finalresult[0]->{bibid},@$finalresult[0]->{title};
! 		return @$finalresult[0]->{biblionumber},@$finalresult[0]->{bibid},@$finalresult[0]->{title};
! 	}
! 	# no result, returns nothing
! 	return;
  }
  
***************
*** 2554,2557 ****
--- 2638,2644 ----
  # $Id$
  # $Log$
+ # Revision 1.107  2004/11/05 10:15:27  tipaul
+ # Improving FindDuplicate to find duplicate records on adding biblio
+ #
  # Revision 1.106  2004/11/02 16:44:45  tipaul
  # new feature : checking for duplicate biblio.





More information about the Koha-cvs mailing list