View | Details | Raw Unified | Return to bug 10509
Collapse All | Expand All

(-)a/C4/Installer.pm (-17 / +49 lines)
Lines 35-41 C4::Installer Link Here
35
 my $all_languages = getAllLanguages();
35
 my $all_languages = getAllLanguages();
36
 my $error = $installer->load_db_schema();
36
 my $error = $installer->load_db_schema();
37
 my $list = $installer->sql_file_list('en', 'marc21', { optional => 1, mandatory => 1 });
37
 my $list = $installer->sql_file_list('en', 'marc21', { optional => 1, mandatory => 1 });
38
 my ($fwk_language, $error_list) = $installer->load_sql_in_order($all_languages, @$list);
38
 my ($fwk_language, $error_list) = $installer->load_sql_in_order(@$list);
39
 $installer->set_version_syspref();
39
 $installer->set_version_syspref();
40
 $installer->set_marcflavour_syspref('MARC21');
40
 $installer->set_marcflavour_syspref('MARC21');
41
41
Lines 173-178 sub marc_framework_sql_list { Link Here
173
173
174
        $cell{"frameworks"} = \@fwks;
174
        $cell{"frameworks"} = \@fwks;
175
        $cell{"label"}      = ucfirst($requirelevel);
175
        $cell{"label"}      = ucfirst($requirelevel);
176
        $cell{label}        =~ s/\.i18n$//; # remove extension from label
176
        $cell{"code"}       = lc($requirelevel);
177
        $cell{"code"}       = lc($requirelevel);
177
        push @fwklist, \%cell;
178
        push @fwklist, \%cell;
178
    }
179
    }
Lines 250-255 sub sample_data_sql_list { Link Here
250
251
251
        $cell{"frameworks"} = \@fwks;
252
        $cell{"frameworks"} = \@fwks;
252
        $cell{"label"}      = ucfirst($requirelevel);
253
        $cell{"label"}      = ucfirst($requirelevel);
254
        $cell{label}        =~ s/\.i18n$//; # remove extension from label
253
        $cell{"code"}       = lc($requirelevel);
255
        $cell{"code"}       = lc($requirelevel);
254
        push @levellist, \%cell;
256
        push @levellist, \%cell;
255
    }
257
    }
