X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FUser.pm;h=a267fcd6f55afc73e020f047002672af858d7317;hb=ebc23a03b49e640a64d1b5b2c792c0bd01e6c93c;hp=daa0239694f0d21c11881bd93a3faa7e670a6103;hpb=0e43d3cfea2cfdb938490c8221048b235f754fd3;p=kivitendo-erp.git diff --git a/SL/User.pm b/SL/User.pm index daa023969..a267fcd6f 100644 --- a/SL/User.pm +++ b/SL/User.pm @@ -48,6 +48,12 @@ use SL::System::InstallationLock; use strict; +use constant LOGIN_OK => 0; +use constant LOGIN_BASIC_TABLES_MISSING => -1; +use constant LOGIN_DBUPDATE_AVAILABLE => -2; +use constant LOGIN_AUTH_DBUPDATE_AVAILABLE => -3; +use constant LOGIN_GENERAL_ERROR => -4; + sub new { $main::lxdebug->enter_sub(); @@ -96,28 +102,31 @@ sub country_codes { sub login { my ($self, $form) = @_; - return -3 if !$self->{login} || !$::auth->client; + return LOGIN_GENERAL_ERROR() if !$self->{login} || !$::auth->client; my %myconfig = $main::auth->read_user(login => $self->{login}); + # Auth DB upgrades available? + my $dbupdater_auth = SL::DBUpgrade2->new(form => $form, auth => 1)->parse_dbupdate_controls; + return LOGIN_AUTH_DBUPDATE_AVAILABLE() if $dbupdater_auth->unapplied_upgrade_scripts($::auth->dbconnect); + # check if database is down my $dbh = $form->dbconnect_noauto; # we got a connection, check the version my ($dbversion) = $dbh->selectrow_array(qq|SELECT version FROM defaults|); + if (!$dbversion) { + $dbh->disconnect; + return LOGIN_BASIC_TABLES_MISSING(); + } $self->create_schema_info_table($form, $dbh); - # Auth DB upgrades available? - my $dbupdater_auth = SL::DBUpgrade2->new(form => $form, auth => 1)->parse_dbupdate_controls; - return -3 if $dbupdater_auth->unapplied_upgrade_scripts($::auth->dbconnect); - - my $dbupdater = SL::DBUpgrade2->new(form => $form)->parse_dbupdate_controls; - + my $dbupdater = SL::DBUpgrade2->new(form => $form)->parse_dbupdate_controls; my $update_available = $dbupdater->update2_available($dbh); $dbh->disconnect; - return 0 if !$update_available; + return LOGIN_OK() if !$update_available; $form->{$_} = $::auth->client->{$_} for qw(dbname dbhost dbport dbuser dbpasswd); $form->{$_} = $myconfig{$_} for qw(datestyle); @@ -141,13 +150,12 @@ sub login { $SIG{QUIT} = 'IGNORE'; $self->dbupdate2(form => $form, updater => $dbupdater, database => $::auth->client->{dbname}); - SL::DBUpgrade2->new(form => $::form, auth => 1)->apply_admin_dbupgrade_scripts(0); SL::System::InstallationLock->unlock; print $form->parse_html_template("dbupgrade/footer"); - return -2; + return LOGIN_DBUPDATE_AVAILABLE(); } sub dbconnect_vars { @@ -264,7 +272,7 @@ sub dbcreate { # load chart of accounts $dbupdater->process_query($dbh, "sql/$form->{chart}-chart.sql"); - my $query = qq|UPDATE defaults SET coa = ?, accounting_method = ?, profit_determination = ?, inventory_system = ?, curr = ?|; + $query = qq|UPDATE defaults SET coa = ?, accounting_method = ?, profit_determination = ?, inventory_system = ?, curr = ?|; do_query($form, $dbh, $query, map { $form->{$_} } qw(chart accounting_method profit_determination inventory_system defaultcurrency)); $dbh->disconnect; @@ -289,27 +297,6 @@ sub dbdelete { $main::lxdebug->leave_sub(); } -sub dbsources_unused { - $main::lxdebug->enter_sub(); - - my ($self, $form) = @_; - - my %dbexcl = map { $_->dbname => 1 } - grep { ($_->dbhost eq $form->{dbhost}) && ($_->dbport eq $form->{dbport}) } - @{ SL::DB::Manager::AuthClient->get_all }; - - $form->{only_acc_db} = 1; - - $dbexcl{$form->{dbdefault}} = 1; - $dbexcl{$main::auth->{DB_config}->{db}} = 1; - - my @dbunused = grep { !$dbexcl{$_} } dbsources("", $form); - - $main::lxdebug->leave_sub(); - - return @dbunused; -} - sub calc_version { $main::lxdebug->enter_sub(2); @@ -332,7 +319,7 @@ sub calc_version { sub cmp_script_version { my ($a_from, $a_to, $b_from, $b_to); my ($i, $res_a, $res_b); - my ($my_a, $my_b) = ($a, $b); + my ($my_a, $my_b) = do { no warnings 'once'; ($a, $b) }; $my_a =~ s/.*-upgrade-//; $my_a =~ s/.sql$//;