teach mig-import to bring in message preferences
[migration-tools.git] / kmig.d / bin / mig-import
index c76a791..c308678 100755 (executable)
@@ -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'; }
@@ -309,31 +315,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 +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;