[Koha-cvs] koha/C4 Biblio.pm [rel_2_2]

Ryan Higgins rch at liblime.com
Wed Apr 25 08:05:30 CEST 2007


CVSROOT:	/sources/koha
Module name:	koha
Branch:		rel_2_2
Changes by:	Ryan Higgins <rych>	07/04/25 06:05:29

Modified files:
	C4             : Biblio.pm 

Log message:
	Item tagorder bug revisited: had been merging items due to repeating tagorder
	when called from addbiblio.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/koha/C4/Biblio.pm?cvsroot=koha&only_with_tag=rel_2_2&r1=1.115.2.68&r2=1.115.2.69

Patches:
Index: Biblio.pm
===================================================================
RCS file: /sources/koha/koha/C4/Biblio.pm,v
retrieving revision 1.115.2.68
retrieving revision 1.115.2.69
diff -u -b -r1.115.2.68 -r1.115.2.69
--- Biblio.pm	17 Apr 2007 19:40:10 -0000	1.115.2.68
+++ Biblio.pm	25 Apr 2007 06:05:29 -0000	1.115.2.69
@@ -26,7 +26,7 @@
 use vars qw($VERSION @ISA @EXPORT);
 
 # set the version for version checking
-$VERSION = do { my @v = '$Revision: 1.115.2.68 $' =~ /\d+/g;
+$VERSION = do { my @v = '$Revision: 1.115.2.69 $' =~ /\d+/g;
                     shift(@v) . "." . join("_", map {sprintf "%03d", $_ } @v); };
 
 @ISA = qw(Exporter);
@@ -344,8 +344,26 @@
         ($bibid) = $sth->fetchrow;
         $sth->finish;
     }
-    my $fieldcount = 1;
+    #shift the items' tagorders for this biblio so we don't overwrite item tags with biblio tags..
+    my $sth = $dbh->prepare("SELECT tagfield FROM marc_subfield_structure WHERE kohafield LIKE 'items.%'");
+    $sth->execute;
+    my $itemtag = $sth->fetchrow_hashref->{tagfield};
+	my $save_items_sth = $dbh->prepare("SELECT subfieldid, tagorder FROM marc_subfield_table WHERE bibid=? AND tag=? ORDER BY tagorder");
+    	my $updatesth = $dbh->prepare("UPDATE marc_subfield_table SET tagorder=? WHERE subfieldid=?");
+	my $fieldcount = (scalar @fields) + 1 ;
+	my $itemtagorder = 0;
+    $save_items_sth->execute($bibid,$itemtag);
+    # for every item, update the tagorder
+    while (my ($subfieldid,$tagorder) = ($save_items_sth->fetchrow_array())) {
+        if ($tagorder != $itemtagorder) {
+		$fieldcount++;
+		$itemtagorder = $tagorder;
+		}
+        $updatesth->execute($fieldcount,$subfieldid);
+    }
 
+	#done moving item tagorders - now write the biblio tags.
+	$fieldcount = 1;
     # save leader first
     &MARCaddsubfield($dbh,$bibid,'000','',$fieldcount,'',1,$record->leader);
 
@@ -381,21 +399,6 @@
     }
 
     $dbh->do("UNLOCK TABLES");
-    # now we need to reorder the tagorder in marc_subfield_table for items data
-    #search item field code
-    my $sth = $dbh->prepare("SELECT tagfield FROM marc_subfield_structure WHERE kohafield LIKE 'items.%'");
-    $sth->execute;
-    my $itemtag = $sth->fetchrow_hashref->{tagfield};
-    my $newsth = $dbh->prepare("SELECT distinct(tagorder) FROM marc_subfield_table WHERE bibid=$bibid AND tag=$itemtag ORDER BY tagorder");
-    my $updatesth = $dbh->prepare("UPDATE marc_subfield_table SET tagorder=? WHERE tagorder=? AND bibid=? AND tag=?");
-
-    $newsth->execute();
-
-    # for every item, update the tagorder
-    for my $tagorder ($newsth->fetchrow_array()) {
-        $fieldcount++;
-        $updatesth->execute($fieldcount,$tagorder,$bibid,$itemtag);
-    }
 
     return $bibid;
 }
@@ -3031,8 +3034,12 @@
 
 =cut
 
-# $Id: Biblio.pm,v 1.115.2.68 2007/04/17 19:40:10 rych Exp $
+# $Id: Biblio.pm,v 1.115.2.69 2007/04/25 06:05:29 rych Exp $
 # $Log: Biblio.pm,v $
+# Revision 1.115.2.69  2007/04/25 06:05:29  rych
+# Item tagorder bug revisited: had been merging items due to repeating tagorder
+# when called from addbiblio.
+#
 # Revision 1.115.2.68  2007/04/17 19:40:10  rych
 # table lock problem on previous bugfix (reordering items in marc_subfield)
 #





More information about the Koha-cvs mailing list