Code

Added missing data
[gosa.git] / include / class_ldap.inc
index d79ef172c56dbb7e9dcb41bb1e35e10a301b0f14..e5809d72099e075eb69c1fdbd23d80e1c098f6b7 100644 (file)
@@ -1,7 +1,7 @@
 <?php
 /*****************************************************************************
   newldap.inc - version 1.0
-  Copyright (C) 2003 Alejandro Escanero Blanco <alex@ofmin.com>
+  Copyright (C) 2003 Alejandro Escanero Blanco <aescanero@chaosdimension.org>
   Copyright (C) 2004-2006 Cajus Pollmeier <pollmeier@gonicus.de>
 
   Based in code of ldap.inc of
@@ -197,6 +197,7 @@ class LDAP{
         }
       }
 
+      $this->log("LDAP operation: time=".get_MicroTimeDiff($start,microtime())." operation=search('".$this->fix($this->basedn)."', '$filter')");
       return($this->sr);
     }else{
       $this->error = "Could not connect to LDAP server";
@@ -229,6 +230,8 @@ class LDAP{
         }
       }
 
+      $this->log("LDAP operation: time=".get_MicroTimeDiff($start,microtime())." operation=ls('".$this->fix($basedn)."', '$filter')");
+
       return($this->sr);
     }else{
       $this->error = "Could not connect to LDAP server";
@@ -281,7 +284,7 @@ class LDAP{
         if ($this->re)
         {
           $att= @ldap_get_attributes($this->cid, $this->re);
-          $att['dn']= $this->convert(@ldap_get_dn($this->cid, $this->re));
+          $att['dn']= trim($this->convert(@ldap_get_dn($this->cid, $this->re)));
         }
         $this->error = @ldap_error($this->cid);
         if (!isset($att)){
@@ -325,7 +328,7 @@ class LDAP{
           $rv = @ldap_get_dn($this->cid, $this->re);
         
           $this->error = @ldap_error($this->cid);
-          return($this->convert($rv));
+          return(trim($this->convert($rv)));
            }
       }else{
         $this->error = "Perform a Fetch with no Search";
@@ -527,7 +530,7 @@ class LDAP{
 
           /* If this is no department */
           foreach($attr as $key => $value){
-            if(in_array($key ,array("FAItemplateFile","FAIscript", "gotoLogonScript", "gosaApplicationIcon"))){
+            if(in_array($key ,array("FAItemplateFile","FAIscript", "gotoLogonScript", "gosaApplicationIcon","gotoMimeIcon"))){
               $sr= ldap_read($this->cid, $this->fix($sourcedn), "$key=*", array($key));
               $ei= ldap_first_entry($this->cid, $sr);
               if ($tmp= @ldap_get_values_len($this->cid, $ei,$key)){
@@ -545,7 +548,7 @@ class LDAP{
           unset($attr['count']);
           unset($attr['dn']);
 
-          if(!in_array("gosaApplication" , $attr['objectClass'])){
+          if((!in_array("gosaApplication" , $attr['objectClass'])) && (!in_array("gotoMimeType", $attr['objectClass']))){
             if($type=="branch"){
               $attr['FAIstate'] ="branch";
             }elseif($type=="freeze"){
@@ -642,7 +645,7 @@ class LDAP{
     }
 
     $real_path= substr($target, 0, strlen($target) - strlen($this->basedn) -1 );
-    $l= array_reverse(ldap_explode_dn($real_path,0));
+    $l= array_reverse(gosa_ldap_explode_dn($real_path));
     unset($l['count']);
     $cdn= $this->basedn;
     $tag= "";
@@ -1058,9 +1061,17 @@ class LDAP{
         }
 
         /* Split the line into  attribute  and value */
-        $attr   = split(":", $row);
+        $attr   = split(":", $row,2);
         $attr[0]= trim($attr[0]);  /* attribute */
-        $attr[1]= trim($attr[1]);  /* value */
+        $attr[1]= $attr[1];  /* value */
+
+        /* Check :: was used to indicate base64_encoded strings */
+        if($attr[1][0] == ":"){
+          $attr[1]=trim(preg_replace("/^:/","",$attr[1]));
+          $attr[1]=base64_decode($attr[1]);
+        }
+
+        $attr[1] = trim($attr[1]);
 
         /* Check for attributes that are used more than once */
         if(!isset($data[$attr[0]])) {
@@ -1087,7 +1098,7 @@ class LDAP{
     if(isset($data['dn'])) {
 
       /* Fix dn */
-      $tmp = ldap_explode_dn($data['dn'],0);
+      $tmp = gosa_ldap_explode_dn($data['dn']);
       unset($tmp['count']);
       $newdn ="";
       foreach($tmp as $tm){
@@ -1108,6 +1119,7 @@ class LDAP{
       $this->cd ($this->basedn);
       $this->create_missing_trees($data['dn']);
       $this->cd($data['dn']);
+
       $dn = $data['dn'];
       unset($data['dn']);
       
@@ -1140,7 +1152,7 @@ class LDAP{
         $ret = $this->modify($data);
       }
     }
-    show_ldap_error($this->get_error(),_("Ldap import failed"));
+    show_ldap_error($this->get_error(), sprintf(_("Ldap import with dn '%s' failed."),$dn));
     return($ret);
   }
 
@@ -1196,6 +1208,15 @@ class LDAP{
          return $objectclasses;
   }
 
+  function log($string)
+  {
+    if (isset($_SESSION['config'])){
+      $cfg= $_SESSION['config'];
+      if (isset($cfg->current['LDAPSTATS']) && preg_match('/true/i', $cfg->current['LDAPSTATS'])){
+        syslog (LOG_INFO, $string);
+      }
+    }
+  }
 }
 
 // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: