Lines 193-199
Functions for handling import/export.
Link Here
|
193 |
|
193 |
|
194 |
=head2 ExportFramework |
194 |
=head2 ExportFramework |
195 |
|
195 |
|
196 |
Export all the information of a Framework to an excel "xml" file or OpenDocument SpreadSheet "ods" file. |
196 |
Export all the information of a MARC or Authority Type Framework to an excel "xml" file, comma separated values "csv" file or OpenDocument SpreadSheet "ods" file. |
197 |
|
197 |
|
198 |
return : |
198 |
return : |
199 |
succes |
199 |
succes |
Lines 202-208
succes
Link Here
|
202 |
|
202 |
|
203 |
sub ExportFramework |
203 |
sub ExportFramework |
204 |
{ |
204 |
{ |
205 |
my ($frameworkcode, $xmlStrRef, $mode) = @_; |
205 |
my ($frameworkcode, $xmlStrRef, $mode, $frameworktype) = @_; |
206 |
|
206 |
|
207 |
my $dbh = C4::Context->dbh; |
207 |
my $dbh = C4::Context->dbh; |
208 |
if ($dbh) { |
208 |
if ($dbh) { |
Lines 229-236
sub ExportFramework
Link Here
|
229 |
} |
229 |
} |
230 |
} |
230 |
} |
231 |
|
231 |
|
232 |
if (_export_table('marc_tag_structure', $dbh, ($mode eq 'csv')?$xmlStrRef:$dom, ($mode eq 'ods')?$elementSS:$root, $frameworkcode, $mode)) { |
232 |
my $table = 'marc_tag_structure'; |
233 |
if (_export_table('marc_subfield_structure', $dbh, ($mode eq 'csv')?$xmlStrRef:$dom, ($mode eq 'ods')?$elementSS:$root, $frameworkcode, $mode)) { |
233 |
my $subtable = 'marc_subfield_structure'; |
|
|
234 |
if ($frameworktype && $frameworktype eq "authority") { |
235 |
$table = 'auth_tag_structure'; |
236 |
$subtable = 'auth_subfield_structure'; |
237 |
} |
238 |
|
239 |
if (_export_table($table, $dbh, ($mode eq 'csv')?$xmlStrRef:$dom, ($mode eq 'ods')?$elementSS:$root, $frameworkcode, $mode, $frameworktype)) { |
240 |
if (_export_table($subtable, $dbh, ($mode eq 'csv')?$xmlStrRef:$dom, ($mode eq 'ods')?$elementSS:$root, $frameworkcode, $mode, $frameworktype)) { |
234 |
$$xmlStrRef = $dom->toString(1) if ($mode eq 'ods' || $mode eq 'excel'); |
241 |
$$xmlStrRef = $dom->toString(1) if ($mode eq 'ods' || $mode eq 'excel'); |
235 |
return 1; |
242 |
return 1; |
236 |
} |
243 |
} |
Lines 245-264
sub ExportFramework
Link Here
|
245 |
# Export all the data from a mysql table to an spreadsheet. |
252 |
# Export all the data from a mysql table to an spreadsheet. |
246 |
sub _export_table |
253 |
sub _export_table |
247 |
{ |
254 |
{ |
248 |
my ($table, $dbh, $dom, $root, $frameworkcode, $mode) = @_; |
255 |
my ($table, $dbh, $dom, $root, $frameworkcode, $mode, $frameworktype) = @_; |
249 |
if ($mode eq 'csv') { |
256 |
if ($mode eq 'csv') { |
250 |
_export_table_csv($table, $dbh, $dom, $root, $frameworkcode); |
257 |
_export_table_csv($table, $dbh, $dom, $root, $frameworkcode, $frameworktype); |
251 |
} elsif ($mode eq 'ods') { |
258 |
} elsif ($mode eq 'ods') { |
252 |
_export_table_ods($table, $dbh, $dom, $root, $frameworkcode); |
259 |
_export_table_ods($table, $dbh, $dom, $root, $frameworkcode, $frameworktype); |
253 |
} else { |
260 |
} else { |
254 |
_export_table_excel($table, $dbh, $dom, $root, $frameworkcode); |
261 |
_export_table_excel($table, $dbh, $dom, $root, $frameworkcode, $frameworktype); |
255 |
} |
262 |
} |
256 |
} |
263 |
} |
257 |
|
264 |
|
258 |
# Export the mysql table to an csv file |
265 |
# Export the mysql table to an csv file |
259 |
sub _export_table_csv |
266 |
sub _export_table_csv |
260 |
{ |
267 |
{ |
261 |
my ($table, $dbh, $strCSV, $root, $frameworkcode) = @_; |
268 |
my ($table, $dbh, $strCSV, $root, $frameworkcode, $frameworktype) = @_; |
262 |
|
269 |
|
263 |
eval { |
270 |
eval { |
264 |
# First row with the name of the columns |
271 |
# First row with the name of the columns |
Lines 274-279
sub _export_table_csv
Link Here
|
274 |
$$strCSV .= chr(10); |
281 |
$$strCSV .= chr(10); |
275 |
# Populate rows with the data from mysql |
282 |
# Populate rows with the data from mysql |
276 |
$query = 'SELECT * FROM ' . $table . ' WHERE frameworkcode=?'; |
283 |
$query = 'SELECT * FROM ' . $table . ' WHERE frameworkcode=?'; |
|
|
284 |
if ($frameworktype eq "authority") { |
285 |
$query = 'SELECT * FROM ' . $table . ' WHERE authtypecode=?'; |
286 |
} |
277 |
$sth = $dbh->prepare($query); |
287 |
$sth = $dbh->prepare($query); |
278 |
$sth->execute($frameworkcode); |
288 |
$sth->execute($frameworkcode); |
279 |
my $data; |
289 |
my $data; |
Lines 305-311
sub _export_table_csv
Link Here
|
305 |
# Export the mysql table to an ods file |
315 |
# Export the mysql table to an ods file |
306 |
sub _export_table_ods |
316 |
sub _export_table_ods |
307 |
{ |
317 |
{ |
308 |
my ($table, $dbh, $dom, $root, $frameworkcode) = @_; |
318 |
my ($table, $dbh, $dom, $root, $frameworkcode, $frameworktype) = @_; |
309 |
|
319 |
|
310 |
eval { |
320 |
eval { |
311 |
my $elementTable = $dom->createElement('table:table'); |
321 |
my $elementTable = $dom->createElement('table:table'); |
Lines 334-339
sub _export_table_ods
Link Here
|
334 |
} |
344 |
} |
335 |
# Populate rows with the data from mysql |
345 |
# Populate rows with the data from mysql |
336 |
$query = 'SELECT * FROM ' . $table . ' WHERE frameworkcode=?'; |
346 |
$query = 'SELECT * FROM ' . $table . ' WHERE frameworkcode=?'; |
|
|
347 |
if ($frameworktype eq "authority") { |
348 |
$query = 'SELECT * FROM ' . $table . ' WHERE authtypecode=?'; |
349 |
} |
337 |
$sth = $dbh->prepare($query); |
350 |
$sth = $dbh->prepare($query); |
338 |
$sth->execute($frameworkcode); |
351 |
$sth->execute($frameworkcode); |
339 |
my $data; |
352 |
my $data; |
Lines 369-375
sub _export_table_ods
Link Here
|
369 |
# Export the mysql table to an excel-xml (openoffice/libreoffice compatible) file |
382 |
# Export the mysql table to an excel-xml (openoffice/libreoffice compatible) file |
370 |
sub _export_table_excel |
383 |
sub _export_table_excel |
371 |
{ |
384 |
{ |
372 |
my ($table, $dbh, $dom, $root, $frameworkcode) = @_; |
385 |
my ($table, $dbh, $dom, $root, $frameworkcode, $frameworktype) = @_; |
373 |
|
386 |
|
374 |
eval { |
387 |
eval { |
375 |
my $elementWS = $dom->createElement('Worksheet'); |
388 |
my $elementWS = $dom->createElement('Worksheet'); |
Lines 399-404
sub _export_table_excel
Link Here
|
399 |
} |
412 |
} |
400 |
# Populate rows with the data from mysql |
413 |
# Populate rows with the data from mysql |
401 |
$query = 'SELECT * FROM ' . $table . ' WHERE frameworkcode=?'; |
414 |
$query = 'SELECT * FROM ' . $table . ' WHERE frameworkcode=?'; |
|
|
415 |
if ($frameworktype eq "authority") { |
416 |
$query = 'SELECT * FROM ' . $table . ' WHERE authtypecode=?'; |
417 |
} |
402 |
$sth = $dbh->prepare($query); |
418 |
$sth = $dbh->prepare($query); |
403 |
$sth->execute($frameworkcode); |
419 |
$sth->execute($frameworkcode); |
404 |
my $data; |
420 |
my $data; |
Lines 428-439
sub _export_table_excel
Link Here
|
428 |
return 1; |
444 |
return 1; |
429 |
}#_export_table_excel |
445 |
}#_export_table_excel |
430 |
|
446 |
|
431 |
|
|
|
432 |
|
433 |
|
434 |
|
435 |
|
436 |
|
437 |
# Format chars problematics to a correct format for xml. |
447 |
# Format chars problematics to a correct format for xml. |
438 |
sub _parseContent2Xml |
448 |
sub _parseContent2Xml |
439 |
{ |
449 |
{ |
Lines 618-624
sub _getMeta
Link Here
|
618 |
|
628 |
|
619 |
=head2 ImportFramework |
629 |
=head2 ImportFramework |
620 |
|
630 |
|
621 |
Import all the information of a Framework from a excel-xml/ods file. |
631 |
Import all the information of a MARC or Authority Type Framework from a excel-xml/ods file. |
622 |
|
632 |
|
623 |
return : |
633 |
return : |
624 |
success |
634 |
success |
Lines 627-633
success
Link Here
|
627 |
|
637 |
|
628 |
sub ImportFramework |
638 |
sub ImportFramework |
629 |
{ |
639 |
{ |
630 |
my ($filename, $frameworkcode, $deleteFilename) = @_; |
640 |
my ($filename, $frameworkcode, $deleteFilename, $frameworktype) = @_; |
631 |
|
641 |
|
632 |
my $tempdir; |
642 |
my $tempdir; |
633 |
my $ok = -1; |
643 |
my $ok = -1; |
Lines 657-669
sub ImportFramework
Link Here
|
657 |
# They are text files, so open it to read |
667 |
# They are text files, so open it to read |
658 |
open($dom, '<', $filename); |
668 |
open($dom, '<', $filename); |
659 |
} |
669 |
} |
|
|
670 |
|
671 |
my $table = 'marc_tag_structure'; |
672 |
my $subtable = 'marc_subfield_structure'; |
673 |
if ($frameworktype && $frameworktype eq "authority") { |
674 |
$table = 'auth_tag_structure'; |
675 |
$subtable = 'auth_subfield_structure'; |
676 |
} |
677 |
|
660 |
if ($dom) { |
678 |
if ($dom) { |
661 |
# Process both tables |
679 |
# Process both tables |
662 |
my $numDeleted = 0; |
680 |
my $numDeleted = 0; |
663 |
my $numDeletedAux = 0; |
681 |
my $numDeletedAux = 0; |
664 |
if (($numDeletedAux = _import_table($dbh, 'marc_tag_structure', $frameworkcode, $dom, ['frameworkcode', 'tagfield'], $extension)) >= 0) { |
682 |
if (($numDeletedAux = _import_table($dbh, $table, $frameworkcode, $dom, ['frameworkcode', 'tagfield'], $extension, $frameworktype)) >= 0) { |
665 |
$numDeleted += $numDeletedAux if ($numDeletedAux > 0); |
683 |
$numDeleted += $numDeletedAux if ($numDeletedAux > 0); |
666 |
if (($numDeletedAux = _import_table($dbh, 'marc_subfield_structure', $frameworkcode, $dom, ['frameworkcode', 'tagfield', 'tagsubfield'], $extension)) >= 0) { |
684 |
if (($numDeletedAux = _import_table($dbh, $subtable, $frameworkcode, $dom, ['frameworkcode', 'tagfield', 'tagsubfield'], $extension, $frameworktype)) >= 0) { |
667 |
$numDeleted += $numDeletedAux if ($numDeletedAux > 0); |
685 |
$numDeleted += $numDeletedAux if ($numDeletedAux > 0); |
668 |
$ok = ($numDeleted > 0)?$numDeleted:0; |
686 |
$ok = ($numDeleted > 0)?$numDeleted:0; |
669 |
} |
687 |
} |
Lines 784-790
sub _check_validity_worksheet
Link Here
|
784 |
# Import the data from an excel-xml/ods to mysql tables. |
802 |
# Import the data from an excel-xml/ods to mysql tables. |
785 |
sub _import_table |
803 |
sub _import_table |
786 |
{ |
804 |
{ |
787 |
my ($dbh, $table, $frameworkcode, $dom, $PKArray, $format) = @_; |
805 |
my ($dbh, $table, $frameworkcode, $dom, $PKArray, $format, $frameworktype) = @_; |
788 |
my %fields2Delete; |
806 |
my %fields2Delete; |
789 |
my $query; |
807 |
my $query; |
790 |
my @fields; |
808 |
my @fields; |
Lines 793-798
sub _import_table
Link Here
|
793 |
@fields = @$PKArray; |
811 |
@fields = @$PKArray; |
794 |
shift @fields; |
812 |
shift @fields; |
795 |
$query = 'SELECT ' . join(',', @fields) . ' FROM ' . $table . ' WHERE frameworkcode=?'; |
813 |
$query = 'SELECT ' . join(',', @fields) . ' FROM ' . $table . ' WHERE frameworkcode=?'; |
|
|
814 |
if ($frameworktype eq "authority") { |
815 |
$query = 'SELECT ' . join(',', @fields) . ' FROM ' . $table . ' WHERE authtypecode=?'; |
816 |
} |
796 |
my $sth = $dbh->prepare($query); |
817 |
my $sth = $dbh->prepare($query); |
797 |
$sth->execute($frameworkcode); |
818 |
$sth->execute($frameworkcode); |
798 |
my $field; |
819 |
my $field; |