From af2a497ce26bb8a35eab9f794e440aa98e480757 Mon Sep 17 00:00:00 2001 From: Rogan Hamby Date: Thu, 25 Jun 2020 17:38:56 -0400 Subject: [PATCH] teach mig-import to bring in message preferences --- kmig.d/bin/mig-import | 51 ++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 50 insertions(+), 1 deletions(-) diff --git a/kmig.d/bin/mig-import b/kmig.d/bin/mig-import index 95ddfa6..c308678 100755 --- a/kmig.d/bin/mig-import +++ b/kmig.d/bin/mig-import @@ -30,7 +30,7 @@ $mig_path =~ s|[^/]+$||; my @taglist = @ARGV; my $arg_list_length = scalar @taglist; -if($arg_list_length < 1) { @taglist = ("libraries","patrontypes","itemtypes","authorisedvalues","booksellers","borrowerattributes","budgets","calendar","circrules","letters","preferences","reports","smsproviders"); } +if($arg_list_length < 1) { @taglist = ("libraries","patrontypes","itemtypes","authorisedvalues","booksellers","borrowerattributes","budgets","calendar","circrules","letters","messages","preferences","reports","smsproviders"); } $MIGGITDIR =~ s/\/\//\//; my @errors; @@ -91,6 +91,12 @@ foreach my $restore (@taglist) { print "Restoring from $restorefile ... \n"; if ($restorefile) { restore_libraries($dbh,$restorefile); } } + if ($restore eq 'messages') { + my $timestamp = most_recent_single($MIGGITDIR,'messages'); + if ($timestamp) { $restorefile = $MIGGITDIR . 'messages' . '.' . $timestamp . '.xml'; } + print "Restoring from $restorefile ... \n"; + if ($restorefile) { restore_messages($dbh,$restorefile); } + } if ($restore eq 'patrontypes') { my $timestamp = most_recent_single($MIGGITDIR,'patrontypes'); if ($timestamp) { $restorefile = $MIGGITDIR . 'patrontypes' . '.' . $timestamp . '.xml'; } @@ -621,6 +627,49 @@ sub restore_libraries { return; } +sub restore_messages { + my $dbh = shift; + my $restore_file = shift; + my $parser = XML::LibXML->new(); + my $dom = $parser->parse_file($restore_file); + + sql_noresult($dbh,"DELETE FROM message_transports WHERE 1 = 1"); + sql_noresult($dbh,"DELETE FROM message_transport_types WHERE 1 = 1"); + sql_noresult($dbh,"DELETE FROM message_attributes WHERE 1 = 1"); + + my $attr_ai; + foreach my $node ($dom->findnodes('/document/message_attributes')) { + $attr_ai = sql_num($node->findvalue('./autoincrement')); + } + sql_noresult($dbh,"ALTER TABLE message_attributes AUTO_INCREMENT = $attr_ai"); + + foreach my $node ($dom->findnodes('/document/message_attributes/value')) { + my $message_attribute_id = sql_num($node->findvalue('./message_attribute_id')); + my $message_name = sql_num($node->findvalue('./message_name')); + my $takes_days = sql_num($node->findvalue('./takes_days')); + sql_noresult($dbh,"INSERT INTO message_attributes (message_attribute_id,message_name,takes_days) VALUES ($message_attribute_id,$message_name,$takes_days)"); + } + + foreach my $node ($dom->findnodes('/document/message_transport_types/value')) { + my $message_transport_type = sql_num($node->findvalue('./message_attribute_id')); + sql_noresult($dbh,"INSERT INTO message_attributes (message_attribute_id,message_name,takes_days) VALUES ($message_attribute_id,$message_name,$takes_days)"); + } + + foreach my $node ($dom->findnodes('/document/message_transports/value')) { + my $message_attribute_id = sql_num($node->findvalue('./message_attribute_id')); + my $message_transport_type = sql_num($node->findvalue('./message_transport_type')); + my $is_digest = sql_num($node->findvalue('./is_digest')); + my $letter_module = sql_num($node->findvalue('./letter_module')); + my $letter_code = sql_num($node->findvalue('./letter_code')); + my $branchcode = sql_num($node->findvalue('./branchcode')); + sql_noresult($dbh,"INSERT INTO message_attributes (message_attribute_id,message_transport_type,is_digest,letter_module,letter_code,branchcode) VALUES ($message_attribute_id,$message_transport_type,$is_digest,$letter_module,$letter_code,$branchcode)"); + } + + return; +} + + + sub restore_patrontypes { my $dbh = shift; my $restorefile = shift; -- 1.7.2.5