Fixed bug. (from r1005)
[kivitendo-erp.git] / SL / User.pm
index f989e86..c35ff0e 100644 (file)
@@ -162,7 +162,7 @@ sub login {
 
     $rc = 0;
 
-    if ($form->{dbversion} ne $dbversion) {
+    if (&update_available($dbversion)) {
 
       # update the tables
       open FH, ">$userspath/nologin" or die "
@@ -432,9 +432,11 @@ sub process_query {
 
           $sth = $dbh->prepare($query);
           if (!$sth->execute()) {
+            my $errstr = $dbh->errstr;
             $sth->finish();
             $dbh->rollback();
             $form->dberror("The database update/creation did not succeed. The file ${filename} containing the following query failed:<br>${query}<br>" .
+                           "The error message was: ${errstr}<br>" .
                            "All changes in that file have been reverted.");
           }
           $sth->finish();
@@ -652,6 +654,16 @@ sub cmp_script_version {
 }
 ## /LINET
 
+sub update_available {
+  ($cur_version) = @_;
+    opendir SQLDIR, "sql/." or &error("", "$!");
+    my @upgradescripts = 
+      grep(/$form->{dbdriver}-upgrade-$cur_version.*\.sql/, readdir(SQLDIR));
+    closedir SQLDIR;
+    
+    return ($#upgradescripts > -1);
+}
+
 sub dbupdate {
   $main::lxdebug->enter_sub();