+=head2 set_languages_syspref
+
+ $installer->set_languages_syspref();
+
+Add the installation language to 'language' and 'OPACLanguages' system preferences
+if different from 'en'
+
+=cut
+
+sub set_languages_syspref {
+ my $self = shift;
+ my $language = shift;
+
+ return if ( not $language or $language eq 'en' );
+
+ warn "UPDATE Languages";
+ # intranet
+ my $pref = $self->{'dbh'}->prepare("UPDATE systempreferences SET value=? WHERE variable='language'");
+ $pref->execute("en,$language");
+ # opac
+ $pref = $self->{'dbh'}->prepare("UPDATE systempreferences SET value=? WHERE variable='OPACLanguages'");
+ $pref->execute("en,$language");
+
+ C4::Context->clear_syspref_cache();
+}
+
+=head2 process_yml_table
+
+ my $query_info = $installer->process_yml_table($table);
+
+Analyzes a table loaded in YAML format.
+Returns the values required to build an insert statement.
+
+=cut
+
+sub process_yml_table {
+ my ($table) = @_;
+ my $table_name = ( keys %$table )[0]; # table name
+ my @rows = @{ $table->{$table_name}->{rows} }; #
+ my @columns = ( sort keys %{$rows[0]} ); # column names
+ my $fields = join ",", map{sprintf("`%s`", $_)} @columns; # idem, joined
+ my $query = "INSERT INTO $table_name ( $fields ) VALUES ";
+ my @multiline = @{ $table->{$table_name}->{'multiline'} }; # to check multiline values;
+ my $placeholders = '(' . join ( ",", map { "?" } @columns ) . ')'; # '(?,..,?)' string
+ my @values;
+ foreach my $row ( @rows ) {
+ push @values, [ map {
+ my $col = $_;
+ ( @multiline and grep { $_ eq $col } @multiline )
+ ? join "\r\n", @{$row->{$col}} # join multiline values
+ : $row->{$col};
+ } @columns ];
+ }
+ return { query => $query, placeholders => $placeholders, values => \@values };
+}
+