X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=gosa-core%2Finclude%2Fclass_ldap.inc;h=1a991f1b6e122ba7466593abe2bd1ec1336cda9a;hb=ec31213715f17cad47d051582e1f73ea1feb85fe;hp=3c52101f9d979f59f81d45b4684b51e7e75baedd;hpb=84758025b5db95d96c44d1cccf2f917d09be03b7;p=gosa.git
diff --git a/gosa-core/include/class_ldap.inc b/gosa-core/include/class_ldap.inc
index 3c52101f9..1a991f1b6 100644
--- a/gosa-core/include/class_ldap.inc
+++ b/gosa-core/include/class_ldap.inc
@@ -60,8 +60,8 @@ class LDAP{
$this->hostname=$hostname;
/* Check if MAX_LDAP_QUERY_TIME is defined */
- if(isset($config->data['MAIN']['MAX_LDAP_QUERY_TIME'])){
- $str = $config->data['MAIN']['MAX_LDAP_QUERY_TIME'];
+ if(is_object($config) && $config->get_cfg_value("ldapMaxQueryTime") != ""){
+ $str = $config->get_cfg_value("ldapMaxQueryTime");
$this->max_ldap_query_time = (float)($str);
}
@@ -81,19 +81,20 @@ class LDAP{
/* Function to replace all problematic characters inside a DN by \001XX, where
\001 is decoded to chr(1) [ctrl+a]. It is not impossible, but very unlikely
that this character is inside a DN.
-
+
Currently used codes:
- , => CO
- \2C => CO
- ( => OB
- ) => CB
- / => SL */
+ , => CO
+ \2C => CO
+ ( => OB
+ ) => CB
+ / => SL
+ \22 => DQ */
static function convert($dn)
{
if (SPECIALS_OVERRIDE == TRUE){
- $tmp= preg_replace(array("/\\\\,/", "/\\\\2C/", "/\(/", "/\)/", "/\//"),
- array("\001CO", "\001CO", "\001OB", "\001CB", "\001SL"),
- $dn);
+ $tmp= preg_replace(array("/\\\\,/", "/\\\\2C/", "/\(/", "/\)/", "/\//", "/\\\\22/", '/\\\\"/'),
+ array("\001CO", "\001CO", "\001OB", "\001CB", "\001SL", "\001DQ", "\001DQ"),
+ $dn);
return (preg_replace('/,\s+/', ',', $tmp));
} else {
return ($dn);
@@ -108,20 +109,20 @@ class LDAP{
static function fix($dn)
{
if (SPECIALS_OVERRIDE == TRUE){
- return (preg_replace(array("/\001CO/", "/\001OB/", "/\001CB/", "/\001SL/"),
- array("\,", "(", ")", "/"),
- $dn));
+ return (preg_replace(array("/\001CO/", "/\001OB/", "/\001CB/", "/\001SL/", "/\001DQ/"),
+ array("\,", "(", ")", "/", '\"'),
+ $dn));
} else {
return ($dn);
}
}
-
/* Function to fix problematic characters in DN's that are used for search
requests. I.e. member=.... */
static function prepare4filter($dn)
{
- return normalizeLdap(preg_replace('/\\\\/', '\\\\\\', LDAP::fix($dn)));
+ $fixed= normalizeLdap(str_replace('\\\\', '\\\\\\', LDAP::fix($dn)));
+ return str_replace('\\,', '\\\\,', $fixed);
}
@@ -160,13 +161,13 @@ class LDAP{
function rebind($ldap, $referral)
{
$credentials= $this->get_credentials($referral);
- if (@ldap_bind($ldap, LDAP::fix($credentials['ADMIN']), $credentials['PASSWORD'])) {
+ if (@ldap_bind($ldap, LDAP::fix($credentials['ADMINDN']), $credentials['ADMINPASSWORD'])) {
$this->error = "Success";
$this->hascon=true;
$this->reconnect= true;
return (0);
} else {
- $this->error = "Could not bind to " . $credentials['ADMIN'];
+ $this->error = "Could not bind to " . $credentials['ADMINDN'];
return NULL;
}
}
@@ -207,9 +208,9 @@ class LDAP{
if ($basedn==""){
$basedn = $this->basedn;
} else {
- $basedn = LDAP::convert($this->basedn);
+ $basedn = LDAP::convert($basedn);
}
- return(ereg_replace("[^,]*[,]*[ ]*(.*)", "\\1", $basedn));
+ return(preg_replace("/[^,]*[,]*[ ]*(.*)/", "$1", $basedn));
}
@@ -218,7 +219,7 @@ class LDAP{
if($this->hascon){
if ($this->reconnect) $this->connect();
- $start = microtime();
+ $start = microtime(true);
$this->clearResult($srp);
$this->sr[$srp] = @ldap_search($this->cid, LDAP::fix($this->basedn), $filter, $attrs);
$this->error = @ldap_error($this->cid);
@@ -227,13 +228,13 @@ class LDAP{
/* Check if query took longer as specified in max_ldap_query_time */
if($this->max_ldap_query_time){
- $diff = get_MicroTimeDiff($start,microtime());
+ $diff = microtime(true) - $start;
if($diff > $this->max_ldap_query_time){
- msg_dialog::display(_("Performance warning"), sprintf(_("LDAP performance is poor: last query took about %.2fs!"), $diff), WARNING_DIALOG);
+ msg_dialog::display(_("Performance warning"), sprintf(_("LDAP performance is poor: last query took %.2fs!"), $diff), WARNING_DIALOG);
}
}
- $this->log("LDAP operation: time=".get_MicroTimeDiff($start,microtime())." operation=search('".LDAP::fix($this->basedn)."', '$filter')");
+ $this->log("LDAP operation: time=".(microtime(true)-$start)." operation=search('".LDAP::fix($this->basedn)."', '$filter')");
return($this->sr[$srp]);
}else{
$this->error = "Could not connect to LDAP server";
@@ -252,7 +253,7 @@ class LDAP{
else
$basedn= LDAP::convert($basedn);
- $start = microtime();
+ $start = microtime(true);
$this->sr[$srp] = @ldap_list($this->cid, LDAP::fix($basedn), $filter,$attrs);
$this->error = @ldap_error($this->cid);
$this->resetResult($srp);
@@ -260,13 +261,13 @@ class LDAP{
/* Check if query took longer as specified in max_ldap_query_time */
if($this->max_ldap_query_time){
- $diff = get_MicroTimeDiff($start,microtime());
+ $diff = microtime(true) - $start;
if($diff > $this->max_ldap_query_time){
- msg_dialog::display(_("Performance warning"), sprintf(_("LDAP performance is poor: last query took about %.2fs!"), $diff), WARNING_DIALOG);
+ msg_dialog::display(_("Performance warning"), sprintf(_("LDAP performance is poor: last query took %.2fs!"), $diff), WARNING_DIALOG);
}
}
- $this->log("LDAP operation: time=".get_MicroTimeDiff($start,microtime())." operation=ls('".LDAP::fix($basedn)."', '$filter')");
+ $this->log("LDAP operation: time=".(microtime(true) - $start)." operation=ls('".LDAP::fix($basedn)."', '$filter')");
return($this->sr[$srp]);
}else{
@@ -275,13 +276,12 @@ class LDAP{
}
}
- function cat($srp, $dn,$attrs= array("*"))
+ function cat($srp, $dn,$attrs= array("*"), $filter = "(objectclass=*)")
{
if($this->hascon){
if ($this->reconnect) $this->connect();
$this->clearResult($srp);
- $filter = "(objectclass=*)";
$this->sr[$srp] = @ldap_read($this->cid, LDAP::fix($dn), $filter,$attrs);
$this->error = @ldap_error($this->cid);
$this->resetResult($srp);
@@ -293,6 +293,19 @@ class LDAP{
}
}
+ function object_match_filter($dn,$filter)
+ {
+ if($this->hascon){
+ if ($this->reconnect) $this->connect();
+ $res = @ldap_read($this->cid, LDAP::fix($dn), $filter, array("objectClass"));
+ $rv = @ldap_count_entries($this->cid, $res);
+ return($rv);
+ }else{
+ $this->error = "Could not connect to LDAP server";
+ return(FALSE);
+ }
+ }
+
function set_size_limit($size)
{
/* Ignore zero settings */
@@ -405,7 +418,23 @@ class LDAP{
if ($dn == "")
$dn = $this->basedn;
- $r = @ldap_mod_del($this->cid, LDAP::fix($dn), $attrs);
+ $r = ldap_mod_del($this->cid, LDAP::fix($dn), $attrs);
+ $this->error = @ldap_error($this->cid);
+ return($r);
+ }else{
+ $this->error = "Could not connect to LDAP server";
+ return("");
+ }
+ }
+
+ function mod_add($attrs = "", $dn = "")
+ {
+ if($this->hascon){
+ if ($this->reconnect) $this->connect();
+ if ($dn == "")
+ $dn = $this->basedn;
+
+ $r = @ldap_mod_add($this->cid, LDAP::fix($dn), $attrs);
$this->error = @ldap_error($this->cid);
return($r);
}else{
@@ -470,12 +499,12 @@ class LDAP{
parent => ou=department,dc=...
dest_rdn => cn=herbert
*/
- $parent = preg_replace("/^[^,]+,/","",$dest);
+ $parent = preg_replace("/^[^,]+,/","", $dest);
$dest_rdn = preg_replace("/,.*$/","",$dest);
-
+
if($this->hascon){
if ($this->reconnect) $this->connect();
- $r= ldap_rename($this->cid,$source,$dest_rdn,$parent,TRUE);
+ $r= ldap_rename($this->cid,@LDAP::fix($source), @LDAP::fix($dest_rdn),@LDAP::fix($parent),TRUE);
$this->error = ldap_error($this->cid);
/* Check if destination dn exists, if not the
@@ -527,6 +556,27 @@ class LDAP{
}
}
+ function makeReadableErrors($error,$attrs)
+ {
+ global $config;
+
+ if($this->success()) return("");
+
+ $str = "";
+ if(preg_match("/^objectClass: value #([0-9]*) invalid per syntax$/", $this->get_additional_error())){
+ $oc = preg_replace("/^objectClass: value #([0-9]*) invalid per syntax$/","\\1", $this->get_additional_error());
+ if(isset($attrs['objectClass'][$oc])){
+ $str.= " - objectClass: ".$attrs['objectClass'][$oc]."";
+ }
+ }
+ if($error == "Undefined attribute type"){
+ $str = " - attribute: ".preg_replace("/:.*$/","",$this->get_additional_error())."";
+ }
+
+ @DEBUG(DEBUG_LDAP,__LINE__,__FUNCTION__,__FILE__,$attrs,"Erroneous data");
+
+ return($str);
+ }
function modify($attrs)
{
@@ -537,6 +587,9 @@ class LDAP{
if ($this->reconnect) $this->connect();
$r = @ldap_modify($this->cid, LDAP::fix($this->basedn), $attrs);
$this->error = @ldap_error($this->cid);
+ if(!$this->success()){
+ $this->error.= $this->makeReadableErrors($this->error,$attrs);
+ }
return($r ? $r : 0);
}else{
$this->error = "Could not connect to LDAP server";
@@ -550,6 +603,9 @@ class LDAP{
if ($this->reconnect) $this->connect();
$r = @ldap_add($this->cid, LDAP::fix($this->basedn), $attrs);
$this->error = @ldap_error($this->cid);
+ if(!$this->success()){
+ $this->error.= $this->makeReadableErrors($this->error,$attrs);
+ }
return($r ? $r : 0);
}else{
$this->error = "Could not connect to LDAP server";
@@ -583,7 +639,7 @@ class LDAP{
/* Ignore referrals */
$found= false;
foreach($this->referrals as $ref){
- $base= preg_replace('!^[^:]+://[^/]+/([^?]+).*$!', '\\1', $ref['URL']);
+ $base= preg_replace('!^[^:]+://[^/]+/([^?]+).*$!', '\\1', $ref['URI']);
if ($base == $cdn){
$found= true;
break;
@@ -606,7 +662,8 @@ class LDAP{
} else {
$type= preg_replace('/^([^=]+)=.*$/', '\\1', $cdn);
- $param= preg_replace('/^[^=]+=([^,]+),.*$/', '\\1', $cdn);
+ $param= LDAP::fix(preg_replace('/^[^=]+=([^,]+).*$/', '\\1', $cdn));
+ $param=preg_replace(array('/\\\\,/','/\\\\"/'),array(',','"'),$param);
$na= array();
@@ -616,7 +673,7 @@ class LDAP{
/* Get name of first matching objectClass */
$ocname= "";
foreach($classes as $class){
- if (isset($class['MUST']) && $class['MUST'] == "$type"){
+ if (isset($class['MUST']) && in_array($type, $class['MUST'])){
/* Look for first classes that is structural... */
if (isset($class['STRUCTURAL'])){
@@ -633,7 +690,7 @@ class LDAP{
/* Bail out, if we've nothing to do... */
if ($ocname == ""){
- msg_dialog::display(_("Internal error"), sprintf(_("Cannot automatically create subtrees with RDN '%s': no object class found!"),$type), FATAL_ERROR_DIALOG);
+ msg_dialog::display(_("Internal error"), sprintf(_("Cannot automatically create subtrees with RDN %s: no object class found"), bold($type)), FATAL_ERROR_DIALOG);
exit();
}
@@ -652,8 +709,11 @@ class LDAP{
$na['objectClass'][]= 'locality';
}
$na[$type]= $param;
+
+ // Fill in MUST values - but do not overwrite existing ones.
if (is_array($classes[$ocname]['MUST'])){
foreach($classes[$ocname]['MUST'] as $attr){
+ if(isset($na[$attr]) && !empty($na[$attr])) continue;
$na[$attr]= "filled";
}
}
@@ -681,7 +741,7 @@ class LDAP{
$na["dc"]= $param;
break;
default:
- msg_dialog::display(_("Internal error"), sprintf(_("Cannot automatically create subtrees with RDN '%s': not supported"),$type), FATAL_ERROR_DIALOG);
+ msg_dialog::display(_("Internal error"), sprintf(_("Cannot automatically create subtrees with RDN %s: not supported"), bold($type)), FATAL_ERROR_DIALOG);
exit();
}
@@ -690,6 +750,9 @@ class LDAP{
$this->add($na);
if (!$this->success()){
+
+ print_a(array($cdn,$na));
+
msg_dialog::display(_("LDAP error"), msgPool::ldaperror($this->get_error(), $cdn, LDAP_ADD, get_class()));
return FALSE;
}
@@ -719,6 +782,7 @@ class LDAP{
}
}
+
function get_attribute($dn, $name,$r_array=0)
{
$data= "";
@@ -734,12 +798,11 @@ class LDAP{
}
}
}
- if($r_array==0)
- return ($data);
- else
- return ($info);
-
-
+ if($r_array==0) {
+ return ($data);
+ } else {
+ return ($info);
+ }
}
@@ -765,9 +828,9 @@ class LDAP{
} else {
$adderror= $this->get_additional_error();
if ($adderror != ""){
- $error= $this->error." (".$this->get_additional_error().", ".sprintf(_("while operating on '%s' using LDAP server '%s'"), $this->basedn, $this->hostname).")";
+ $error= $this->error." (".$this->get_additional_error().", ".sprintf(_("while operating on %s using LDAP server %s"), bold($this->basedn), bold($this->hostname)).")";
} else {
- $error= $this->error." (".sprintf(_("while operating on LDAP server %s"), $this->hostname).")";
+ $error= $this->error." (".sprintf(_("while operating on LDAP server %s"), bold($this->hostname)).")";
}
return $error;
}
@@ -786,35 +849,24 @@ class LDAP{
if (isset($referrals[$server])){
return ($referrals[$server]);
} else {
- $ret['ADMIN']= LDAP::fix($this->binddn);
- $ret['PASSWORD']= $this->bindpw;
+ $ret['ADMINDN']= LDAP::fix($this->binddn);
+ $ret['ADMINPASSWORD']= $this->bindpw;
}
return ($ret);
}
- function gen_ldif ($srp, $dn, $filter= "(objectClass=*)", $attributes= array('*'), $recursive= TRUE)
+ function generateLdif ($dn, $filter= "(objectClass=*)", $attributes= array(), $scope = 'sub', $limit=0)
{
- $display= "";
-
- if ($recursive){
- $this->cd($dn);
- $this->ls($srp, $filter,$dn, array('dn','objectClass'));
- $deps = array();
-
- $display .= $this->gen_one_entry($dn)."\n";
-
- while ($attrs= $this->fetch($srp)){
- $deps[] = $attrs['dn'];
- }
- foreach($deps as $dn){
- $display .= $this->gen_ldif($srp, $dn, $filter,$attributes,$recursive);
- }
- } else {
- $display.= $this->gen_one_entry($dn);
- }
- return ($display);
+ $host = $this->hostname;
+ $attrs = (count($attributes))?implode($attributes,' '):'';
+ $scope = (!empty($scope))?' -s '.$scope: '';
+ $limit = (!$limit)?'':' -z '.$limit;
+ $cmd = "ldapsearch -x -LLLL '{$filter}' {$limit} {$scope} -H '{$host}' -b '{$dn}' $attrs";
+ exec($cmd, $ret,$code);
+ $res = implode($ret,"\n");
+ return($res);
}
@@ -841,57 +893,6 @@ class LDAP{
}
- function gen_one_entry($dn, $filter= "(objectClass=*)" , $name= array("*"))
- {
- $ret = "";
- $data = "";
- if($this->reconnect){
- $this->connect();
- }
-
- /* Searching Ldap Tree */
- $sr= @ldap_read($this->cid, LDAP::fix($dn), $filter, $name);
-
- /* Get the first entry */
- $entry= @ldap_first_entry($this->cid, $sr);
-
- /* Get all attributes related to that Objekt */
- $atts = array();
-
- /* Assemble dn */
- $atts[0]['name'] = "dn";
- $atts[0]['value'] = array('count' => 1, 0 => $dn);
-
- /* Reset index */
- $i = 1 ;
- $identifier = array();
- $attribute= @ldap_first_attribute($this->cid,$entry,$identifier);
- while ($attribute) {
- $i++;
- $atts[$i]['name'] = $attribute;
- $atts[$i]['value'] = @ldap_get_values_len($this->cid, $entry, "$attribute");
-
- /* Next one */
- $attribute= @ldap_next_attribute($this->cid,$entry,$identifier);
- }
-
- foreach($atts as $at)
- {
- for ($i= 0; $i<$at['value']['count']; $i++){
-
- /* Check if we must encode the data */
- if(!preg_match('/^[a-z0-9+@#.=, \/ -]+$/i', $at['value'][$i])) {
- $ret .= $at['name'].":: ".base64_encode($at['value'][$i])."\n";
- } else {
- $ret .= $at['name'].": ".$at['value'][$i]."\n";
- }
- }
- }
-
- return($ret);
- }
-
-
function dn_exists($dn)
{
return @ldap_list($this->cid, LDAP::fix($dn), "(objectClass=*)", array("objectClass"));
@@ -910,9 +911,9 @@ class LDAP{
{
if($this->reconnect) $this->connect();
- /* First we have to splitt the string ito detect empty lines
+ /* First we have to split the string into empty lines.
An empty line indicates an new Entry */
- $entries = split("\n",$str_attr);
+ $entries = preg_split("/\n/",$str_attr);
$data = "";
$cnt = 0;
@@ -953,9 +954,9 @@ class LDAP{
/* Append lines ... */
if(!empty($tmp2)) {
/* check if we need base64_decode for this line */
- if(ereg("::",$tmp2))
+ if(strstr($tmp2, "::") !== false)
{
- $encoded = split("::",$entry);
+ $encoded = explode("::",$entry);
$attr = trim($encoded[0]);
$value = base64_decode(trim($encoded[1]));
/* Add linenumber */
@@ -978,18 +979,18 @@ class LDAP{
Now we check every insertblock and try to insert */
foreach ( $all as $single) {
- $lineone = split("\n",$single);
- $ndn = split("#", $lineone[0]);
+ $lineone = preg_split("/\n/",$single);
+ $ndn = explode("#", $lineone[0]);
$line = base64_decode($ndn[1]);
- $dnn = split (":",$line,2);
+ $dnn = explode (":",$line,2);
$current_line = $ndn[0];
$dn = $dnn[0];
$value = $dnn[1];
/* Every block must begin with a dn */
if($dn != "dn") {
- $error= sprintf(_("This is not a valid DN: '%s'. A block for import should begin with 'dn: ...' in line %s"), $line, $current_line);
+ $error= sprintf(_("Invalid DN %s: block to be imported should start with 'dn: ...' in line %s"), bold($line), bold($current_line));
return -2;
}
@@ -1018,7 +1019,7 @@ class LDAP{
/* If we can't Import, return with a file error */
if(!$this->import_single_entry($srp, $single,$usemodify,$usermdir) ) {
- $error= sprintf(_("Error while importing dn: '%s', please check your LDIF from line %s on!"), $line,
+ $error= sprintf(_("Error while importing DN %s: please check LDIF from line %s on!"), bold($line),
$current_line);
return UNKNOWN_TOKEN_IN_LDIF_FILE; }
}
@@ -1044,7 +1045,7 @@ class LDAP{
if($this->reconnect) $this->connect();
$ret = false;
- $rows= split("\n",$str_attr);
+ $rows= preg_split("/\n/",$str_attr);
$data= false;
foreach($rows as $row) {
@@ -1056,13 +1057,13 @@ class LDAP{
/* We are using line numbers
Because there is a # before a : */
- $tmp1= split("#",$row);
+ $tmp1= explode("#",$row);
$current_line= $tmp1[0];
$row= base64_decode($tmp1[1]);
}
/* Split the line into attribute and value */
- $attr = split(":", $row,2);
+ $attr = explode(":", $row,2);
$attr[0]= trim($attr[0]); /* attribute */
$attr[1]= $attr[1]; /* value */
@@ -1165,7 +1166,7 @@ class LDAP{
function importcsv($str)
{
- $lines = split("\n",$str);
+ $lines = preg_split("/\n/",$str);
foreach($lines as $line)
{
/* continue if theres a comment */
@@ -1177,38 +1178,34 @@ class LDAP{
$line= str_replace ("\t" ,"," ,$line);
echo $line;
- $cells = split(",",$line ) ;
+ $cells = explode(",",$line ) ;
$linet= str_replace ("\t\t",",",$line);
- $cells = split("\t",$line);
+ $cells = preg_split("/\t/",$line);
$count = count($cells);
}
}
- function get_objectclasses()
+ function get_objectclasses( $force_reload = FALSE)
{
$objectclasses = array();
global $config;
/* Only read schema if it is allowed */
if(isset($config) && preg_match("/config/i",get_class($config))){
- if(!isset($config->data['MAIN']['SCHEMA_CHECK']) || !preg_match("/true/i",$config->data['MAIN']['SCHEMA_CHECK'])){
+ if ($config->get_cfg_value("schemaCheck") != "true"){
return($objectclasses);
}
}
/* Return the cached results. */
- if(class_available('session') && session::is_set("LDAP_CACHE::get_objectclasses")){
- $objectclasses = session::get("LDAP_CACHE::get_objectclasses");
+ if(class_available('session') && session::global_is_set("LDAP_CACHE::get_objectclasses") && !$force_reload){
+ $objectclasses = session::global_get("LDAP_CACHE::get_objectclasses");
return($objectclasses);
}
# Get base to look for schema
- $sr = @ldap_read ($this->cid, NULL, "objectClass=*", array("subschemaSubentry"));
- if(!$sr){
- $sr = @ldap_read ($this->cid, "", "objectClass=*", array("subschemaSubentry"));
- }
-
+ $sr = @ldap_read ($this->cid, "", "objectClass=*", array("subschemaSubentry"));
$attr = @ldap_get_entries($this->cid,$sr);
if (!isset($attr[0]['subschemasubentry'][0])){
return array();
@@ -1227,7 +1224,7 @@ class LDAP{
continue;
}
$name= "OID";
- $pattern= split(' ', $val);
+ $pattern= explode(' ', $val);
$ocname= preg_replace("/^.* NAME\s+\(*\s*'([^']+)'\s*\)*.*$/", '\\1', $val);
$objectclasses[$ocname]= array();
@@ -1239,7 +1236,11 @@ class LDAP{
break;
case ')': if ($name != ""){
- $objectclasses[$ocname][$name]= $this->value2container($value);
+ $v = $this->value2container($value);
+ if(in_array($name, array('MUST', 'MAY')) && !is_array($v)){
+ $v = array($v);
+ }
+ $objectclasses[$ocname][$name]= $v;
}
$name= "";
$value= "";
@@ -1254,7 +1255,11 @@ class LDAP{
case 'MUST':
case 'MAY':
if ($name != ""){
- $objectclasses[$ocname][$name]= $this->value2container($value);
+ $v = $this->value2container($value);
+ if(in_array($name, array('MUST', 'MAY')) && !is_array($v)){
+ $v = array($v);
+ }
+ $objectclasses[$ocname][$name]= $v;
}
$name= $chunk;
$value= "";
@@ -1266,8 +1271,9 @@ class LDAP{
}
if(class_available("session")){
- session::set("LDAP_CACHE::get_objectclasses",$objectclasses);
+ session::global_set("LDAP_CACHE::get_objectclasses",$objectclasses);
}
+
return $objectclasses;
}
@@ -1296,8 +1302,8 @@ class LDAP{
function log($string)
{
- if (session::is_set('config')){
- $cfg = session::get('config');
+ if (session::global_is_set('config')){
+ $cfg = session::global_get('config');
if (isset($cfg->current['LDAPSTATS']) && preg_match('/true/i', $cfg->current['LDAPSTATS'])){
syslog (LOG_INFO, $string);
}
@@ -1306,10 +1312,10 @@ class LDAP{
/* added by Guido Serra aka Zeph */
function getCn($dn){
- $simple= split(",", $dn);
+ $simple= explode(",", $dn);
foreach($simple as $piece) {
- $partial= split("=", $piece);
+ $partial= explode("=", $piece);
if($partial[0] == "cn"){
return $partial[1];