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

(-)a/C4/Update/Database.pm (-9 / +13 lines)
Lines 431-437 sub md5_already_exists { Link Here
431
=cut
431
=cut
432
sub set_infos {
432
sub set_infos {
433
    my ( $version, $queries, $errors, $md5 ) = @_;
433
    my ( $version, $queries, $errors, $md5 ) = @_;
434
    #SetVersion($DBversion) if not -s $errors;
434
    SetVersion($version) if not -s $errors;
435
    for my $query ( @{ $queries->{queries} } ) {
435
    for my $query ( @{ $queries->{queries} } ) {
436
        my $sth = $dbh->prepare("INSERT INTO updatedb_query(version, query) VALUES (?, ?)");
436
        my $sth = $dbh->prepare("INSERT INTO updatedb_query(version, query) VALUES (?, ?)");
437
        $sth->execute( $version, $query );
437
        $sth->execute( $version, $query );
Lines 516-530 sub TransformToNum { Link Here
516
}
516
}
517
517
518
sub SetVersion {
518
sub SetVersion {
519
    my $kohaversion = TransformToNum(shift);
519
    my $new_version = TransformToNum(shift);
520
    if ( C4::Context->preference('Version') ) {
520
    my $current_version = TransformToNum( C4::Context->preference('Version') );
521
    unless ( C4::Context->preference('Version') ) {
522
        my $finish = $dbh->prepare(qq{
523
            INSERT IGNORE INTO systempreferences (variable,value,explanation)
524
            VALUES ('Version',?,'The Koha database version. WARNING: Do not change this value manually, it is maintained by the webinstaller')
525
        });
526
        $finish->execute($new_version);
527
        return;
528
    }
529
    if ( $new_version > $current_version ) {
521
        my $finish = $dbh->prepare("UPDATE systempreferences SET value=? WHERE variable='Version'");
530
        my $finish = $dbh->prepare("UPDATE systempreferences SET value=? WHERE variable='Version'");
522
        $finish->execute($kohaversion);
531
        $finish->execute($new_version);
523
    } else {
524
        my $finish = $dbh->prepare(
525
"INSERT IGNORE INTO systempreferences (variable,value,explanation) values ('Version',?,'The Koha database version. WARNING: Do not change this value manually, it is maintained by the webinstaller')"
526
        );
527
        $finish->execute($kohaversion);
528
    }
532
    }
529
}
533
}
530
534
(-)a/installer/data/mysql/update.pl (-3 / +58 lines)
Lines 4-20 use C4::Context; Link Here
4
use C4::Update::Database;
4
use C4::Update::Database;
5
use Getopt::Long;
5
use Getopt::Long;
6
6
7
7
my $help;
8
my $version;
8
my $version;
9
my $list;
9
my $list;
10
my $all;
11
my $min;
10
12
11
GetOptions(
13
GetOptions(
12
    'm:s' => \$version,
14
    'h|help|?'     => \$help,
13
    'l'   => \$list,
15
    'm:s'   => \$version,
16
    'l|list'     => \$list,
17
    'a|all'   => \$all,
18
    'min:s' => \$min,
14
);
19
);
15
20
21
if ( $help or not ($version or $list or $all) ) {
22
    usage();
23
    exit;
24
}
25
26
my @reports;
16
if ( $version ) {
27
if ( $version ) {
17
    my $report = C4::Update::Database::execute_version($version);
28
    my $report = C4::Update::Database::execute_version($version);
29
    push @reports, $report;
18
}
30
}
19
31
20
if ( $list ) {
32
if ( $list ) {
Lines 26-28 if ( $list ) { Link Here
26
    say "\t- $$_{version}" for @$versions;
38
    say "\t- $$_{version}" for @$versions;
27
39
28
}
40
}
41
42
if ( $all ) {
43
    my $versions_availables = C4::Update::Database::list_versions_availables();
44
    my $versions = C4::Update::Database::list_versions_already_knows;
45
    my $min_version = $min
46
        ? $min =~ m/\d\.\d{2}\.\d{2}\.\d{3}/
47
            ? C4::Update::Database::TransformToNum( $min )
48
            : $min
49
        : 0;
50
51
    for my $v ( @$versions_availables ) {
52
        if ( not grep { $v eq $$_{version} } @$versions
53
             and C4::Update::Database::TransformToNum( $v ) >= $min_version
54
        ) {
55
            my $report = C4::Update::Database::execute_version $v;
56
            push @reports, $report;
57
        }
58
    }
59
}
60
61
if ( $version or $all ) {
62
    say "Report:";
63
    for my $report ( @reports ) {
64
        my ( $v, $r ) = each %$report;
65
        if ( ref( $r ) eq 'HASH' ) {
66
            say "\t$v => $r->{error}";
67
        } else {
68
            say "\t$v => $r";
69
        }
70
    }
71
}
72
73
sub usage {
74
    say "update.pl";
75
    say "This script updates your database for you";
76
    say "Usage:";
77
    say "\t-h\tShow this help message";
78
    say "\t-m\tExecute a given version";
79
    say "\t-l\tList all the versions";
80
    say "\t-all\tExecute all available versions";
81
    say "\t-min\tWith -all, Execute all available versions since a given version";
82
    say "\t\tCan be X.XX.XX.XXX or X.XXXXXXX";
83
}
(-)a/installer/install.pl (-12 / +27 lines)
Lines 321-339 elsif ( $step && $step == 3 ) { Link Here
321
        warn "# plack? inserted PERL5LIB $ENV{PERL5LIB}\n";
321
        warn "# plack? inserted PERL5LIB $ENV{PERL5LIB}\n";
322
    }
322
    }
323
323
324
        my $cmd = C4::Context->config("intranetdir") . "/installer/data/$info{dbms}/updatedatabase.pl";
324
        my $koha39 =~ "3.0900000";
325
        my ($success, $error_code, $full_buf, $stdout_buf, $stderr_buf) = IPC::Cmd::run(command => $cmd, verbose => 0);
325
        my $cmd;
326
        # Old updatedatabase method
327
        my $current_version = C4::Context->preference('Version');
328
        if ( $current_version < $koha39 ) {
329
            $cmd = C4::Context->config("intranetdir") . "/installer/data/$info{dbms}/updatedatabase.pl";
330
            my ($success, $error_code, $full_buf, $stdout_buf, $stderr_buf) = IPC::Cmd::run(command => $cmd, verbose => 0);
331
            print_std( "updatedatabase.pl", $stdout_buf, $stderr_buf );
326
332
327
        if (@$stdout_buf) {
328
            $template->param(update_report => [ map { { line => $_ } } split(/\n/, join('', @$stdout_buf)) ] );
329
            $template->param(has_update_succeeds => 1);
330
        }
331
        if (@$stderr_buf) {
332
            $template->param(update_errors => [ map { { line => $_ } } split(/\n/, join('', @$stderr_buf)) ] );
333
            $template->param(has_update_errors => 1);
334
            warn "The following errors were returned while attempting to run the updatedatabase.pl script:\n";
335
            foreach my $line (@$stderr_buf) {warn "$line\n";}
336
        }
333
        }
334
        $cmd = C4::Context->config("intranetdir") . "/installer/data/$info{dbms}/update.pl -all -min=$current_version";
335
        my ($success, $error_code, $full_buf, $stdout_buf, $stderr_buf) = IPC::Cmd::run(command => $cmd, verbose => 0);
336
        print_std( "update.pl", $stdout_buf, $stderr_buf );
337
337
338
        $template->param( $op => 1 );
338
        $template->param( $op => 1 );
339
    }
339
    }
Lines 406-409 else { Link Here
406
        }
406
        }
407
    }
407
    }
408
}
408
}
409
410
sub print_std {
411
    my ( $script, $stdout_buf, $stderr_buf ) = @_;
412
    if (@$stdout_buf) {
413
        $template->param(update_report => [ map { { line => $_ } } split(/\n/, join('', @$stdout_buf)) ] );
414
        $template->param(has_update_succeeds => 1);
415
    }
416
    if (@$stderr_buf) {
417
        $template->param(update_errors => [ map { { line => $_ } } split(/\n/, join('', @$stderr_buf)) ] );
418
        $template->param(has_update_errors => 1);
419
        warn "The following errors were returned while attempting to run the $script script:\n";
420
        foreach my $line (@$stderr_buf) {warn "$line\n";}
421
    }
422
}
423
424
409
output_html_with_http_headers $query, $cookie, $template->output;
425
output_html_with_http_headers $query, $cookie, $template->output;
410
- 

Return to bug 7167