Bugzilla – Attachment 66710 Details for
Bug 18811
Visibility settings inconsistent between framework and authority editor
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 18811: Add a script for checking authority data in hidden fields
Bug-18811-Add-a-script-for-checking-authority-data.patch (text/plain), 4.73 KB, created by
Nick Clemens (kidclamp)
on 2017-09-01 11:19:40 UTC
(
hide
)
Description:
Bug 18811: Add a script for checking authority data in hidden fields
Filename:
MIME Type:
Creator:
Nick Clemens (kidclamp)
Created:
2017-09-01 11:19:40 UTC
Size:
4.73 KB
patch
obsolete
>From 32fa53f717b7e707d8eaea02bab2f3b4e22d8336 Mon Sep 17 00:00:00 2001 >From: Marcel de Rooy <m.de.rooy@rijksmuseum.nl> >Date: Thu, 22 Jun 2017 15:39:41 +0200 >Subject: [PATCH] Bug 18811: Add a script for checking authority data in hidden > fields > >If you edit an authority record while having data in hidden fields or >subfields, that data will be lost now. >This script can help you to unhide some fields and prevent data loss. > >Test plan: >[1] Add a PERSO_NAME record. Fill e.g. 100b. >[2] Hide 100b in the PERSO_NAME framework. >[3] Run auth_show_hidden_data.pl and verify that it reports 100b in > the PERSO_NAME framework. > >Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl> > >Signed-off-by: Josef Moravec <josef.moravec@gmail.com> > >Signed-off-by: Nick Clemens <nick@bywatersolutions.com> >--- > misc/maintenance/auth_show_hidden_data.pl | 124 ++++++++++++++++++++++++++++++ > 1 file changed, 124 insertions(+) > create mode 100755 misc/maintenance/auth_show_hidden_data.pl > >diff --git a/misc/maintenance/auth_show_hidden_data.pl b/misc/maintenance/auth_show_hidden_data.pl >new file mode 100755 >index 0000000..7f17945 >--- /dev/null >+++ b/misc/maintenance/auth_show_hidden_data.pl >@@ -0,0 +1,124 @@ >+#!/usr/bin/perl >+ >+# Copyright 2017 Rijksmuseum >+# >+# This file is part of Koha. >+# >+# Koha is free software; you can redistribute it and/or modify it >+# under the terms of the GNU General Public License as published by >+# the Free Software Foundation; either version 3 of the License, or >+# (at your option) any later version. >+# >+# Koha is distributed in the hope that it will be useful, but >+# WITHOUT ANY WARRANTY; without even the implied warranty of >+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the >+# GNU General Public License for more details. >+# >+# You should have received a copy of the GNU General Public License >+# along with Koha; if not, see <http://www.gnu.org/licenses>. >+ >+ >+# This script walks through your authority marc records and tells you >+# which hidden fields in the framework still contain data. >+ >+use Modern::Perl; >+use Getopt::Long; >+use Pod::Usage; >+ >+use Koha::Authorities; >+use Koha::Authority::Subfields; >+use Koha::MetadataRecord::Authority; >+ >+my ( $max, $help, $confirm ); >+GetOptions( 'confirm' => \$confirm, 'help' => \$help, 'max' => \$max ); >+if ( !$confirm || $help ) { >+ pod2usage( -verbose => 2 ); >+ exit; >+} >+ >+our $hidden_fields = Koha::Authority::Subfields->search( >+ { hidden => { '!=' => 0 }}, >+); >+our $results = {}; >+ >+my $auths = Koha::Authorities->search( {}, { order_by => 'authid' } ); >+my $count = 0; >+while( my $record = $auths->next ) { >+ last if $max && $count >= $max; >+ scan_record( $record ); >+ $count++; >+} >+report_results(); >+ >+sub scan_record { >+ my ( $record ) = @_; >+ my $id = $record->authid; >+ my $type = $record->authtypecode; >+ my $marc = Koha::MetadataRecord::Authority->get_from_authid($id)->record; >+ foreach my $fld ( $marc->fields ) { # does not include leader >+ my @subfields = $fld->is_control_field >+ ? '@' >+ : map { $_->[0] } $fld->subfields; >+ foreach my $sub ( @subfields ) { >+ next if $results->{ $type } && $results->{ $type }->{ $fld->tag } && $results->{ $type }->{ $fld->tag }->{ $sub }; >+ if( $hidden_fields->find($type, $fld->tag, $sub) ) { >+ $results->{ $type }->{ $fld->tag }->{ $sub } = 1; >+ } >+ } >+ } >+ # To be overcomplete, check the leader too :) >+ if( $marc->leader ) { >+ if( $hidden_fields->find($type, '000', '@') ) { >+ $results->{ $type }->{ '000' }->{ '@' } = 1; >+ } >+ } >+} >+ >+sub report_results { >+ my $cnt = 0; >+ foreach my $fw ( sort keys %$results ) { >+ foreach my $tag ( sort keys %{$results->{$fw}} ) { >+ foreach my $sub ( sort keys %{$results->{$fw}->{$tag}} ) { >+ print "\nFramework ".($fw||'Default').", $tag, $sub contains data but is hidden"; >+ $cnt++; >+ } >+ } >+ } >+ if( $cnt ) { >+ print "\n\nNOTE: You should consider removing the hidden attribute of these framework fields in order to not lose data in those fields when editing authority records.\n"; >+ } else { >+ print "\nNo hidden (sub)fields containing data were found!\n"; >+ } >+} >+ >+=head1 NAME >+ >+auth_show_hidden_data.pl >+ >+=head1 SYNOPSIS >+ >+auth_show_hidden_data.pl -c -max 1000 >+ >+=head1 DESCRIPTION >+ >+This script tells you if you have authority data in hidden (sub)fields. That >+data will be lost when editing such authority records. >+ >+=over 8 >+ >+=item B<-confirm> >+ >+Confirm flag. Required to start checking authority records. >+ >+=item B<-help> >+ >+Usage statement >+ >+=item B<-max> >+ >+This optional parameter tells the script to stop after the specified number of >+records. >+ >+=back >+ >+=cut >-- >2.1.4
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 18811
:
64314
|
64541
|
64542
|
64570
|
64571
|
64572
|
64573
|
66309
|
66310
|
66311
|
66312
|
66708
|
66709
| 66710 |
66711
|
66793
|
66794
|
70614