From 4368a079f5f88e92e18c5366e80126fe35dc8608 Mon Sep 17 00:00:00 2001
From: alecpl <alec@alec.pl>
Date: Sat, 29 Aug 2009 16:56:00 -0400
Subject: [PATCH] - Fix gn and givenName should be synonymous in LDAP addressbook (#1485892)

---
 program/include/rcube_ldap.php |   28 ++++++++++++++++++++++++----
 1 files changed, 24 insertions(+), 4 deletions(-)

diff --git a/program/include/rcube_ldap.php b/program/include/rcube_ldap.php
index e735086..71476ce 100644
--- a/program/include/rcube_ldap.php
+++ b/program/include/rcube_ldap.php
@@ -55,7 +55,10 @@
 
     foreach ($p as $prop => $value)
       if (preg_match('/^(.+)_field$/', $prop, $matches))
-        $this->fieldmap[$matches[1]] = strtolower($value);
+        $this->fieldmap[$matches[1]] = $this->_attr_name(strtolower($value));
+
+    foreach ($this->prop['required_fields'] as $key => $val)
+      $this->prop['required_fields'][$key] = $this->_attr_name(strtolower($val));
 
     $this->sort_col = $p['sort'];
 
@@ -552,7 +555,7 @@
    *
    * @access private
    */
-  function _exec_search()
+  private function _exec_search()
   {
     if ($this->ready)
     {
@@ -569,7 +572,7 @@
   /**
    * @access private
    */
-  function _ldap2result($rec)
+  private function _ldap2result($rec)
   {
     global $RCMAIL;
 
@@ -595,13 +598,30 @@
   /**
    * @access private
    */
-  function _map_field($field)
+  private function _map_field($field)
   {
     return $this->fieldmap[$field];
   }
   
   
   /**
+   * @access private
+   */
+  private function _attr_name($name)
+  {
+    // list of known attribute aliases
+    $aliases = array(
+      'gn' => 'givenname',
+      'rfc822mailbox' => 'mail',
+      'userid' => 'uid',
+      'emailaddress' => 'email',
+      'pkcs9email' => 'email',
+    );
+    return isset($aliases[$name]) ? $aliases[$name] : $name;
+  }
+
+
+  /**
    * @static
    */
   function quote_string($str)

--
Gitblit v1.9.1