9 HOME MYSQL_HOST MYSQL_TCP_PORT MYSQL_USER MYSQL_DATABASE MYSQL_PW
10 MIGSCHEMA MIGBASEWORKDIR MIGBASEGITDIR MIGGITDIR MIGWORKDIR
12 use open ':encoding(utf8)';
16 my $mig_bin = "$FindBin::Bin/";
17 use lib "$FindBin::Bin/";
21 my $dbh = KMig::db_connect();
23 #to do check for array passed and if not present then use tags
26 my $arg_list_length = scalar @taglist;
27 if($arg_list_length < 1) { @taglist = ("preferences","authorisedvalues","libraries","borrowerattributes"); }
28 $MIGGITDIR =~ s/\/\//\//;
30 my $timestamp = create_timestamp();
32 foreach my $backup (@taglist) {
34 if ($backup eq 'preferences') {
35 $backupfile = $MIGGITDIR . 'systempreferences' . '.' . $timestamp . '.xml';
36 backup_preferences($dbh,$backupfile);
38 if ($backup eq 'authorisedvalues') {
39 $backupfile = $MIGGITDIR . 'authorised_values' . '.' . $timestamp . '.xml';
40 backup_authorised_values($dbh,$backupfile);
41 $backupfile = $MIGGITDIR . 'authorised_value_categories' . '.' . $timestamp . '.xml';
42 backup_authorised_value_categories($dbh,$backupfile);
44 if ($backup eq 'borrowerattributes') {
45 $backupfile = $MIGGITDIR . 'borrower_attribute_types' . '.' . $timestamp . '.xml';
46 backup_borrower_attribute_types($dbh,$backupfile);
47 $backupfile = $MIGGITDIR . 'authorised_values_by_bat' . '.' . $timestamp . '.xml';
48 backup_authorised_values_by_bat($dbh,$backupfile);
49 $backupfile = $MIGGITDIR . 'authorised_value_categories_by_bat' . '.' . $timestamp . '.xml';
50 backup_authorised_value_categories_by_bat($dbh,$backupfile);
52 if ($backup eq 'libraries') {
53 $backupfile = $MIGGITDIR . 'libraries' . '.' . $timestamp . '.xml';
54 backup_libraries($dbh,$backupfile);
58 sub backup_authorised_values {
60 my $backupfile = shift;
62 open(my $fh, '>', $backupfile) or die "Could not open $backupfile!";
63 my $xml = XML::Writer->new(OUTPUT => $fh, DATA_MODE => 1, DATA_INDENT => 2, );
64 $xml->xmlDecl('UTF-8');
65 $xml->startTag('authorised_values');
66 my $query = "SELECT category,authorised_value,lib,lib_opac,imageurl FROM authorised_values";
67 my $sth = $dbh->prepare($query);
69 while (my @row = $sth->fetchrow_array) {
70 $xml->startTag('value');
71 $xml->dataElement('category', $row[0]);
72 $xml->dataElement('authvalue', $row[1]);
73 $xml->dataElement('lib', $row[2]);
74 $xml->dataElement('lib_opac', $row[3]);
75 $xml->dataElement('image_url', $row[4]);
76 $xml->endTag('value');
78 $xml->endTag('authorised_values');
84 sub backup_authorised_values_by_bat {
86 my $backupfile = shift;
88 open(my $fh, '>', $backupfile) or die "Could not open $backupfile!";
89 my $xml = XML::Writer->new(OUTPUT => $fh, DATA_MODE => 1, DATA_INDENT => 2, );
90 $xml->xmlDecl('UTF-8');
91 $xml->startTag('authorised_values');
92 my $query = "SELECT category,authorised_value,lib,lib_opac,imageurl FROM authorised_values where category in (select category_code from borrower_attribute_types);";
93 my $sth = $dbh->prepare($query);
95 while (my @row = $sth->fetchrow_array) {
96 $xml->startTag('value');
97 $xml->dataElement('category', $row[0]);
98 $xml->dataElement('authvalue', $row[1]);
99 $xml->dataElement('lib', $row[2]);
100 $xml->dataElement('lib_opac', $row[3]);
101 $xml->dataElement('image_url', $row[4]);
102 $xml->endTag('value');
104 $xml->endTag('authorised_values');
110 sub backup_authorised_value_categories {
112 my $backupfile = shift;
114 open(my $fh, '>', $backupfile) or die "Could not open $backupfile!";
115 my $xml = XML::Writer->new(OUTPUT => $fh, DATA_MODE => 1, DATA_INDENT => 2, );
116 $xml->xmlDecl('UTF-8');
117 $xml->startTag('authorised_value_categories');
118 my $query = "SELECT category_name FROM authorised_value_categories";
119 my $sth = $dbh->prepare($query);
121 while (my @row = $sth->fetchrow_array) {
122 $xml->dataElement('value', $row[0]);
124 $xml->endTag('authorised_value_categories');
130 sub backup_authorised_value_categories_by_bat {
132 my $backupfile = shift;
134 open(my $fh, '>', $backupfile) or die "Could not open $backupfile!";
135 my $xml = XML::Writer->new(OUTPUT => $fh, DATA_MODE => 1, DATA_INDENT => 2, );
136 $xml->xmlDecl('UTF-8');
137 $xml->startTag('authorised_value_categories');
138 my $query = "SELECT category_name FROM authorised_value_categories WHERE category_name IN (select category_name from borrower_attribute_types)";
139 my $sth = $dbh->prepare($query);
141 while (my @row = $sth->fetchrow_array) {
142 $xml->dataElement('value', $row[0]);
144 $xml->endTag('authorised_value_categories');
150 sub backup_borrower_attribute_types {
152 my $backupfile = shift;
154 open(my $fh, '>', $backupfile) or die "Could not open $backupfile!";
155 my $xml = XML::Writer->new(OUTPUT => $fh, DATA_MODE => 1, DATA_INDENT => 2, );
156 $xml->xmlDecl('UTF-8');
157 $xml->startTag('borrower_attribute_types');
158 my $query = "SELECT code,description,repeatable,opac_display,opac_editable,staff_searchable,authorised_value_category,display_checkout,category_code,class FROM borrower_attribute_types";
159 my $sth = $dbh->prepare($query);
161 while (my @row = $sth->fetchrow_array) {
162 $xml->startTag('value');
163 $xml->dataElement('code', $row[0]);
164 $xml->dataElement('description', $row[1]);
165 $xml->dataElement('repeat', $row[2]);
166 $xml->dataElement('opac_display', $row[3]);
167 $xml->dataElement('staff_searchable', $row[4]);
168 $xml->dataElement('auth_value_cat', $row[5]);
169 $xml->dataElement('display_checkout', $row[6]);
170 $xml->dataElement('category_code', $row[7]);
171 $xml->dataElement('class', $row[8]);
172 $xml->endTag('value');
174 $xml->endTag('borrower_attribute_types');
180 sub backup_libraries {
182 my $backupfile = shift;
184 open(my $fh, '>', $backupfile) or die "Could not open $backupfile!";
185 my $xml = XML::Writer->new(OUTPUT => $fh, DATA_MODE => 1, DATA_INDENT => 2, );
186 $xml->xmlDecl('UTF-8');
187 $xml->startTag('libraries');
188 my $query = "SELECT id,parent_id,branchcode,title,description,ft_hide_patron_info,ft_search_groups_opac,ft_search_groups_staff FROM library_groups";
189 my $sth = $dbh->prepare($query);
191 while (my @row = $sth->fetchrow_array) {
192 $xml->startTag('library');
193 $xml->dataElement('id',$row[0]);
194 $xml->dataElement('parent_id',$row[1]);
195 $xml->dataElement('branchcode',$row[2]);
196 $xml->dataElement('title',$row[3]);
197 $xml->dataElement('description',$row[4]);
198 $xml->dataElement('ft_hide_patron_info',$row[5]);
199 $xml->dataElement('ft_search_groups_opac',$row[6]);
200 $xml->dataElement('ft_search_groups_staff',$row[7]);
201 $xml->endTag('library');
203 $xml->endTag('libraries');
209 sub backup_preferences {
211 my $backupfile = shift;
213 open(my $fh, '>', $backupfile) or die "Could not open $backupfile!";
214 my $xml = XML::Writer->new(OUTPUT => $fh, DATA_MODE => 1, DATA_INDENT => 2, );
215 $xml->xmlDecl('UTF-8');
216 $xml->startTag('preferences');
217 my $query = "SELECT variable,value FROM systempreferences WHERE value != '' AND value IS NOT NULL";
218 my $sth = $dbh->prepare($query);
220 while (my @row = $sth->fetchrow_array) {
221 $xml->startTag('pref');
222 $xml->dataElement('variable',$row[0]);
223 $xml->dataElement('value',$row[1]);
224 $xml->endTag('pref');
226 $xml->endTag('preferences');
232 sub create_timestamp {
233 my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
235 $mon = sprintf("%02s",$mon);
236 $mday = sprintf("%02s",$mday);
237 $hour = sprintf("%02s",$hour);
238 $min = sprintf("%02s",$min);
239 $sec = sprintf("%02s",$sec);
240 my $str = "$year$mon$mday$hour$min$sec";
246 print STDERR "$0: $msg", "\n";
254 mig export foo_a foo_b foo_c