X-Git-Url: http://git.equinoxoli.org/?p=migration-tools.git;a=blobdiff_plain;f=kmig.d%2Fbin%2Fmig-import;h=a7df5acb2855fb4c35f645266bf689725a18920f;hp=c76a791d852f139dec7ead32383deab672735931;hb=HEAD;hpb=8e1ccdc6e4084a3b037ec7bb2e114d75498c01c0 diff --git a/kmig.d/bin/mig-import b/kmig.d/bin/mig-import index c76a791..a7df5ac 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'; } @@ -102,7 +108,6 @@ foreach my $restore (@taglist) { if ($timestamp) { $restorefile = $MIGGITDIR . 'systempreferences' . '.' . $timestamp . '.xml'; } print "Restoring from $restorefile ... \n"; if ($restorefile) { restore_preferences($dbh,$restorefile); } - print "IMPORTANT : if you are changing system preferences you may need to run 'sudo systemctl restart memcached'\n\n"; } if ($restore eq 'reports') { my $timestamp = most_recent_single($MIGGITDIR,'reports'); @@ -118,6 +123,8 @@ foreach my $restore (@taglist) { } } +reset_memcache($MIGSCHEMA); + print "Done.\n"; foreach my $e (@errors) { print "$e\n"; } @@ -194,6 +201,21 @@ sub most_recent_single { return $max; } +sub reset_memcache { + my $instance = shift; + + my $aptcheck = `sudo dpkg -l | grep 'libmemcached-tools'`; + if (!defined $aptcheck or length($aptcheck) < 1) { + print "!!! !!! !!! WARNING WARNING WARNING: libmemcached-tools is not installed, removing keys will not be attempted\n"; + return; + } + + system("sudo memcdump --servers localhost | grep '$instance:' | grep 'syspref\|MarcStructure\|AuthorisedValues\|MarcSubfieldStructure' | xargs memcrm --servers localhost"); + system("sudo koha-plack --restart $instance"); + + return; +} + sub restore_authorisedvalues { my $dbh = shift; my $restore_file = shift; @@ -309,31 +331,18 @@ sub restore_budgets { my $dom = $parser->parse_file($restore_file); sql_noresult($dbh,"DELETE FROM aqbudgets WHERE 1 = 1"); - my $sth = $dbh->prepare($query); - $sth->execute(); - sql_noresult($dbh,"DELETE FROM aqbudgetperiods WHERE 1 = 1"); - $sth = $dbh->prepare($query); - $sth->execute(); my $budget_ai; my $budgetperiod_ai; - foreach my $node ($dom->findnodes('/document/budgets')) { $budget_ai = sql_num($node->findvalue('./autoincrement')); } - foreach my $node ($dom->findnodes('/document/budgetperiods')) { $budgetperiod_ai = sql_num($node->findvalue('./autoincrement')); } - - $query = "ALTER TABLE aqbudgets AUTO_INCREMENT = $budget_ai"; - $sth = $dbh->prepare($query); - $sth->execute(); - - $query = "ALTER TABLE aqbudgetperiods AUTO_INCREMENT = $budgetperiod_ai"; - $sth = $dbh->prepare($query); - $sth->execute(); + sql_noresult($dbh,"ALTER TABLE aqbudgets AUTO_INCREMENT = $budget_ai"); + sql_noresult($dbh,"ALTER TABLE aqbudgetperiods AUTO_INCREMENT = $budgetperiod_ai"); foreach my $node ($dom->findnodes('/document/budgetperiods/value')) { my $budget_period_id = sql_num($node->findvalue('./budget_period_id')); @@ -634,6 +643,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_transport_types (message_transport_type) VALUES ($message_transport_type)"); + } + + 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_transports (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; @@ -711,9 +763,7 @@ sub restore_reports { my $report_subgroup = sql_str($node->findvalue('./report_subgroup')); my $userid = sql_str($node->findvalue('./userid')); - $query = "SELECT borrowernumber FROM borrowers WHERE userid = $userid"; - $sth = $dbh->prepare($query); - $sth->execute(); + my $sth = sql_giveback($dbh,"SELECT borrowernumber FROM borrowers WHERE userid = $userid"); my @row = $sth->fetchrow_array; my $borrowernumber = sql_num($row[0]); @@ -759,8 +809,7 @@ sub sql_giveback { my $query = shift; my $sth = $dbh->prepare($query); $sth->execute(); - my @result = $sth->fetchrow_array; - return @result; + return $sth; } sub sql_noresult {