Bugzilla – Attachment 152061 Details for
Bug 29522
Bib record not correctly updated when merging identical authorities with LinkerModule set to First Match
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 29522 - Bib record not correctly updated when merging identical authorities with LinkerModule set to First Match
Bug-29522---Bib-record-not-correctly-updated-when-.patch (text/plain), 4.80 KB, created by
Hammat wele
on 2023-06-06 17:43:37 UTC
(
hide
)
Description:
Bug 29522 - Bib record not correctly updated when merging identical authorities with LinkerModule set to First Match
Filename:
MIME Type:
Creator:
Hammat wele
Created:
2023-06-06 17:43:37 UTC
Size:
4.80 KB
patch
obsolete
>From 04c713f956f0533af11724fa160076906023961d Mon Sep 17 00:00:00 2001 >From: Hammat Wele <hammat.wele@inlibro.com> >Date: Tue, 6 Jun 2023 17:35:58 +0000 >Subject: [PATCH] Bug 29522 - Bib record not correctly updated when merging > identical authorities with LinkerModule set to First Match > >To test: > >Set system preferences > AutoCreateAuthorities = don't generate > RequireChoosingExistingAuthority = don't require > AutoLinkBiblios = Do > CatalogModuleRelink = Do > LinkerKeepStale = Don't > LinkerModule = first match > LinkerRelink = Do > >1. Create an authority record > 1.1. Go to Authorities > 1.2. Click on "New authority" and choose an authority type (I chose Corporate name)* > 1.3. Fill in the mandatory fields (000, 003, 005, 008, 040) > 1.4. In tab 1, click on the label of the main heading (110 for Corporate name) > 1.5. Fill in subfield > 1.6. Copy content of subfield > 1.7. Click on "Save" > 1.8. Note the authority record number > >2. Duplicate the authority record > 2.1. Click on "Edit" and choose "Edit as new (duplicate)" > 2.2. Click on "Save" > 2.3. Click on "No: Save as new authority" > 2.4. Note the authority record number (should be the number from step 1.8 +1) > >3. Link one of the authority records to a bibliographic record > 3.1 In another tab, do a catalog search > 3.2. Click on "Edit record" under one of the search results > 3.3. Go to the relevant tab (for corporate name, I used field 710 in tab 7) > 3.3.a. If there are no empty fields for that tag, click the "Repeat this tag" button (two rectangles) > 3.4. Paste the text previously copied in subfield > 3.5. Click on "Link authorities automatically" at the top of the page > 3.6. Note the authority record number in subfield > --> The linked authority record should be the first authority record (step 1.8) > 3.7. Click on "Save" > >4. Merge the two authority records, keep the one that is not linked to the bibliographic record > 4.1. Go back to the tab with the authorities > 4.1. Go to Authorities > 4.2. Search for the aurhorities previous created > 4.2. Click on "Actions" and choose "Merge" for both records > 4.3. Select the record number that is NOT linked to the bibliographic record > 4.4. Click on "Next" > 4.5. Click on "Merge" > >5. Check the bibliographic record > 5.1. Go back to the tab with the bibliographic record and refresh the page (Ctrl+F5) > 5.2. Hover the mouse cursor over the name or term, without clicking > 5.3. Note the record number that appears at the bottom of the screen > --> The record number was not changed >6. Apply the patch > 6.1. Run prove t/AuthoritiesMarc_MARC21.t > 6.2. Repeat Previous steps 1, 2, 3, 4, 5 > --> The record number is change >--- > C4/AuthoritiesMarc.pm | 39 ++++++++++++++++++++++++++++++++++++++- > 1 file changed, 38 insertions(+), 1 deletion(-) > >diff --git a/C4/AuthoritiesMarc.pm b/C4/AuthoritiesMarc.pm >index d21e7c059c..31d4653f16 100644 >--- a/C4/AuthoritiesMarc.pm >+++ b/C4/AuthoritiesMarc.pm >@@ -67,6 +67,7 @@ BEGIN { > > merge > FindDuplicateAuthority >+ isAuthorityDuplicated > > GuessAuthTypeCode > GuessAuthId >@@ -1162,6 +1163,35 @@ sub CompareFieldWithAuthority { > return 0; > } > >+=head2 isAuthorityDuplicated >+ >+ $match = &CompareFieldWithAuthority({ field => $field, authid => $authid }) >+ >+Takes a MARC::Field from a bibliographic record and an authid, and returns true if they match. >+ >+=cut >+ >+sub isAuthorityDuplicated { >+ my ($record,$record2,$authtypecode)=@_; >+ return 0 unless ($record && $record2); >+ >+ my $auth_tag_to_report = Koha::Authority::Types->find($authtypecode)->auth_tag_to_report; >+ my $filtervalues=qr([\001-\040\Q!'"`#$%&*+,-./:;<=>?@(){[}_|~\E\]]); >+ my $duplicate = 1; >+ if ($record->field($auth_tag_to_report)) { >+ foreach ($record->field($auth_tag_to_report)->subfields()) { >+ $_->[1]=~s/$filtervalues/ /g; >+ if ($_->[0]=~/[A-z]/ ){ >+ if($record2->field($auth_tag_to_report)->subfield($_->[0]) ne $_->[1]){ >+ $duplicate = 0; >+ last; >+ } >+ } >+ } >+ } >+return $duplicate; >+} >+ > =head2 BuildAuthHierarchies > > $text= &BuildAuthHierarchies( $authid, $force) >@@ -1569,7 +1599,14 @@ sub merge { > } > } > next if !$update; >- ModBiblio($marcrecord, $biblionumber, GetFrameworkCode($biblionumber)); >+ my $option = {}; >+ #Check if the record is duplicate >+ my $authtypecode = ""; >+ $authtypecode = $authtypeto->authtypecode if($authtypeto); >+ if(isAuthorityDuplicated($MARCfrom, $MARCto,$authtypecode) ){ >+ $option = { disable_autolink => 1 }; >+ } >+ ModBiblio($marcrecord, $biblionumber, GetFrameworkCode($biblionumber),$option); > $counteditedbiblio++; > } > return $counteditedbiblio; >-- >2.34.1
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 29522
:
152061
|
152062
|
155278
|
159837
|
161525
|
161526
|
163187
|
163188