829ffe07a25c28a47d2ddd0cc1f9fcf5b2b89b45
[migration-tools.git] / kmig.d / bin / mig-export
1 #!/usr/bin/perl
2
3 use strict;
4 use warnings;
5
6 use DBI;
7 use Data::Dumper;
8 use Env qw(
9     HOME MYSQL_HOST MYSQL_TCP_PORT MYSQL_USER MYSQL_DATABASE MYSQL_PW
10         MIGSCHEMA MIGBASEWORKDIR MIGBASEGITDIR MIGGITDIR MIGWORKDIR
11 );
12 use open ':encoding(utf8)';
13 use Cwd 'abs_path';
14 use Cwd qw(getcwd);
15 use FindBin;
16 my $mig_bin = "$FindBin::Bin/";
17 use lib "$FindBin::Bin/";
18 use KMig;
19
20 my $dbh = KMig::db_connect();
21
22 #to do check for array passed and if not present then use tags 
23
24 my @taglist = @ARGV;
25 my $arg_list_length = scalar @taglist;
26 if($arg_list_length < 1) { @taglist = ("preferences","authorisedvalues","libraries","borrowerattributes"); } 
27
28 my $timestamp = create_timestamp();
29
30 foreach my $backup (@taglist) {
31     my $backupfile;
32     if ($backup eq 'preferences') {
33         $backupfile = $MIGGITDIR . 'systempreferences' . '.' . $timestamp . '.csv';
34         backup_preferences($dbh,$backupfile);
35     }
36     if ($backup eq 'authorisedvalues') {
37         $backupfile = $MIGGITDIR . 'authorised_values' . '.' . $timestamp . '.csv';
38         backup_authorised_values($dbh,$backupfile);
39         $backupfile = $MIGGITDIR . 'authorised_value_categories' . '.' . $timestamp . '.csv';
40         backup_authorised_value_categories($dbh,$backupfile);
41     }
42     if ($backup eq 'borrowerattributes') {
43         $backupfile = $MIGGITDIR . 'borrower_attribute_types' . '.' . $timestamp . '.csv';
44         backup_borrower_attribute_types($dbh,$backupfile);
45         $backupfile = $MIGGITDIR . 'authorised_values_by_bat' . '.' . $timestamp . '.csv';
46         backup_authorised_values_by_bat($dbh,$backupfile);
47         $backupfile = $MIGGITDIR . 'authorised_value_categories_by_bat' . '.' . $timestamp . '.csv';
48         backup_authorised_value_categories_by_bat($dbh,$backupfile);
49     }
50     if ($backup eq 'libraries') {
51         $backupfile = $MIGGITDIR . 'libraries' . '.' . $timestamp . '.csv';
52         backup_libraries($dbh,$backupfile);
53     }
54 }
55
56 sub backup_authorised_values {
57     my $dbh = shift;
58     my $backupfile = shift;
59
60     open(my $fh, '>', $backupfile) or die "Could not open $backupfile!";
61     print $fh "category,authorised_value,lib,lib_opac,imageurl\n";
62     my $query = "SELECT category,authorised_value,lib,lib_opac,imageurl FROM authorised_values";
63     my $sth = $dbh->prepare($query);
64     $sth->execute();
65
66     while (my @row = $sth->fetchrow_array) {
67         my $category = csvify_str($row[0]);
68         my $authvalue = csvify_str($row[1]);
69         my $lib = csvify_str($row[2]);
70         my $lib_opac = csvify_str($row[3]); 
71         my $imageurl = csvify_str($row[4]);
72         print $fh "$category,$authvalue,$lib,$lib_opac,$imageurl\n";
73     }
74     close $fh;
75     return;
76 }
77
78 sub backup_authorised_values_by_bat {
79     my $dbh = shift;
80     my $backupfile = shift;
81
82     open(my $fh, '>', $backupfile) or die "Could not open $backupfile!";
83     print $fh "category,authorised_value,lib,lib_opac,imageurl\n";
84     my $query = "SELECT category,authorised_value,lib,lib_opac,imageurl FROM authorised_values where category in (select category_code from borrower_attribute_types);";
85     my $sth = $dbh->prepare($query);
86     $sth->execute();
87
88     while (my @row = $sth->fetchrow_array) {
89         my $category = csvify_str($row[0]);
90         my $authvalue = csvify_str($row[1]);
91         my $lib = csvify_str($row[2]);
92         my $lib_opac = csvify_str($row[3]); 
93         my $imageurl = csvify_str($row[4]);
94         print $fh "$category,$authvalue,$lib,$lib_opac,$imageurl\n";
95     }
96     close $fh;
97     return;
98 }
99
100 sub backup_authorised_value_categories {
101     my $dbh = shift;
102     my $backupfile = shift;
103
104     open(my $fh, '>', $backupfile) or die "Could not open $backupfile!";
105     print $fh "category_name\n";
106     my $query = "SELECT category_name FROM authorised_value_categories";
107     my $sth = $dbh->prepare($query);
108     $sth->execute();
109
110     while (my @row = $sth->fetchrow_array) {
111         my $str = csvify_str($row[0]);
112         print $fh "$str\n";
113     }
114     close $fh;
115     return;
116 }
117
118 sub backup_authorised_value_categories_by_bat {
119     my $dbh = shift;
120     my $backupfile = shift;
121
122     open(my $fh, '>', $backupfile) or die "Could not open $backupfile!";
123     print $fh "category_name\n";
124     my $query = "SELECT category_name FROM authorised_value_categories WHERE category_name IN (select category_name from borrower_attribute_types)";
125     my $sth = $dbh->prepare($query);
126     $sth->execute();
127
128     while (my @row = $sth->fetchrow_array) {
129         my $str = csvify_str($row[0]);
130         print $fh "$str\n";
131     }
132     close $fh;
133     return;
134 }
135
136 sub backup_borrower_attribute_types {
137     my $dbh = shift;
138     my $backupfile = shift;
139
140     open(my $fh, '>', $backupfile) or die "Could not open $backupfile!";
141     print $fh "code,description,repeateable,opac_display,opac_editable,staff_searchable,authorised_value_category,display_checkout,category_code,class\n";
142     my $query = "SELECT code,description,repeatable,opac_display,opac_editable,staff_searchable,authorised_value_category,display_checkout,category_code,class FROM borrower_attribute_types";
143     my $sth = $dbh->prepare($query);
144     $sth->execute();
145
146     while (my @row = $sth->fetchrow_array) {
147         my $code = csvify_str($row[0]);
148         my $descr = csvify_str($row[1]);
149         my $repeat = $row[2];
150         my $opac_display = $row[3];
151         my $staff_searchable = $row[4];
152         my $auth_value_cat = csvify_str($row[5]);
153         my $display_chkout = $row[6];
154         my $cat_code = csvify_str($row[7]);
155         my $class = csvify_str($row[8]);
156         print $fh "$code,$descr,$repeat,$opac_display,$staff_searchable,$auth_value_cat,$display_chkout,$cat_code,$class\n";
157     }
158     close $fh;
159     return;
160 }
161
162 sub backup_libraries {
163     my $dbh = shift;
164     my $backupfile = shift;
165
166     open(my $fh, '>', $backupfile) or die "Could not open $backupfile!";
167     print $fh "id,parent_id,branchcode,title,description,ft_hide_patron_info,ft_search_groups_opac,ft_search_groups_staff\n";
168     my $query = "SELECT id,parent_id,branchcode,title,description,ft_hide_patron_info,ft_search_groups_opac,ft_search_groups_staff FROM library_groups";
169     my $sth = $dbh->prepare($query);
170     $sth->execute();
171
172     while (my @row = $sth->fetchrow_array) {
173         my $id = $row[0];
174         my $parent_id = $row[1];
175         my $branchcode = csvify_str($row[2]);
176         my $title = csvify_str($row[3]);
177         my $description = csvify_str($row[4]);
178         my $ft_hide_patron_info = $row[5];
179         my $ft_search_groups_opac = $row[6];
180         my $ft_search_groups_staff = $row[7];
181         print $fh "$id,$parent_id,$branchcode,$title,$description,$ft_hide_patron_info,$ft_search_groups_opac,$ft_search_groups_staff\n";
182     }
183     close $fh;
184     return;
185 }
186
187
188 sub backup_preferences {
189     my $dbh = shift;
190     my $backupfile = shift;
191
192     open(my $fh, '>', $backupfile) or die "Could not open $backupfile!";
193     print $fh "variable,value\n";
194     my $query = "SELECT variable,value FROM systempreferences WHERE value != '' AND value IS NOT NULL";
195     my $sth = $dbh->prepare($query);
196     $sth->execute();
197
198     while (my @row = $sth->fetchrow_array) {
199         my $variable = csvify_str($row[0]);
200         my $value = csvify_str($row[1]);
201         print $fh "$variable,$value\n";
202     }
203     close $fh;
204     return;
205 }
206
207 sub create_timestamp {
208     my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
209     $year += 1900;
210     $mon = sprintf("%02s",$mon);
211     $mday = sprintf("%02s",$mday);
212     $hour = sprintf("%02s",$hour);
213     $min = sprintf("%02s",$min);
214     $sec = sprintf("%02s",$sec);
215     my $str = "$year$mon$mday$hour$min$sec";
216     return $str;
217 }
218
219 sub csvify_str {
220     my $str = shift;
221     if (!defined $str or $str eq '') { return ''; }
222     $str =~ s/"/\"/g;
223     $str = '"' . $str . '"';
224     return $str;
225 }
226
227 sub abort {
228     my $msg = shift;
229     print STDERR "$0: $msg", "\n";
230     print_usage();
231     exit 1;
232 }
233
234 sub print_usage {
235     print <<_USAGE_;
236
237     mig export foo_a foo_b foo_c
238
239 _USAGE_
240 }
241