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 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 306-312
sub _export_table_csv
Link Here
|
306 |
# Export the mysql table to an ods file |
316 |
# Export the mysql table to an ods file |
307 |
sub _export_table_ods |
317 |
sub _export_table_ods |
308 |
{ |
318 |
{ |
309 |
my ($table, $dbh, $dom, $root, $frameworkcode) = @_; |
319 |
my ($table, $dbh, $dom, $root, $frameworkcode, $frameworktype) = @_; |
310 |
|
320 |
|
311 |
eval { |
321 |
eval { |
312 |
my $elementTable = $dom->createElement('table:table'); |
322 |
my $elementTable = $dom->createElement('table:table'); |
Lines 335-340
sub _export_table_ods
Link Here
|
335 |
} |
345 |
} |
336 |
# Populate rows with the data from mysql |
346 |
# Populate rows with the data from mysql |
337 |
$query = 'SELECT * FROM ' . $table . ' WHERE frameworkcode=?'; |
347 |
$query = 'SELECT * FROM ' . $table . ' WHERE frameworkcode=?'; |
|
|
348 |
if ($frameworktype eq "authority") { |
349 |
$query = 'SELECT * FROM ' . $table . ' WHERE authtypecode=?'; |
350 |
} |
338 |
$sth = $dbh->prepare($query); |
351 |
$sth = $dbh->prepare($query); |
339 |
$sth->execute($frameworkcode); |
352 |
$sth->execute($frameworkcode); |
340 |
my $data; |
353 |
my $data; |
Lines 372-378
sub _export_table_ods
Link Here
|
372 |
# Export the mysql table to an excel-xml (openoffice/libreoffice compatible) file |
385 |
# Export the mysql table to an excel-xml (openoffice/libreoffice compatible) file |
373 |
sub _export_table_excel |
386 |
sub _export_table_excel |
374 |
{ |
387 |
{ |
375 |
my ($table, $dbh, $dom, $root, $frameworkcode) = @_; |
388 |
my ($table, $dbh, $dom, $root, $frameworkcode, $frameworktype) = @_; |
376 |
|
389 |
|
377 |
eval { |
390 |
eval { |
378 |
my $elementWS = $dom->createElement('Worksheet'); |
391 |
my $elementWS = $dom->createElement('Worksheet'); |
Lines 402-407
sub _export_table_excel
Link Here
|
402 |
} |
415 |
} |
403 |
# Populate rows with the data from mysql |
416 |
# Populate rows with the data from mysql |
404 |
$query = 'SELECT * FROM ' . $table . ' WHERE frameworkcode=?'; |
417 |
$query = 'SELECT * FROM ' . $table . ' WHERE frameworkcode=?'; |
|
|
418 |
if ($frameworktype eq "authority") { |
419 |
$query = 'SELECT * FROM ' . $table . ' WHERE authtypecode=?'; |
420 |
} |
405 |
$sth = $dbh->prepare($query); |
421 |
$sth = $dbh->prepare($query); |
406 |
$sth->execute($frameworkcode); |
422 |
$sth->execute($frameworkcode); |
407 |
my $data; |
423 |
my $data; |
Lines 433-444
sub _export_table_excel
Link Here
|
433 |
return 1; |
449 |
return 1; |
434 |
}#_export_table_excel |
450 |
}#_export_table_excel |
435 |
|
451 |
|
436 |
|
|
|
437 |
|
438 |
|
439 |
|
440 |
|
441 |
|
442 |
# Format chars problematics to a correct format for xml. |
452 |
# Format chars problematics to a correct format for xml. |
443 |
sub _parseContent2Xml |
453 |
sub _parseContent2Xml |
444 |
{ |
454 |
{ |
Lines 623-629
sub _getMeta
Link Here
|
623 |
|
633 |
|
624 |
=head2 ImportFramework |
634 |
=head2 ImportFramework |
625 |
|
635 |
|
626 |
Import all the information of a Framework from a excel-xml/ods file. |
636 |
Import all the information of a MARC or Authority Type Framework from a excel-xml/ods file. |
627 |
|
637 |
|
628 |
return : |
638 |
return : |
629 |
success |
639 |
success |
Lines 632-638
success
Link Here
|
632 |
|
642 |
|
633 |
sub ImportFramework |
643 |
sub ImportFramework |
634 |
{ |
644 |
{ |
635 |
my ($filename, $frameworkcode, $deleteFilename) = @_; |
645 |
my ($filename, $frameworkcode, $deleteFilename, $frameworktype) = @_; |
636 |
|
646 |
|
637 |
my $tempdir; |
647 |
my $tempdir; |
638 |
my $ok = -1; |
648 |
my $ok = -1; |
Lines 662-674
sub ImportFramework
Link Here
|
662 |
# They are text files, so open it to read |
672 |
# They are text files, so open it to read |
663 |
open($dom, '<', $filename); |
673 |
open($dom, '<', $filename); |
664 |
} |
674 |
} |
|
|
675 |
|
676 |
my $table = 'marc_tag_structure'; |
677 |
my $subtable = 'marc_subfield_structure'; |
678 |
if ($frameworktype eq "authority") { |
679 |
$table = 'auth_tag_structure'; |
680 |
$subtable = 'auth_subfield_structure'; |
681 |
} |
682 |
|
665 |
if ($dom) { |
683 |
if ($dom) { |
666 |
# Process both tables |
684 |
# Process both tables |
667 |
my $numDeleted = 0; |
685 |
my $numDeleted = 0; |
668 |
my $numDeletedAux = 0; |
686 |
my $numDeletedAux = 0; |
669 |
if (($numDeletedAux = _import_table($dbh, 'marc_tag_structure', $frameworkcode, $dom, ['frameworkcode', 'tagfield'], $extension)) >= 0) { |
687 |
if (($numDeletedAux = _import_table($dbh, $table, $frameworkcode, $dom, ['frameworkcode', 'tagfield'], $extension, $frameworktype)) >= 0) { |
670 |
$numDeleted += $numDeletedAux if ($numDeletedAux > 0); |
688 |
$numDeleted += $numDeletedAux if ($numDeletedAux > 0); |
671 |
if (($numDeletedAux = _import_table($dbh, 'marc_subfield_structure', $frameworkcode, $dom, ['frameworkcode', 'tagfield', 'tagsubfield'], $extension)) >= 0) { |
689 |
if (($numDeletedAux = _import_table($dbh, $subtable, $frameworkcode, $dom, ['frameworkcode', 'tagfield', 'tagsubfield'], $extension, $frameworktype)) >= 0) { |
672 |
$numDeleted += $numDeletedAux if ($numDeletedAux > 0); |
690 |
$numDeleted += $numDeletedAux if ($numDeletedAux > 0); |
673 |
$ok = ($numDeleted > 0)?$numDeleted:0; |
691 |
$ok = ($numDeleted > 0)?$numDeleted:0; |
674 |
} |
692 |
} |
Lines 789-795
sub _check_validity_worksheet
Link Here
|
789 |
# Import the data from an excel-xml/ods to mysql tables. |
807 |
# Import the data from an excel-xml/ods to mysql tables. |
790 |
sub _import_table |
808 |
sub _import_table |
791 |
{ |
809 |
{ |
792 |
my ($dbh, $table, $frameworkcode, $dom, $PKArray, $format) = @_; |
810 |
my ($dbh, $table, $frameworkcode, $dom, $PKArray, $format, $frameworktype) = @_; |
793 |
my %fields2Delete; |
811 |
my %fields2Delete; |
794 |
my $query; |
812 |
my $query; |
795 |
my @fields; |
813 |
my @fields; |
Lines 798-803
sub _import_table
Link Here
|
798 |
@fields = @$PKArray; |
816 |
@fields = @$PKArray; |
799 |
shift @fields; |
817 |
shift @fields; |
800 |
$query = 'SELECT ' . join(',', @fields) . ' FROM ' . $table . ' WHERE frameworkcode=?'; |
818 |
$query = 'SELECT ' . join(',', @fields) . ' FROM ' . $table . ' WHERE frameworkcode=?'; |
|
|
819 |
if ($frameworktype eq "authority") { |
820 |
$query = 'SELECT ' . join(',', @fields) . ' FROM ' . $table . ' WHERE authtypecode=?'; |
821 |
} |
801 |
my $sth = $dbh->prepare($query); |
822 |
my $sth = $dbh->prepare($query); |
802 |
$sth->execute($frameworkcode); |
823 |
$sth->execute($frameworkcode); |
803 |
my $field; |
824 |
my $field; |