&MARCgetbiblio &MARCgetitem
&MARCaddword &MARCdelword
&char_decode
+
+ &FindDuplicate
);
#
$sth2=$dbh->prepare("SHOW COLUMNS from items");
$sth2->execute;
while (($field)=$sth2->fetchrow) {
-# warn "X";
$result=&MARCmarc2kohaOneField($sth,"items",$field,$record,$result,$frameworkcode);
}
# additional authors : specific
return ($string);
}
+sub FindDuplicate {
+ my ($record)=@_;
+ 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;
+}
+
END { } # module clean-up code here (global destructor)
=back
# $Id$
# $Log$
+# Revision 1.106 2004/11/02 16:44:45 tipaul
+# new feature : checking for duplicate biblio.
+#
+# For instance, it's only done on ISBN only. Will be improved soon.
+#
+# When a duplicate is detected, the biblio is not saved, but the user is asked for a confirmations.
+#
# Revision 1.105 2004/09/23 16:15:37 tipaul
# indenting diff
#
$indicators{$ind_tag[$i]} = $indicator[$i];
}
my $record = MARChtml2marc($dbh,\@tags,\@subfields,\@values,%indicators);
-# MARC::Record built => now, record in DB
- my $oldbibnum;
- my $oldbibitemnum;
- if ($is_a_modif) {
- NEWmodbiblio($dbh,$record,$bibid,$frameworkcode);
+ # check for a duplicate
+ my ($duplicatebiblionumber,$duplicatebibid,$duplicatetitle) = FindDuplicate($record) if ($op eq "addbiblio") && (!$is_a_modif);
+ my $confirm_not_duplicate = $input->param('confirm_not_duplicate');
+ # it is not a duplicate (determined either by Koha itself or by user checking it's not a duplicate)
+ if (!$duplicatebiblionumber or $confirm_not_duplicate) {
+ # MARC::Record built => now, record in DB
+ my $oldbibnum;
+ my $oldbibitemnum;
+ if ($is_a_modif) {
+ NEWmodbiblio($dbh,$record,$bibid,$frameworkcode);
+ } else {
+ ($bibid,$oldbibnum,$oldbibitemnum) = NEWnewbiblio($dbh,$record,$frameworkcode);
+ }
+ # now, redirect to additem page
+ print $input->redirect("additem.pl?bibid=$bibid&frameworkcode=$frameworkcode");
+ exit;
} else {
- ($bibid,$oldbibnum,$oldbibitemnum) = NEWnewbiblio($dbh,$record,$frameworkcode);
+ # it may be a duplicate, warn the user and do nothing
+ build_tabs ($template, $record, $dbh,$encoding);
+ build_hidden_data;
+ $template->param(
+ oldbiblionumber => $oldbiblionumber,
+ bibid => $bibid,
+ oldbiblionumtagfield => $oldbiblionumtagfield,
+ oldbiblionumtagsubfield => $oldbiblionumtagsubfield,
+ oldbiblioitemnumtagfield => $oldbiblioitemnumtagfield,
+ oldbiblioitemnumtagsubfield => $oldbiblioitemnumtagsubfield,
+ oldbiblioitemnumber => $oldbiblioitemnumber,
+ duplicatebiblionumber => $duplicatebiblionumber,
+ duplicatebibid => $duplicatebibid,
+ duplicatetitle => $duplicatetitle,
+ );
}
-# now, redirect to additem page
- print $input->redirect("additem.pl?bibid=$bibid&frameworkcode=$frameworkcode");
- exit;
#------------------------------------------------------------------------------------------------------------------------------
} elsif ($op eq "addfield") {
#------------------------------------------------------------------------------------------------------------------------------
$start=$i if ($end>0 && $tags[$i] eq $addedfield);
last if ($end>0 && $tags[$i] ne $addedfield);
}
- warn "ST : $addedfield => $start / $end";
# add an empty line in all arrays. This forces a new field in MARC::Record.
splice(@tags,$end+1,0,'');
splice(@subfields,$end+1,0,'');
$indicators{$ind_tag[$i]} = $indicator[$i];
}
my $record = MARChtml2marc($dbh,\@tags,\@subfields,\@values,%indicators);
- warn "R=>".$record->as_formatted;
build_tabs ($template, $record, $dbh,$encoding);
build_hidden_data;
$template->param(
oldbiblionumtagsubfield => $oldbiblionumtagsubfield,
oldbiblioitemnumtagfield => $oldbiblioitemnumtagfield,
oldbiblioitemnumtagsubfield => $oldbiblioitemnumtagsubfield,
- oldbiblioitemnumber => $oldbiblioitemnumber );
+ oldbiblioitemnumber => $oldbiblioitemnumber,
+ );
}
$template->param(
frameworkcode => $frameworkcode,