X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/mfinanz.git/blobdiff_plain/dbcd72edf94df04115f1844768a92a194289c5f3..38a2e7894debd7bc5787e74129f8f6f4e74ed2dc:/SL/DBUpgrade2.pm?ds=inline diff --git a/SL/DBUpgrade2.pm b/SL/DBUpgrade2.pm index 08fdd874a..c9c742c21 100644 --- a/SL/DBUpgrade2.pm +++ b/SL/DBUpgrade2.pm @@ -1,6 +1,7 @@ package SL::DBUpgrade2; use IO::File; +use List::MoreUtils qw(any); use SL::Common; use SL::Iconv; @@ -117,7 +118,7 @@ sub parse_dbupdate_controls { $::lxdebug->leave_sub(); - return \%all_controls; + return $self; } sub process_query { @@ -290,6 +291,41 @@ sub process_file { } } +sub update_available { + my ($self, $cur_version) = @_; + + local *SQLDIR; + + my $dbdriver = $self->{dbdriver}; + opendir SQLDIR, "sql/${dbdriver}-upgrade" || error("", "sql/${dbdriver}-upgrade: $!"); + my @upgradescripts = grep /${dbdriver}-upgrade-\Q$cur_version\E.*\.(sql|pl)$/, readdir SQLDIR; + closedir SQLDIR; + + return ($#upgradescripts > -1); +} + +sub update2_available { + $::lxdebug->enter_sub(); + + my ($self, $dbh) = @_; + + map { $_->{applied} = 0; } values %{ $self->{all_controls} }; + + my $sth = $dbh->prepare(qq|SELECT tag FROM | . $self->{schema} . qq|schema_info|); + if ($sth->execute) { + while (my ($tag) = $sth->fetchrow_array) { + $self->{all_controls}->{$tag}->{applied} = 1 if defined $self->{all_controls}->{$tag}; + } + } + $sth->finish(); + + my $needs_update = any { !$_->{applied} } values %{ $self->{all_controls} }; + + $::lxdebug->leave_sub(); + + return $needs_update; +} + sub _check_for_loops { my ($form, $file_name, $controls, $tag, @path) = @_;