|
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; |