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

(-)a/C4/Installer.pm (-25 / +45 lines)
Lines 31-37 use vars qw(@ISA @EXPORT); Link Here
31
BEGIN {
31
BEGIN {
32
    require Exporter;
32
    require Exporter;
33
    @ISA = qw( Exporter );
33
    @ISA = qw( Exporter );
34
    push @EXPORT, qw( primary_key_exists foreign_key_exists index_exists column_exists TableExists TransformToNum CheckVersion update );
34
    push @EXPORT, qw( primary_key_exists foreign_key_exists index_exists column_exists TableExists TransformToNum CheckVersion update get_db_entries );
35
};
35
};
36
36
37
=head1 NAME
37
=head1 NAME
Lines 684-726 sub TableExists { # Could be renamed table_exists for consistency Link Here
684
    return 0;
684
    return 0;
685
}
685
}
686
686
687
sub execute_entry {
687
sub version_from_module {
688
    my ( $DBversion, $bug_number, $description, $sub ) = @_;
688
    my $module = shift;
689
    return unless $module =~ m|^(\d{2})(\d{2})(\d{2})(\d{3})$|;
690
    return sprintf "%s.%s.%s.%s", $1, $2, $3, $4;
691
}
692
sub get_db_entries {
693
    my $DBRev_dir = C4::Context->config('intranetdir') . '/Koha/Installer/DBRev';
694
    opendir my $dh, $DBRev_dir or die "Cannot open $DBRev_dir dir ($!)";
695
    my @db_revs = sort map { s|\.pm$||; $_ } grep { ! /^\./ } readdir $dh;
696
    my @need_update;
697
    for my $db_rev ( @db_revs ) {
698
        my $version = version_from_module( $db_rev );
699
700
        unless ( $version ) {
701
            warn "Invalid db_rev found: " . $db_rev;
702
            next
703
        }
689
704
690
    my $error;
705
        next unless CheckVersion( $version );
691
    try {
692
        Koha::Database->schema->txn_do($sub);
693
    } catch {
694
        $error = $_;
695
    };
696
706
697
    return $error;
707
        push @need_update, $db_rev;
708
    }
709
    return \@need_update;
698
}
710
}
699
711
712
use Module::Load::Conditional qw(can_load);
713
700
sub update {
714
sub update {
701
    my ( $db_entries ) = @_;
715
    my ( $modules ) = @_;
702
716
703
    my ( @done, @errors );
717
    my ( @done, @errors );
704
    for my $db_entry ( @$db_entries ) {
718
    for my $module_name ( @$modules ) {
705
719
706
        my $version = $db_entry->{version};
720
        my $module = "Koha::Installer::DBRev::$module_name";
707
        next unless CheckVersion( $version );
721
        die "cannot load $module" unless can_load( modules => { $module => undef }, verbose => 1 );
708
722
709
        my $error = execute_entry(
723
        my $error;
710
            $version,
724
        try {
711
            $db_entry->{bug_number},
725
            $module->update();
712
            $db_entry->{description},
726
        } catch {
713
            $db_entry->{sub}
727
            $error = $_;
714
        );
728
        };
715
729
716
        $db_entry->{time} = POSIX::strftime("%H:%M:%S",localtime);
730
        my $db_entry = {
731
            bug_number  => $module->bug_number,
732
            description => $module->description,
733
            version     => version_from_module($module_name),
734
            time        => POSIX::strftime( "%H:%M:%S", localtime ),
735
        };
717
        $db_entry->{output} = output_version( { %$db_entry, done => !$error } );
736
        $db_entry->{output} = output_version( { %$db_entry, done => !$error } );
737
718
        if ( $error ) {
738
        if ( $error ) {
719
            push @errors, { %$db_entry, error => $error };
739
            push @errors, { %$db_entry, error => $error };
720
            last; # We stop the update if an error occurred!
740
            last; # We stop the update if an error occurred!
721
        }
741
        }
722
742
723
        SetVersion($version);
743
        SetVersion($db_entry->{version});
724
        push @done, $db_entry;
744
        push @done, $db_entry;
725
    }
745
    }
726
    return { success => \@done, error => \@errors };
746
    return { success => \@done, error => \@errors };
(-)a/Koha/Installer/DBRev/201200000.pm (+13 lines)
Line 0 Link Here
1
package Koha::Installer::DBRev::201200000;
2
3
sub update {
4
}
5
6
sub bug_number {
7
}
8
9
sub description {
10
    q{Sorry, this is my first life, I am still learning!};
11
}
12
13
1;
(-)a/Koha/Installer/DBRev/201200001.pm (+22 lines)
Line 0 Link Here
1
package Koha::Installer::DBRev::201200001;
2
3
use C4::Context;
4
5
sub update {
6
    my $dbh = C4::Context->dbh;
7
8
    $dbh->do(
9
            q{
10
        INSERT IGNORE INTO systempreferences ( `variable`, `value`, `options`, `explanation`, `type` ) VALUES
11
       ('ElasticsearchCrossFields', '1', '', 'Enable "cross_fields" option for searches using Elastic search.', 'YesNo')
12
        }
13
    );
14
15
}
16
17
sub bug_number { 27252 }
18
sub description {
19
    q{Add ElasticsearchCrossFields system preference};
20
}
21
22
1;
(-)a/Koha/Installer/DBRev/201200002.pm (+19 lines)
Line 0 Link Here
1
package Koha::Installer::DBRev::201200002;
2
3
use C4::Context;
4
5
sub update {
6
    my $dbh = C4::Context->dbh;
7
8
    $dbh->do(
9
        q{UPDATE systempreferences SET `type` = 'Choice' WHERE `variable` = 'UsageStatsCountry'}
10
    );
11
12
}
13
14
sub bug_number { 27251 }
15
sub description {
16
    q{Set type for UsageStatsCountry to Choice}
17
}
18
19
1;
(-)a/Koha/Installer/DBRev/201200003.pm (+19 lines)
Line 0 Link Here
1
package Koha::Installer::DBRev::201200003;
2
3
use C4::Context;
4
5
sub update {
6
    my $dbh = C4::Context->dbh;
7
8
    $dbh->do(
9
        q{UPDATE systempreferences SET `type` = 'Choice' WHERE `variable` = 'Mana'}
10
    );
11
12
}
13
14
sub bug_number { 27349 }
15
sub description {
16
    q{Update type for Mana system preference to Choice};
17
}
18
19
1;
(-)a/Koha/Installer/DBRev/201200004.pm (+19 lines)
Line 0 Link Here
1
package Koha::Installer::DBRev::201200004;
2
3
use C4::Context;
4
5
sub update {
6
    my $dbh = C4::Context->dbh;
7
8
    $dbh->do(
9
        q{UPDATE systempreferences set variable="TaxRates" WHERE variable="gist"}
10
    );
11
12
}
13
14
sub bug_number { 27485 }
15
sub description {
16
    q{Rename system preference 'gist' to 'TaxRates'};
17
}
18
19
1;
(-)a/Koha/Installer/DBRev/201200005.pm (+19 lines)
Line 0 Link Here
1
package Koha::Installer::DBRev::201200005;
2
3
use C4::Context;
4
5
sub update {
6
    my $dbh = C4::Context->dbh;
7
8
    $dbh->do(
9
        q{UPDATE systempreferences set variable="OPACLanguages" WHERE variable="opaclanguages"}
10
    );
11
12
}
13
14
sub bug_number { 27491 }
15
sub description {
16
    q{Rename system preference 'opaclanguages' to 'OPACLanguages'};
17
}
18
19
1;
(-)a/Koha/Installer/DBRev/201200006.pm (+19 lines)
Line 0 Link Here
1
package Koha::Installer::DBRev::201200006;
2
3
use C4::Context;
4
5
sub update {
6
    my $dbh = C4::Context->dbh;
7
8
    $dbh->do(
9
        q{UPDATE systempreferences SET variable="OPACComments" WHERE variable="reviewson" }
10
    );
11
12
}
13
14
sub bug_number { 27487 }
15
sub description {
16
    q{Rename system preference 'reviewson' to 'OPACComments'};
17
}
18
19
1;
(-)a/Koha/Installer/DBRev/201200007.pm (+19 lines)
Line 0 Link Here
1
package Koha::Installer::DBRev::201200007;
2
3
use C4::Context;
4
5
sub update {
6
    my $dbh = C4::Context->dbh;
7
8
    $dbh->do(
9
        q{UPDATE systempreferences set variable="CSVDelimiter" WHERE variable="delimiter"}
10
    );
11
12
}
13
14
sub bug_number { 27486 }
15
sub description {
16
    q{Renaming system preference 'delimiter' to 'CSVDelimiter'};
17
}
18
19
1;
(-)a/Koha/Installer/DBRev/201200008.pm (+21 lines)
Line 0 Link Here
1
package Koha::Installer::DBRev::201200008;
2
3
use C4::Context;
4
5
sub update {
6
    my $dbh = C4::Context->dbh;
7
8
    $dbh->do(q{
9
        UPDATE systempreferences
10
        SET options = "claim_returned|batchmod|moredetail|cronjob|additem|pendingreserves|onpayment"
11
                WHERE variable = "MarkLostItemsAsReturned";
12
    });
13
14
}
15
16
sub bug_number { 25552 }
17
sub description {
18
    q{Add missing Claims Returned option to MarkLostItemsAsReturned};
19
}
20
21
1;
(-)a/Koha/Installer/DBRev/201200009.pm (+17 lines)
Line 0 Link Here
1
package Koha::Installer::DBRev::201200009;
2
3
use C4::Context;
4
5
sub update {
6
    my $dbh = C4::Context->dbh;
7
8
    $dbh->do(q{ALTER TABLE Foo});
9
10
}
11
12
sub bug_number { 42424 }
13
sub description {
14
    q{Testing failure};
15
}
16
17
1;
(-)a/installer/data/mysql/updatedatabase.pl (-107 / +2 lines)
Lines 23421-23534 if( CheckVersion( $DBversion ) ) { Link Here
23421
    NewVersion( $DBversion, "", "Koha 20.11.00 release" );
23421
    NewVersion( $DBversion, "", "Koha 20.11.00 release" );
23422
}
23422
}
23423
23423
23424
our $db_entries = [
23425
    {
23426
        version     => '20.12.00.000',
23427
        bug_number  => undef,
23428
        description => "Sorry, this is my first life, I am still learning!",
23429
    },
23430
    {
23431
        version     => '20.12.00.001',
23432
        bug_number  => 27252,
23433
        description => "Add ElasticsearchCrossFields system preference",
23434
        sub         => sub {
23435
            $dbh->do(
23436
                q{
23437
        INSERT IGNORE INTO systempreferences ( `variable`, `value`, `options`, `explanation`, `type` ) VALUES
23438
       ('ElasticsearchCrossFields', '1', '', 'Enable "cross_fields" option for searches using Elastic search.', 'YesNo')
23439
    }
23440
            );
23441
        }
23442
    },
23443
    {
23444
        version     => '20.12.00.002',
23445
        bug_number  => 27351,
23446
        description => "Set type for UsageStatsCountry to Choice",
23447
        sub         => sub {
23448
            $dbh->do(
23449
q{UPDATE systempreferences SET `type` = 'Choice' WHERE `variable` = 'UsageStatsCountry'}
23450
            );
23451
        }
23452
    },
23453
    {
23454
        version     => '20.12.00.003',
23455
        bug_number  => 27349,
23456
        description => "Update type for Mana system preference to Choice",
23457
        sub         => sub {
23458
            $dbh->do(
23459
q{UPDATE systempreferences SET `type` = 'Choice' WHERE `variable` = 'Mana'}
23460
            );
23461
        }
23462
    },
23463
    {
23464
        version     => '20.12.00.004',
23465
        bug_number  => 27485,
23466
        description => "Rename system preference 'gist' to 'TaxRates'",
23467
        sub         => sub {
23468
            $dbh->do(
23469
q{UPDATE systempreferences set variable="TaxRates" WHERE variable="gist"}
23470
            );
23471
        },
23472
    },
23473
23474
    {
23475
        version    => '20.12.00.005',
23476
        bug_number => 27491,
23477
        description => "Rename system preference 'opaclanguages' to 'OPACLanguages'",
23478
        sub => sub {
23479
            $dbh->do(
23480
q{UPDATE systempreferences set variable="OPACLanguages" WHERE variable="opaclanguages"}
23481
            );
23482
        }
23483
    },
23484
    {
23485
        version    => '20.12.00.006',
23486
        bug_number => 27487,
23487
        description => "Rename system preference 'reviewson' to 'OPACComments'",
23488
        sub => sub {
23489
            $dbh->do(
23490
                q{UPDATE systempreferences SET variable="OPACComments" WHERE variable="reviewson" }
23491
            );
23492
        }
23493
    },
23494
    {
23495
        version    => '20.12.00.007',
23496
        bug_number => 27486,
23497
        description => "Renaming system preference 'delimiter' to 'CSVDelimiter'",
23498
        sub => sub {
23499
            $dbh->do(
23500
                q{UPDATE systempreferences set variable="CSVDelimiter" WHERE variable="delimiter"}
23501
            );
23502
        }
23503
    },
23504
    {
23505
        version    => '20.12.00.008',
23506
        bug_number => 25552,
23507
        description => "Add missing Claims Returned option to MarkLostItemsAsReturned",
23508
        sub => sub {
23509
            $dbh->do(q{
23510
                UPDATE systempreferences
23511
                SET options = "claim_returned|batchmod|moredetail|cronjob|additem|pendingreserves|onpayment"
23512
                WHERE variable = "MarkLostItemsAsReturned";
23513
                });
23514
        }
23515
    },
23516
    {
23517
        version     => '20.12.00.009',
23518
        bug_number  => 42424,
23519
        description => "Testing failure",
23520
        sub         => sub {
23521
            $dbh->do(q{ALTER TABLE foo});
23522
        }
23523
    },
23524
23525
];
23526
23527
23528
sub get_db_entries { return $db_entries; }
23529
23530
unless ( $ENV{HTTP_HOST} ) { # Is that correct?
23424
unless ( $ENV{HTTP_HOST} ) { # Is that correct?
23531
    my $report = update( $db_entries );
23425
    my $modules = C4::Installer::get_db_entries;
23426
    my $report = update( $modules );
23532
23427
23533
    for my $s ( @{ $report->{success} } ) {
23428
    for my $s ( @{ $report->{success} } ) {
23534
        say $s->{output};
23429
        say $s->{output};
(-)a/installer/install.pl (-1 lines)
Lines 397-403 elsif ( $step && $step == 3 ) { Link Here
397
        my $updatedatabase_path = C4::Context->config("intranetdir")
397
        my $updatedatabase_path = C4::Context->config("intranetdir")
398
          . "/installer/data/$info{dbms}/updatedatabase.pl";
398
          . "/installer/data/$info{dbms}/updatedatabase.pl";
399
399
400
        eval { require $updatedatabase_path };
401
        my $db_entries = get_db_entries();
400
        my $db_entries = get_db_entries();
402
        my $report = update( $db_entries );
401
        my $report = update( $db_entries );
403
402
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/installer/step3.tt (-2 / +3 lines)
Lines 270-277 Link Here
270
                    [% END %]
270
                    [% END %]
271
                    [% UNLESS error %]
271
                    [% UNLESS error %]
272
                        <p>Everything went okay. Update done.</p>
272
                        <p>Everything went okay. Update done.</p>
273
                        <p><a href="install.pl?step=3&amp;op=finished" class="btn btn-primary">Continue to log in to Koha</a></p>
274
                    [% ELSE %]
275
                        <p><a href="install.pl?step=3&amp;op=updatestructure" class="btn btn-primary">Try again</a></p>
273
                    [% END %]
276
                    [% END %]
274
                    <p><a href="install.pl?step=3&amp;op=finished" class="btn btn-primary">Continue to log in to Koha</a></p>
275
               [% END # / IF updatestructure %]
277
               [% END # / IF updatestructure %]
276
            </div> <!-- / #installer-step3 -->
278
            </div> <!-- / #installer-step3 -->
277
        </div> <!-- / .row -->
279
        </div> <!-- / .row -->
278
- 

Return to bug 25078