Lines 313-319 sub load_db_schema { Link Here
313
315
314
=head2 load_sql_in_order
316
=head2 load_sql_in_order
315
317
316
  my ($fwk_language, $list) = $installer->load_sql_in_order($all_languages, @sql_list);
318
  my ($list) = $installer->load_sql_in_order(@sql_list);
317
319
318
Given a list of SQL scripts supplied in C<@sql_list>, loads each of them
320
Given a list of SQL scripts supplied in C<@sql_list>, loads each of them
319
into the database and sets the FrameworksLoaded system preference to names
321
into the database and sets the FrameworksLoaded system preference to names
Lines 332-345 The return value C<$list> is an arrayref containing a hashref for each Link Here
332
a list of hashrefs containing a list of each script load and any error
334
a list of hashrefs containing a list of each script load and any error
333
messages associated with the loading of each script.
335
messages associated with the loading of each script.
334
336
335
B<FIXME:> The C<$fwk_language> code probably doesn't belong and needs to be
336
moved to a different method.
337
338
=cut
337
=cut
339
338
340
sub load_sql_in_order {
339
sub load_sql_in_order {
341
    my $self = shift;
340
    my $self = shift;
342
    my $all_languages = shift;
343
    my @sql_list = @_;
341
    my @sql_list = @_;
344
342
345
    my $lang;
343
    my $lang;
Lines 377-391 sub load_sql_in_order { Link Here
377
    chop $systempreference;
375
    chop $systempreference;
378
    my @list;
376
    my @list;
379
    map { push @list, { "level" => $_, "fwklist" => $hashlevel{$_} } } keys %hashlevel;
377
    map { push @list, { "level" => $_, "fwklist" => $hashlevel{$_} } } keys %hashlevel;
380
    my $fwk_language;
381
    for my $each_language (@$all_languages) {
382
383
        #       warn "CODE".$each_language->{'language_code'};
384
        #       warn "LANG:".$lang;
385
        if ( $lang eq $each_language->{'language_code'} ) {
386
            $fwk_language = $each_language->{language_locale_name};
387
        }
388
    }
389
    my $updateflag =
378
    my $updateflag =
390
      $self->{'dbh'}->do(
379
      $self->{'dbh'}->do(
391
        "UPDATE systempreferences set value=\"$systempreference\" where variable='FrameworksLoaded'"
380
        "UPDATE systempreferences set value=\"$systempreference\" where variable='FrameworksLoaded'"
Lines 397-403 sub load_sql_in_order { Link Here
397
        my $rq = $self->{'dbh'}->prepare($string);
386
        my $rq = $self->{'dbh'}->prepare($string);
398
        $rq->execute;
387
        $rq->execute;
399
    }
388
    }
400
    return ($fwk_language, \@list);
389
    return \@list;
401
}
390
}
402
391
403
=head2 set_marcflavour_syspref
392
=head2 set_marcflavour_syspref
Lines 495-501 sub load_sql { Link Here
495
            . ( $self->{user}     ? " -u $self->{user} "     : "" )
484
            . ( $self->{user}     ? " -u $self->{user} "     : "" )
496
            . ( $self->{password} ? " -p'$self->{password}'"   : "" )
485
            . ( $self->{password} ? " -p'$self->{password}'"   : "" )
497
            . " $self->{dbname} ";
486
            . " $self->{dbname} ";
498
        $error = qx($strcmd --default-character-set=utf8 <$filename 2>&1 1>/dev/null);
487
        $error = _run_mysql_file($strcmd, $filename);
499
    } elsif ( $self->{dbms} eq 'Pg' ) {
488
    } elsif ( $self->{dbms} eq 'Pg' ) {
500
        $cmd = qx(which psql 2>/dev/null || whereis psql 2>/dev/null);
489
        $cmd = qx(which psql 2>/dev/null || whereis psql 2>/dev/null);
501
        chomp $cmd;
490
        chomp $cmd;
Lines 520-525 sub load_sql { Link Here
520
    return $error;
509
    return $error;
521
}
510
}
522
511
512
sub _run_mysql_file {
513
    my ($cmd, $filename) = @_;
514
    my $i18n_drop='DROP FUNCTION IF EXISTS i18n;';
515
    my $i18n_fake='CREATE FUNCTION i18n (d text) '.
516
        'RETURNS text DETERMINISTIC RETURN d;';
517
    my $utf8= '--default-character-set=utf8';
518
    my $error='';
519
    if( $filename =~ /installer\/data\/mysql\/en\//i ||
520
            $filename !~ /\.i18n\/[^\/]+\.sql$/i ) { #en or old style
521
        $error= qx($cmd $utf8 -e '$i18n_drop $i18n_fake' 2>&1 1>/dev/null);
522
            #make sure i18n does not translate
523
        $error.= qx($cmd $utf8 <$filename 2>&1 1>/dev/null);
524
            #run sql with inserts
525
    }
526
    else { #new i18n style: redefine i18n function and run english insert
527
        foreach my $f ($filename, _tr_sql_fname($filename) ) {
528
            $error.= qx($cmd $utf8 <$f 2>&1 1>/dev/null);
529
        }
530
    }
531
    return $error;
532
}
533
534
sub _tr_sql_fname {
535
    #Convert native name to English equivalent
536
    #Translating subfolder names is still needed
537
    my $file= shift;
538
    $file=~ s/\.i18n(\/[^\/]+)$/$1/; #strip i18n from last subfolder
539
    $file=~ s/(?<=installer\/data\/mysql\/)[^\/]+/en/;
540
        #paranoid lookbehind or just being cautious :) change language to en
541
    my $trans= { '1-obligatoire' => 'mandatory', '2-optionel' => 'optional',
542
        'obligatoire' => 'mandatory', 'optionel' => 'optional',
543
        '1-obligatorisk' => 'mandatory', '2-valgfritt' => 'optional',
544
        'obligatorisk' => 'mandatory', 'valgfritt' => 'optional',
545
        'necessari' => 'mandatory', 'opzionali' => 'optional',
546
    };
547
    foreach my $sub (keys %$trans) {
548
        my $t=$trans->{lc $sub};
549
        $file=~ s/(installer\/data\/mysql\/.*)\/$sub\//$1\/$t\//gi;
550
            #again ensure that we are only in last part of path
551
    }
552
    return $file;
553
}
554
523
=head2 get_file_path_from_name
555
=head2 get_file_path_from_name
524
556
525
  my $filename = $installer->get_file_path_from_name('script_name');
557
  my $filename = $installer->get_file_path_from_name('script_name');
(-)a/installer/install.pl (-11 / +4 lines)
Lines 18-31 my $query = new CGI; Link Here
18
my $step  = $query->param('step');
18
my $step  = $query->param('step');
19
19
20
my $language = $query->param('language');
20
my $language = $query->param('language');
21
my ( $template, $loggedinuser, $cookie );
22
23
my $all_languages = getAllLanguages();
24
25
if ( defined($language) ) {
21
if ( defined($language) ) {
26
    C4::Templates::setlanguagecookie( $query, $language, "install.pl?step=1" );
22
    C4::Templates::setlanguagecookie( $query, $language, "install.pl?step=1" );
27
}
23
}
28
( $template, $loggedinuser, $cookie ) = get_template_and_user(
24
25
my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
29
    {
26
    {
30
        template_name => "installer/step" . ( $step ? $step : 1 ) . ".tmpl",
27
        template_name => "installer/step" . ( $step ? $step : 1 ) . ".tmpl",
31
        query         => $query,
28
        query         => $query,
Lines 201-211 elsif ( $step && $step == 3 ) { Link Here
201
    # 1ST install, 3rd sub-step : insert the SQL files the user has selected
198
    # 1ST install, 3rd sub-step : insert the SQL files the user has selected
202
    #
199
    #
203
200
204
        my ($fwk_language, $list) = $installer->load_sql_in_order($all_languages, $query->param('framework'));
201
        my $list = $installer->load_sql_in_order( $query->param('framework') );
205
        $template->param(
202
        $template->param( "list" => $list );
206
            "fwklanguage" => $fwk_language,
207
            "list"        => $list
208
        );
209
        $template->param( "$op" => 1 );
203
        $template->param( "$op" => 1 );
210
    }
204
    }
211
    elsif ( $op && $op eq 'selectframeworks' ) {
205
    elsif ( $op && $op eq 'selectframeworks' ) {
212
- 

Return to bug 10509