package User;
+#use strict;
+
use IO::File;
use Fcntl qw(:seek);
$main::lxdebug->enter_sub();
my ($self, $form) = @_;
+ our $sid;
local *FH;
}
# update the tables
- open(FH, ">$main::userspath/nologin") or die("$!");
+ if (!open(FH, ">$main::userspath/nologin")) {
+ $form->show_generic_error($main::locale->text('A temporary file could not be created. ' .
+ 'Please verify that the directory "#1" is writeable by the webserver.',
+ $main::userspath),
+ 'back_button' => 1);
+ }
# required for Oracle
$form->{dbdefault} = $sid;
my $menufile =
$self->{"menustyle"} eq "v3" ? "menuv3.pl" :
$self->{"menustyle"} eq "neu" ? "menunew.pl" :
+ $self->{"menustyle"} eq "js" ? "menujs.pl" :
$self->{"menustyle"} eq "xml" ? "menuXML.pl" :
"menu.pl";
return @dbsources;
}
+sub dbclusterencoding {
+ $main::lxdebug->enter_sub();
+
+ my ($self, $form) = @_;
+
+ $form->{dbdefault} ||= $form->{dbuser};
+
+ dbconnect_vars($form, $form->{dbdefault});
+
+ my $dbh = DBI->connect($form->{dbconnect}, $form->{dbuser}, $form->{dbpasswd}) || $form->dberror();
+ my $query = qq|SELECT pg_encoding_to_char(encoding) FROM pg_database WHERE datname = 'template0'|;
+ my ($cluster_encoding) = $dbh->selectrow_array($query);
+ $dbh->disconnect();
+
+ $main::lxdebug->leave_sub();
+
+ return $cluster_encoding;
+}
+
sub dbcreate {
$main::lxdebug->enter_sub();
my $query = $dbcreate{$form->{dbdriver}};
$query .= " WITH " . join(" ", @{$dboptions{"Pg"}}) if (@{$dboptions{"Pg"}});
- do_query($form, $dbh, $query);
+ # Ignore errors if the database exists.
+ $dbh->do($query);
if ($form->{dbdriver} eq 'Oracle') {
$query = qq|GRANT CONNECT, RESOURCE TO "$form->{db}"|;
$query .= $char;
}
}
+
+ # Insert a space at the end of each line so that queries split
+ # over multiple lines work properly.
+ if ($query ne '') {
+ $query .= @quote_chars ? "\n" : ' ';
+ }
}
if (ref($version_or_control) eq "HASH") {
$my_a =~ s/.sql$//;
$my_b =~ s/.*-upgrade-//;
$my_b =~ s/.sql$//;
- ($my_a_from, $my_a_to) = split(/-/, $my_a);
- ($my_b_from, $my_b_to) = split(/-/, $my_b);
+ my ($my_a_from, $my_a_to) = split(/-/, $my_a);
+ my ($my_b_from, $my_b_to) = split(/-/, $my_b);
$res_a = calc_version($my_a_from);
$res_b = calc_version($my_b_from);
last if ($version < $mindb);
# apply upgrade
- $main::lxdebug->message(DEBUG2, "Applying Update $upgradescript");
+ $main::lxdebug->message(LXDebug::DEBUG2, "Applying Update $upgradescript");
if ($file_type eq "sql") {
$self->process_query($form, $dbh, "sql/" . $form->{"dbdriver"} .
"-upgrade/$upgradescript", $str_maxdb, $db_charset);
my $file_type = $1;
# apply upgrade
- $main::lxdebug->message(DEBUG2, "Applying Update $control->{file}");
+ $main::lxdebug->message(LXDebug::DEBUG2, "Applying Update $control->{file}");
print $form->parse_html_template("dbupgrade/upgrade_message2", $control);
if ($file_type eq "sql") {
$main::lxdebug->enter_sub();
my ($self) = @_;
+ my $form = \%main::form;
# format dbconnect and dboptions string
dbconnect_vars($self, $self->{dbname});
my $dbh = DBI->connect($self->{dbconnect}, $self->{dbuser}, $self->{dbpasswd});
if ($dbh) {
- $self->create_employee_entry($form, $dbh, $self);
+ $self->create_employee_entry($form, $dbh, $self, 1);
$dbh->disconnect();
}
sub create_employee_entry {
$main::lxdebug->enter_sub();
- my $self = shift;
- my $form = shift;
- my $dbh = shift;
- my $myconfig = shift;
+ my $self = shift;
+ my $form = shift;
+ my $dbh = shift;
+ 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 ($login) = selectrow_query($form, $dbh, qq|SELECT id FROM employee WHERE login = ?|, $self->{login});
+ my ($id) = selectrow_query($form, $dbh, qq|SELECT id FROM employee WHERE login = ?|, $self->{login});
- if (!$login) {
- $query = qq|INSERT INTO employee (login, name, workphone, role) VALUES (?, ?, ?, ?)|;
+ if (!$id) {
+ my $query = qq|INSERT INTO employee (login, name, workphone, role) VALUES (?, ?, ?, ?)|;
do_query($form, $dbh, $query, ($self->{login}, $myconfig->{name}, $myconfig->{tel}, "user"));
+
+ } elsif ($update_existing) {
+ my $query = qq|UPDATE employee SET name = ?, workphone = ?, role = 'user' WHERE id = ?|;
+ do_query($form, $dbh, $query, $myconfig->{name}, $myconfig->{tel}, $id);
}
$main::lxdebug->leave_sub();
sub config_vars {
$main::lxdebug->enter_sub();
- my @conf = qw(acs address admin businessnumber company countrycode
+ my @conf = qw(address admin businessnumber company countrycode
currency dateformat dbconnect dbdriver dbhost dbport dboptions
dbname dbuser dbpasswd email fax name numberformat password
printer role sid signature stylesheet tel templates vclimit angebote
bestellungen rechnungen anfragen lieferantenbestellungen einkaufsrechnungen
taxnumber co_ustid duns menustyle template_format default_media
- default_printer_id copies show_form_details favorites);
+ default_printer_id copies show_form_details favorites
+ pdonumber sdonumber);
$main::lxdebug->leave_sub();