From: Moritz Bunkus Date: Thu, 13 Jan 2011 09:28:23 +0000 (+0100) Subject: Fix für: Datenbankverbindungen bei identischen Verbindungseinstellungen nur einmal... X-Git-Tag: release-2.6.3~61^2~7^2~1^2~2^2~37 X-Git-Url: http://wagnertech.de/git?a=commitdiff_plain;h=18a9b190c4f03ff02bfc5eae1fc253116cabe02f;p=kivitendo-erp.git Fix für: Datenbankverbindungen bei identischen Verbindungseinstellungen nur einmal bei Rose registrieren --- diff --git a/SL/DB.pm b/SL/DB.pm index bcbf2e146..4a78738c2 100644 --- a/SL/DB.pm +++ b/SL/DB.pm @@ -54,8 +54,10 @@ sub _register_db { }); } + my %flattened_settings = _flatten_settings(%connect_settings); + $domain = 'LXOFFICE' if $type =~ m/^LXOFFICE/; - $type .= join($SUBSCRIPT_SEPARATOR, map { $::connect_setings{$_} } sort keys %connect_settings); + $type .= join($SUBSCRIPT_SEPARATOR, map { ($_, $flattened_settings{$_}) } sort keys %flattened_settings); my $idx = "${domain}::${type}"; if (!$_db_registered{$idx}) { @@ -70,4 +72,19 @@ sub _register_db { return ($domain, $type); } +sub _flatten_settings { + my %settings = @_; + my %flattened = (); + + while (my ($key, $value) = each %settings) { + if ('HASH' eq ref $value) { + %flattened = ( %flattened, _flatten_settings(%{ $value }) ); + } else { + $flattened{$key} = $value; + } + } + + return %flattened; +} + 1;