X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FUser.pm;h=3b36f310c28be9c229ea34c792309c243ee016c8;hb=fe3df36071968d9f22c33f40adfc87717a578b1b;hp=0b42a35a9ae48f487afd7ba2fd6c1d025bb83a34;hpb=6dc16826718038718653bb07b130299fe2366e45;p=kivitendo-erp.git diff --git a/SL/User.pm b/SL/User.pm index 0b42a35a9..3b36f310c 100644 --- a/SL/User.pm +++ b/SL/User.pm @@ -355,20 +355,33 @@ sub dbcreate { my ($self, $form) = @_; + $form->{sid} = $form->{dbdefault}; + &dbconnect_vars($form, $form->{dbdefault}); + my $dbh = + DBI->connect($form->{dbconnect}, $form->{dbuser}, $form->{dbpasswd}) + or $form->dberror; + my %dbcreate = ( 'Pg' => qq|CREATE DATABASE "$form->{db}"|, 'Oracle' => qq|CREATE USER "$form->{db}" DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE TEMP IDENTIFIED BY "$form->{db}"| ); - $dbcreate{Pg} .= " WITH ENCODING = '$form->{encoding}'" if $form->{encoding}; + my %dboptions = ( + 'Pg' => [], + ); + + push(@{$dboptions{"Pg"}}, "ENCODING = " . $dbh->quote($form->{"encoding"})) + if ($form->{"encoding"}); + if ($form->{"dbdefault"}) { + my $dbdefault = $form->{"dbdefault"}; + $dbdefault =~ s/[^a-zA-Z0-9_\-]//g; + push(@{$dboptions{"Pg"}}, "TEMPLATE = $dbdefault"); + } - $form->{sid} = $form->{dbdefault}; - &dbconnect_vars($form, $form->{dbdefault}); - my $dbh = - DBI->connect($form->{dbconnect}, $form->{dbuser}, $form->{dbpasswd}) - or $form->dberror; my $query = qq|$dbcreate{$form->{dbdriver}}|; + $query .= " WITH " . join(" ", @{$dboptions{"Pg"}}) if (@{$dboptions{"Pg"}}); + $dbh->do($query) || $form->dberror($query); if ($form->{dbdriver} eq 'Oracle') { @@ -524,7 +537,8 @@ sub process_query { $dbh->quote($version_or_control->{"tag"}) . ", " . $dbh->quote($form->{"login"}) . ")"); } elsif ($version_or_control) { - $dbh->do("UPDATE defaults SET version = " . $dbh->quote($version)); + $dbh->do("UPDATE defaults SET version = " . + $dbh->quote($version_or_control)); } $dbh->commit(); @@ -732,7 +746,7 @@ sub update_available { opendir SQLDIR, "sql/${dbdriver}-upgrade" or &error("", "sql/${dbdriver}-upgrade: $!"); my @upgradescripts = - grep(/$form->{dbdriver}-upgrade-\Q$cur_version\E.*\.(sql|pl)/, readdir(SQLDIR)); + grep(/$form->{dbdriver}-upgrade-\Q$cur_version\E.*\.(sql|pl)$/, readdir(SQLDIR)); closedir SQLDIR; return ($#upgradescripts > -1); @@ -1071,7 +1085,8 @@ sub config_vars { currency dateformat dbconnect dbdriver dbhost dbport dboptions dbname dbuser dbpasswd email fax name numberformat in_numberformat password printer role sid signature stylesheet tel templates vclimit angebote bestellungen rechnungen - anfragen lieferantenbestellungen einkaufsrechnungen taxnumber co_ustid duns menustyle); + anfragen lieferantenbestellungen einkaufsrechnungen taxnumber co_ustid duns menustyle + template_format copies); $main::lxdebug->leave_sub();