From f7676544788ff47cd51e99256f6d44ed436b05aa Mon Sep 17 00:00:00 2001
From: alecpl <alec@alec.pl>
Date: Sun, 20 Jun 2010 05:27:32 -0400
Subject: [PATCH] - Add %dc variable support in base_dn/bind_dn config (#1486779)

---
 CHANGELOG                      |    1 +
 program/include/rcube_ldap.php |    7 ++++---
 config/main.inc.php.dist       |    1 +
 3 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/CHANGELOG b/CHANGELOG
index c4f7008..c87ef05 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,6 +1,7 @@
 CHANGELOG RoundCube Webmail
 ===========================
 
+- Add %dc variable support in base_dn/bind_dn config (#1486779)
 - Add button to hide/unhide the preview pane (#1484215)
 - Fix no-cache headers on https to prevent content caching by proxies (#1486798)
 - Fix attachment filenames broken with TNEF decoder using long filenames (#1486795)
diff --git a/config/main.inc.php.dist b/config/main.inc.php.dist
index 0f32b57..1d05958 100644
--- a/config/main.inc.php.dist
+++ b/config/main.inc.php.dist
@@ -409,6 +409,7 @@
   //       address, uses the username_domain value if not an email address.
   // %u  - The username prior to the '@'.
   // %d  - The domain name after the '@'.
+  // %dc - The domain name hierarchal string e.g. "dc=test,dc=domain,dc=com"
   'base_dn'       => '',
   'bind_dn'       => '',
   'bind_pass'     => '',
diff --git a/program/include/rcube_ldap.php b/program/include/rcube_ldap.php
index 63c193f..b548276 100644
--- a/program/include/rcube_ldap.php
+++ b/program/include/rcube_ldap.php
@@ -132,13 +132,14 @@
         // Get the pieces needed for variable replacement.
         $fu = $RCMAIL->user->get_username();
         list($u, $d) = explode('@', $fu);
-        
+        $dc = 'dc='.strtr($d, array('.' => ',dc=')); // hierarchal domain string
+
         // Replace the bind_dn and base_dn variables.
-        $replaces = array('%fu' => $fu, '%u' => $u, '%d' => $d);
+        $replaces = array('%dc' => $dc, '%d' => $d, '%fu' => $fu, '%u' => $u);
         $this->prop['bind_dn'] = strtr($this->prop['bind_dn'], $replaces);
         $this->prop['base_dn'] = strtr($this->prop['base_dn'], $replaces);
       }
-      
+
       if (!empty($this->prop['bind_dn']) && !empty($this->prop['bind_pass']))
         $this->ready = $this->bind($this->prop['bind_dn'], $this->prop['bind_pass']);
     }

--
Gitblit v1.9.1