Erlaube die Uebergabe von weiteren Parametern direkt an die HTML-Vorlage unter Umgehu...
[kivitendo-erp.git] / SL / User.pm
index a034e03..f989e86 100644 (file)
@@ -393,7 +393,7 @@ sub dbcreate {
 sub process_query {
   $main::lxdebug->enter_sub();
 
-  my ($self, $form, $dbh, $filename) = @_;
+  my ($self, $form, $dbh, $filename, $version) = @_;
 
   #  return unless (-f $filename);
 
@@ -402,6 +402,8 @@ sub process_query {
   my $sth;
   my @quote_chars;
 
+  $dbh->begin_work();
+
   while (<FH>) {
 
     # Remove DOS and Unix style line endings.
@@ -429,8 +431,13 @@ sub process_query {
           # Query is complete. Send it.
 
           $sth = $dbh->prepare($query);
-          $sth->execute || $form->dberror($query);
-          $sth->finish;
+          if (!$sth->execute()) {
+            $sth->finish();
+            $dbh->rollback();
+            $form->dberror("The database update/creation did not succeed. The file ${filename} containing the following query failed:<br>${query}<br>" .
+                           "All changes in that file have been reverted.");
+          }
+          $sth->finish();
 
           $char  = "";
           $query = "";
@@ -441,6 +448,11 @@ sub process_query {
     }
   }
 
+  if ($version) {
+    $dbh->do("UPDATE defaults SET version = " . $dbh->quote($version));
+  }
+  $dbh->commit();
+
   close FH;
 
   $main::lxdebug->leave_sub();
@@ -654,7 +666,7 @@ sub dbupdate {
   if ($form->{dbupdate}) {
 
     # read update scripts into memory
-    opendir SQLDIR, "sql/." or $form - error($!);
+    opendir SQLDIR, "sql/." or &error("", "$!");
     ## LINET
     @upgradescripts =
       sort(cmp_script_version
@@ -696,6 +708,7 @@ sub dbupdate {
       $a =~ s/^$form->{dbdriver}-upgrade-|\.sql$//g;
 
       my ($mindb, $maxdb) = split /-/, $a;
+      my $str_maxdb = $maxdb;
       ## LINET
       $mindb = calc_version($mindb);
       $maxdb = calc_version($maxdb);
@@ -707,7 +720,7 @@ sub dbupdate {
       last if ($version < $mindb);
 
       # apply upgrade
-      $self->process_query($form, $dbh, "sql/$upgradescript");
+      $self->process_query($form, $dbh, "sql/$upgradescript", $str_maxdb);
 
       $version = $maxdb;
 
@@ -839,9 +852,9 @@ sub config_vars {
 
   my @conf = qw(acs address admin businessnumber charset company countrycode
     currency dateformat dbconnect dbdriver dbhost dbport dboptions
-    dbname dbuser dbpasswd email fax name numberformat password
+    dbname dbuser dbpasswd email fax name numberformat in_numberformat password
     printer role sid signature stylesheet tel templates vclimit angebote bestellungen rechnungen
-    anfragen lieferantenbestellungen einkaufsrechnungen steuernummer ustid duns);
+    anfragen lieferantenbestellungen einkaufsrechnungen steuernummer co_ustid duns menustyle);
 
   $main::lxdebug->leave_sub();