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","itemtypes"); }
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);
42 if ($backup eq 'borrowerattributes') {
43 $backupfile = $MIGGITDIR . 'borrower_attributes' . '.' . $timestamp . '.xml';
44 backup_borrower_attributes($dbh,$backupfile);
46 if ($backup eq 'libraries') {
47 $backupfile = $MIGGITDIR . 'libraries' . '.' . $timestamp . '.xml';
48 backup_libraries($dbh,$backupfile);
50 if ($backup eq 'itemtypes') {
51 $backupfile = $MIGGITDIR . 'itemtypes' . '.' . $timestamp . '.xml';
52 backup_itemtypes($dbh,$backupfile);
56 sub backup_authorised_values {
58 my $backupfile = shift;
60 open(my $fh, '>', $backupfile) or die "Could not open $backupfile!";
61 my $xml = XML::Writer->new(OUTPUT => $fh, DATA_MODE => 1, DATA_INDENT => 2, );
62 $xml->xmlDecl('UTF-8');
63 $xml->startTag('authorised_values');
64 my $query = "SELECT category,authorised_value,lib,lib_opac,imageurl FROM authorised_values";
65 my $sth = $dbh->prepare($query);
67 while (my @row = $sth->fetchrow_array) {
68 $xml->startTag('value');
69 $xml->dataElement('category', $row[0]);
70 $xml->dataElement('authvalue', $row[1]);
71 $xml->dataElement('lib', $row[2]);
72 $xml->dataElement('lib_opac', $row[3]);
73 $xml->dataElement('image_url', $row[4]);
74 $xml->endTag('value');
76 $xml->endTag('authorised_values');
82 sub backup_borrower_attributes {
84 my $backupfile = shift;
86 open(my $fh, '>', $backupfile) or die "Could not open $backupfile!";
87 my $xml = XML::Writer->new(OUTPUT => $fh, DATA_MODE => 1, DATA_INDENT => 2, );
88 $xml->xmlDecl('UTF-8');
89 $xml->startTag('document');
91 $xml->startTag('borrower_attribute_types');
92 my $query = "SELECT code,description,repeatable,opac_display,opac_editable,staff_searchable,authorised_value_category,display_checkout,category_code,class FROM borrower_attribute_types";
93 my $sth = $dbh->prepare($query);
95 while (my @row = $sth->fetchrow_array) {
96 $xml->startTag('value');
97 $xml->dataElement('code', $row[0]);
98 $xml->dataElement('description', $row[1]);
99 $xml->dataElement('repeat', $row[2]);
100 $xml->dataElement('opac_display', $row[3]);
101 $xml->dataElement('staff_searchable', $row[4]);
102 $xml->dataElement('auth_value_cat', $row[5]);
103 $xml->dataElement('display_checkout', $row[6]);
104 $xml->dataElement('category_code', $row[7]);
105 $xml->dataElement('class', $row[8]);
106 $xml->endTag('value');
108 $xml->endTag('borrower_attribute_types');
110 $xml->startTag('authorised_value_categories');
111 $query = "SELECT category_name FROM authorised_value_categories WHERE category_name IN (select category_name from borrower_attribute_types)";
112 $sth = $dbh->prepare($query);
114 while (my @row = $sth->fetchrow_array) {
115 $xml->dataElement('value', $row[0]);
117 $xml->endTag('authorised_value_categories');
119 $xml->startTag('authorised_values');
120 $query = "SELECT category,authorised_value,lib,lib_opac,imageurl FROM authorised_values where category in (select category_code from borrower_attribute_types);";
121 $sth = $dbh->prepare($query);
123 while (my @row = $sth->fetchrow_array) {
124 $xml->startTag('value');
125 $xml->dataElement('category', $row[0]);
126 $xml->dataElement('authvalue', $row[1]);
127 $xml->dataElement('lib', $row[2]);
128 $xml->dataElement('lib_opac', $row[3]);
129 $xml->dataElement('image_url', $row[4]);
130 $xml->endTag('value');
132 $xml->endTag('authorised_values');
134 $xml->endTag('document');
140 sub backup_itemtypes {
142 my $backupfile = shift;
144 open(my $fh, '>', $backupfile) or die "Could not open $backupfile!";
145 my $xml = XML::Writer->new(OUTPUT => $fh, DATA_MODE => 1, DATA_INDENT => 2, );
146 $xml->xmlDecl('UTF-8');
147 $xml->startTag('document');
149 $xml->startTag('itemtypes');
150 my $query = "SELECT itemtype, description, rentalcharge, rentalcharge_daily, rentalcharge_hourly, defaultreplacecost, processfee, notforloan, imageurl, summary, checkinmsg, checkinmsgtype, sip_media_type, hideinopac, searchcategory FROM itemtypes";
151 my $sth = $dbh->prepare($query);
153 while (my @row = $sth->fetchrow_array) {
154 $xml->startTag('value');
155 $xml->dataElement('itemtype', $row[0]);
156 $xml->dataElement('description', $row[1]);
157 $xml->dataElement('rentalcharge', $row[2]);
158 $xml->dataElement('rentalcharge_daily', $row[3]);
159 $xml->dataElement('rentalcharge_hourly', $row[4]);
160 $xml->dataElement('defaultreplacementcost', $row[5]);
161 $xml->dataElement('processfee', $row[6]);
162 $xml->dataElement('notforloan', $row[7]);
163 $xml->dataElement('imageurl', $row[8]);
164 $xml->dataElement('summary', $row[9]);
165 $xml->dataElement('checkinmsg', $row[10]);
166 $xml->dataElement('checkinmsgtype', $row[11]);
167 $xml->dataElement('sip_media_type', $row[12]);
168 $xml->dataElement('hideinopac', $row[13]);
169 $xml->dataElement('searchcategory', $row[14]);
170 $xml->endTag('value');
172 $xml->endTag('itemtypes');
174 $xml->startTag('authorised_values');
175 $query = "SELECT category,authorised_value,lib,lib_opac,imageurl FROM authorised_values where category = 'ITEMTYPECAT';";
176 $sth = $dbh->prepare($query);
178 while (my @row = $sth->fetchrow_array) {
179 $xml->startTag('value');
180 $xml->dataElement('category', $row[0]);
181 $xml->dataElement('authvalue', $row[1]);
182 $xml->dataElement('lib', $row[2]);
183 $xml->dataElement('lib_opac', $row[3]);
184 $xml->dataElement('image_url', $row[4]);
185 $xml->endTag('value');
187 $xml->endTag('authorised_values');
189 $xml->endTag('document');
195 sub backup_libraries {
197 my $backupfile = shift;
199 open(my $fh, '>', $backupfile) or die "Could not open $backupfile!";
200 my $xml = XML::Writer->new(OUTPUT => $fh, DATA_MODE => 1, DATA_INDENT => 2, );
201 $xml->xmlDecl('UTF-8');
202 $xml->startTag('libraries');
203 my $query = "SELECT id,parent_id,branchcode,title,description,ft_hide_patron_info,ft_search_groups_opac,ft_search_groups_staff FROM library_groups";
204 my $sth = $dbh->prepare($query);
206 while (my @row = $sth->fetchrow_array) {
207 $xml->startTag('library');
208 $xml->dataElement('id',$row[0]);
209 $xml->dataElement('parent_id',$row[1]);
210 $xml->dataElement('branchcode',$row[2]);
211 $xml->dataElement('title',$row[3]);
212 $xml->dataElement('description',$row[4]);
213 $xml->dataElement('ft_hide_patron_info',$row[5]);
214 $xml->dataElement('ft_search_groups_opac',$row[6]);
215 $xml->dataElement('ft_search_groups_staff',$row[7]);
216 $xml->endTag('library');
218 $xml->endTag('libraries');
224 sub backup_preferences {
226 my $backupfile = shift;
228 open(my $fh, '>', $backupfile) or die "Could not open $backupfile!";
229 my $xml = XML::Writer->new(OUTPUT => $fh, DATA_MODE => 1, DATA_INDENT => 2, );
230 $xml->xmlDecl('UTF-8');
231 $xml->startTag('preferences');
232 my $query = "SELECT variable,value FROM systempreferences WHERE value != '' AND value IS NOT NULL";
233 my $sth = $dbh->prepare($query);
235 while (my @row = $sth->fetchrow_array) {
236 $xml->startTag('pref');
237 $xml->dataElement('variable',$row[0]);
238 $xml->dataElement('value',$row[1]);
239 $xml->endTag('pref');
241 $xml->endTag('preferences');
247 sub create_timestamp {
248 my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
250 $mon = sprintf("%02s",$mon);
251 $mday = sprintf("%02s",$mday);
252 $hour = sprintf("%02s",$hour);
253 $min = sprintf("%02s",$min);
254 $sec = sprintf("%02s",$sec);
255 my $str = "$year$mon$mday$hour$min$sec";
261 print STDERR "$0: $msg", "\n";
269 mig export foo_a foo_b foo_c