|
Lines 526-531
sub set_languages_syspref {
Link Here
|
| 526 |
C4::Context->clear_syspref_cache(); |
526 |
C4::Context->clear_syspref_cache(); |
| 527 |
} |
527 |
} |
| 528 |
|
528 |
|
|
|
529 |
=head2 get_sql_statements_from_yml |
| 530 |
|
| 531 |
my @sql_statements = $installer->get_sql_statements_from_yml($filename[, $split]); |
| 532 |
|
| 533 |
Load the YML file passed in parameter and return the list of statements found. |
| 534 |
|
| 535 |
If $split is passed, each row will be inserted one by one. |
| 536 |
|
| 537 |
=cut |
| 538 |
|
| 539 |
sub get_sql_statements_from_yml { |
| 540 |
my ( $self, $filename, $split ) = @_; |
| 541 |
my $yaml = YAML::XS::LoadFile($filename); # Load YAML |
| 542 |
my @statements; |
| 543 |
for my $table ( @{ $yaml->{'tables'} } ) { |
| 544 |
my $query_info = process_yml_table($table); |
| 545 |
my $query = $query_info->{query}; |
| 546 |
my $placeholders = $query_info->{placeholders}; |
| 547 |
my $values = $query_info->{values}; |
| 548 |
|
| 549 |
if ($split) { |
| 550 |
$query .= join ', ', ($placeholders); |
| 551 |
for my $value (@$values) { |
| 552 |
push @statements, [ $query, $value ]; |
| 553 |
} |
| 554 |
} else { |
| 555 |
|
| 556 |
# Doing only 1 INSERT query for the whole table |
| 557 |
my @all_rows_values = map { @$_ } @$values; |
| 558 |
$query .= join ', ', ($placeholders) x scalar @$values; |
| 559 |
push @statements, [ $query, \@all_rows_values ]; |
| 560 |
} |
| 561 |
} |
| 562 |
|
| 563 |
# extra SQL statements |
| 564 |
if ( $yaml->{sql_statements} ) { |
| 565 |
push @statements, [ map { [ $_, undef, undef ] } @{ $yaml->{'sql_statements'} } ]; |
| 566 |
} |
| 567 |
return @statements; |
| 568 |
} |
| 569 |
|
| 529 |
=head2 process_yml_table |
570 |
=head2 process_yml_table |
| 530 |
|
571 |
|
| 531 |
my $query_info = $installer->process_yml_table($table); |
572 |
my $query_info = $installer->process_yml_table($table); |
|
Lines 592-611
sub load_sql {
Link Here
|
| 592 |
}; |
633 |
}; |
| 593 |
} else { # YAML files |
634 |
} else { # YAML files |
| 594 |
eval { |
635 |
eval { |
| 595 |
my $yaml = YAML::XS::LoadFile($filename); # Load YAML |
636 |
my @statements = $self->get_sql_statements_from_yml($filename); |
| 596 |
for my $table ( @{ $yaml->{'tables'} } ) { |
637 |
for my $statement (@statements) { |
| 597 |
my $query_info = process_yml_table($table); |
638 |
my $sql = $statement->[0]; |
| 598 |
my $query = $query_info->{query}; |
639 |
my $variables = $statement->[1]; |
| 599 |
my $placeholders = $query_info->{placeholders}; |
640 |
$dbh->do( $sql, undef, @$variables ); |
| 600 |
my $values = $query_info->{values}; |
|
|
| 601 |
|
| 602 |
# Doing only 1 INSERT query for the whole table |
| 603 |
my @all_rows_values = map { @$_ } @$values; |
| 604 |
$query .= join ', ', ($placeholders) x scalar @$values; |
| 605 |
$dbh->do( $query, undef, @all_rows_values ); |
| 606 |
} |
| 607 |
for my $statement ( @{ $yaml->{'sql_statements'} } ) { # extra SQL statements |
| 608 |
$dbh->do($statement); |
| 609 |
} |
641 |
} |
| 610 |
}; |
642 |
}; |
| 611 |
} |
643 |
} |