From 741cd2fc924b5eea69934b888c7403795d62c050 Mon Sep 17 00:00:00 2001 From: Rogan Hamby Date: Wed, 10 Jun 2020 13:41:47 -0400 Subject: [PATCH] adding better category support to authorised values import/export in kmig --- kmig.d/bin/mig-export | 15 +++++++++++++++ kmig.d/bin/mig-import | 13 ++++++++++++- 2 files changed, 27 insertions(+), 1 deletions(-) diff --git a/kmig.d/bin/mig-export b/kmig.d/bin/mig-export index 314830c..2920514 100755 --- a/kmig.d/bin/mig-export +++ b/kmig.d/bin/mig-export @@ -103,6 +103,8 @@ sub backup_authorisedvalues { open(my $fh, '>', $backupfile) or die "Could not open $backupfile!"; my $xml = XML::Writer->new(OUTPUT => $fh, DATA_MODE => 1, DATA_INDENT => 2, ); $xml->xmlDecl('UTF-8'); + $xml->startTag('document'); + $xml->startTag('authorisedvalues'); my $query = "SELECT category,authorised_value,lib,lib_opac,imageurl FROM authorised_values WHERE category != 'ITEMTYPECAT'"; my $sth = $dbh->prepare($query); @@ -117,6 +119,19 @@ sub backup_authorisedvalues { $xml->endTag('value'); } $xml->endTag('authorisedvalues'); + + $xml->startTag('categories'); + $query = "SELECT category_name FROM authorised_value_categories WHERE category_name != 'ITEMTYPECAT'"; + $sth = $dbh->prepare($query); + $sth->execute(); + while (my @row = $sth->fetchrow_array) { + $xml->startTag('value'); + $xml->dataElement('name', $row[0]); + $xml->endTag('value'); + } + $xml->endTag('categories'); + + $xml->endTag('document'); $xml->end(); close $fh; return; diff --git a/kmig.d/bin/mig-import b/kmig.d/bin/mig-import index e94e5d0..ef1aa7e 100755 --- a/kmig.d/bin/mig-import +++ b/kmig.d/bin/mig-import @@ -140,7 +140,18 @@ sub restore_authorisedvalues { my $sth = $dbh->prepare($query); $sth->execute(); - foreach my $node ($dom->findnodes('//value')) { + $query = "DELETE FROM authorised_value_categories WHERE category_name != 'ITEMTYPECAT'"; + $sth = $dbh->prepare($query); + $sth->execute(); + + foreach my $node ($dom->findnodes('/document/categories/value')) { + my $name = sql_str_not_null($node->findvalue('./name')); + $query = "INSERT INTO authorised_value_categories (category_name) VALUES ($name)"; + $sth = $dbh->prepare($query); + $sth->execute(); + } + + foreach my $node ($dom->findnodes('/document/authorisedvalues/value')) { my $category = sql_str($node->findvalue('./category')); my $authorised_value = sql_str($node->findvalue('./authorised_value')); my $lib = sql_str($node->findvalue('./lib')); -- 1.7.2.5