9 HOME MYSQL_HOST MYSQL_TCP_PORT MYSQL_USER MYSQL_DATABASE MYSQL_PW
10 MIGSCHEMA MIGBASEWORKDIR MIGBASEGITDIR MIGGITDIR MIGWORKDIR
12 use open ':encoding(utf8)';
17 use List::Util qw( min max );
18 my $mig_bin = "$FindBin::Bin/";
19 use lib "$FindBin::Bin/";
22 my $dbh = KMig::db_connect();
24 #to do check for array passed and if not present then use tags
27 my $arg_list_length = scalar @taglist;
28 if($arg_list_length < 1) { @taglist = ("preferences","libraries"); }
29 $MIGGITDIR =~ s/\/\//\//;
31 foreach my $restore (@taglist) {
33 if ($restore eq 'preferences') {
34 my $timestamp = most_recent_single($MIGGITDIR,'systempreferences');
35 $restorefile = $MIGGITDIR . 'systempreferences' . '.' . $timestamp . '.xml';
36 restore_preferences($dbh,$restorefile);
40 sub most_recent_single {
41 my $MGIGITDIR = shift;
45 opendir (DIR, $MIGGITDIR) or abort("could not open $MIGGITDIR");;
46 while (my $file = readdir(DIR)) {
47 if ($file =~ m/$str/) { push @files, $file; }
49 foreach my $file (@files) {
50 my @f = split /\./, $file;
59 sub restore_libraries {
61 my $restorefile = shift;
62 my $parser = XML::LibXML->new();
63 my $dom = $parser->parse_file($restore_file);
65 #with existant live data will probably need to put a truncate in here
67 foreach my $node ($dom->findnodes('//library')) {
68 my $id = $node->findvalue('./id');
69 my $parent_id = $node->findvalue('./parent_id');
70 my $branchcode = sql_str($node->findvalue('./branchcode'));
71 my $title = sql_str($node->findvalue('./title'));
72 my $descr = sql_str($node->findvalue('./description'));
73 my $ft1 = $node->findvalue('./ft_hide_patron_info');
74 my $ft2 = $node->findvalue('./ft_search_groups_opac');
75 my $ft3 = $node->findvalue('./ft_search_groups_staff');
76 my $sth = $dbh->prepare($query);
77 my $query = "INSERT INTO library_groups (id,parent_id,branchcode,title,description,ft_hide_patron_info,ft_search_groups_opac,ft_search_groups_staff) VALUES ($id,$parent_id,$branchcode,$title,$descr,$ft1,$ft2,$ft3)";
83 sub restore_preferences {
85 my $restore_file = shift;
86 my $parser = XML::LibXML->new();
87 my $dom = $parser->parse_file($restore_file);
89 foreach my $node ($dom->findnodes('//pref')) {
90 my $variable = sql_str($node->findvalue('./variable'));
91 my $value = sql_str($node->findvalue('./value'));
92 my $query = "UPDATE systempreferences SET value = $value WHERE variable = $variable";
93 my $sth = $dbh->prepare($query);
101 if (!defined $str or $str eq '') { return ''; }
103 $str = '\'' . $str . '\'';
109 print STDERR "$0: $msg", "\n";
117 mig import foo_a foo_b foo_c