Fix für: Datenbankverbindungen bei identischen Verbindungseinstellungen nur einmal...
authorMoritz Bunkus <m.bunkus@linet-services.de>
Thu, 13 Jan 2011 09:28:23 +0000 (10:28 +0100)
committerMoritz Bunkus <m.bunkus@linet-services.de>
Thu, 13 Jan 2011 09:28:23 +0000 (10:28 +0100)
SL/DB.pm

index bcbf2e1..4a78738 100644 (file)
--- 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;