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;
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'; }
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');
}
}
+reset_memcache($MIGSCHEMA);
+
print "Done.\n";
foreach my $e (@errors) { print "$e\n"; }
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;
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'));
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;
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]);
my $query = shift;
my $sth = $dbh->prepare($query);
$sth->execute();
- my @result = $sth->fetchrow_array;
- return @result;
+ return $sth;
}
sub sql_noresult {