Vor Zugriff auf "employee"-Tabelle testen, ob diese existiert.
authorMoritz Bunkus <m.bunkus@linet-services.de>
Fri, 5 Jun 2009 07:23:43 +0000 (07:23 +0000)
committerMoritz Bunkus <m.bunkus@linet-services.de>
Fri, 5 Jun 2009 07:23:43 +0000 (07:23 +0000)
Es kann sein, dass die Funktion User::create_employee_record()
aufgerufen wird, bevor die beim Benutzer eingetragene Datenbank
existiert bzw. bevor darin die Lx-Office-Tabellen existieren. In
diesem Falle darf create_employee_record() nicht fehlschlagen, weil
der Eintrag in "employee" spätestens beim Login angelegt wird.

Das kann z.B. passieren, wenn im Administrationsbereich zuerst ein
Benutzer und später erst die dazugehörige Datenbank angelegt wird.

Fix für Bug 922.

SL/User.pm

index 4872368..a49b3b5 100644 (file)
@@ -971,6 +971,11 @@ sub create_employee_entry {
   my $myconfig        = shift;
   my $update_existing = shift;
 
+  if (!does_table_exist($dbh, 'employee')) {
+    $main::lxdebug->leave_sub();
+    return;
+  }
+
   # add login to employee table if it does not exist
   # no error check for employee table, ignore if it does not exist
   my ($id)  = selectrow_query($form, $dbh, qq|SELECT id FROM employee WHERE login = ?|, $self->{login});