Bugzilla – Attachment 4738 Details for
Bug 6094
Fixing ModAuthority problems
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch
patch.txt (text/plain), 5.45 KB, created by
Marcel de Rooy
on 2011-07-25 11:16:53 UTC
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Marcel de Rooy
Created:
2011-07-25 11:16:53 UTC
Size:
5.45 KB
patch
obsolete
>From 29c1be49acdb7756b38802d7516b994ffc8391e5 Mon Sep 17 00:00:00 2001 >From: Marcel de Rooy <m.de.rooy@rijksmuseum.nl> >Date: Thu, 7 Apr 2011 10:14:08 +0200 >Subject: [PATCH] 6094 Fixing ModAuthority problems >Content-Type: text/plain; charset="utf-8" > >Pref MergeAuthoritiesOnUpdate does not exist; should be dontmerge. >In: C4/AuthoritiesMarc.pm > >Instead of folder modified_authorities, now introducing a table for this purpose: need_merge_authorities. This eliminates several permissions and security issues. This change applies to AuthoritiesMarc.pm and merge_authority.pl. > >POD lines added for ModAuthority. Deprecated parameter $merge removed. > >Commented the line destroying the Zconn object in merge(). This made the second call to merge crash. > >July 25, 2011: Adjusted. Test this patch by applying the db revision first from the corresponding dbrev patch. >--- > C4/AuthoritiesMarc.pm | 37 ++++++++++++++++-------------- > misc/migration_tools/merge_authority.pl | 19 ++++++---------- > 2 files changed, 27 insertions(+), 29 deletions(-) > >diff --git a/C4/AuthoritiesMarc.pm b/C4/AuthoritiesMarc.pm >index fa2ef00..a5a5a6e 100644 >--- a/C4/AuthoritiesMarc.pm >+++ b/C4/AuthoritiesMarc.pm >@@ -734,30 +734,33 @@ sub DelAuthority { > $sth->execute($authid); > } > >+=head2 ModAuthority >+ >+ $authid= &ModAuthority($authid,$record,$authtypecode) >+ >+Modifies authority record, optionally updates attached biblios. >+ >+=cut >+ > sub ModAuthority { >- my ($authid,$record,$authtypecode,$merge)=@_; >+ my ($authid,$record,$authtypecode)=@_; # deprecated $merge parameter removed >+ > my $dbh=C4::Context->dbh; > #Now rewrite the $record to table with an add > my $oldrecord=GetAuthority($authid); > $authid=AddAuthority($record,$authid,$authtypecode); > >-### If a library thinks that updating all biblios is a long process and wishes to leave that to a cron job to use merge_authotities.p >-### they should have a system preference "dontmerge=1" otherwise by default biblios will be updated >-### the $merge flag is now depreceated and will be removed at code cleaning >- if (C4::Context->preference('MergeAuthoritiesOnUpdate') ){ >+ # If a library thinks that updating all biblios is a long process and wishes >+ # to leave that to a cron job, use misc/migration_tools/merge_authority.pl. >+ # In that case set system preference "dontmerge" to 1. Otherwise biblios will >+ # be updated. >+ unless(C4::Context->preference('dontmerge') eq '1'){ > &merge($authid,$oldrecord,$authid,$record); > } else { >- # save the file in tmp/modified_authorities >- my $cgidir = C4::Context->intranetdir ."/cgi-bin"; >- unless (opendir(DIR,"$cgidir")) { >- $cgidir = C4::Context->intranetdir."/"; >- closedir(DIR); >- } >- >- my $filename = $cgidir."/tmp/modified_authorities/$authid.authid"; >- open AUTH, "> $filename"; >- print AUTH $authid; >- close AUTH; >+ # save a record in need_merge_authorities table >+ my $sqlinsert="INSERT INTO need_merge_authorities (authid, done) ". >+ "VALUES (?,?)"; >+ $dbh->do($sqlinsert,undef,($authid,0)); > } > logaction( "AUTHORITIES", "MODIFY", $authid, "BEFORE=>" . $oldrecord->as_formatted ) if C4::Context->preference("AuthoritiesLog"); > return $authid; >@@ -1323,7 +1326,7 @@ sub merge { > push @reccache, $marcdata; > $z++; > } >- $oConnection->destroy(); >+ #$oConnection->destroy(); #see Bugzilla 6094 Uncommenting this line makes that the second subsequent call of merge crashes on the Zconn call line little before this line > } > #warn scalar(@reccache)." biblios to update"; > # Get All candidate Tags for the change >diff --git a/misc/migration_tools/merge_authority.pl b/misc/migration_tools/merge_authority.pl >index b99591f..9ee0da7 100755 >--- a/misc/migration_tools/merge_authority.pl >+++ b/misc/migration_tools/merge_authority.pl >@@ -44,6 +44,7 @@ SAMPLE : > ./merge_authority.pl -f 2457 -t 531 > > Before doing anything, the script will show both authorities and ask for confirmation. Of course, you can merge only 2 authorities of the same kind. >+Make sure that if this script runs in batch mode, the process has sufficient permissions for removing files from /var/tmp/modified_authorities. > EOF > ;# > die; >@@ -75,23 +76,17 @@ unless ($noconfirm || $batch) { > my $starttime = gettimeofday; > print "Merging\n" unless $noconfirm; > if ($batch) { >- my @authlist; >- my $cgidir = C4::Context->intranetdir ."/cgi-bin"; >- unless (opendir(DIR, "$cgidir/tmp/modified_authorities")) { >- $cgidir = C4::Context->intranetdir; >- opendir(DIR, "$cgidir/tmp/modified_authorities") || die "can't opendir $cgidir/tmp/modified_authorities: $!"; >- } >- while (my $authid = readdir(DIR)) { >- if ($authid =~ /\.authid$/) { >- $authid =~ s/\.authid$//; >+ my $authref; >+ $dbh->do("update need_merge_authorities set done=2 where done=0"); #temporary status 2 means: selected for merge >+ $authref=$dbh->selectall_arrayref("select distinct authid from need_merge_authorities where done=2"); >+ foreach(@$authref) { >+ my $authid=$_->[0]; > print "managing $authid\n" if $verbose; > my $MARCauth = GetAuthority($authid) ; > next unless ($MARCauth); > merge($authid,$MARCauth,$authid,$MARCauth) if ($MARCauth); >- unlink $cgidir.'/tmp/modified_authorities/'.$authid.'.authid'; >- } > } >- closedir DIR; >+ $dbh->do("update need_merge_authorities set done=1 where done=2"); #DONE > } else { > my $MARCfrom = GetAuthority($mergefrom); > my $MARCto = GetAuthority($mergeto); >-- >1.6.0.6 >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 6094
:
3767
|
4733
|
4737
|
4738
|
4739
|
4833
|
5951
|
5975
|
5977
|
5979
|
6005