X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=gosa-core%2Finclude%2Fclass_ldap.inc;h=af263e184ce2e20d7da94a5c1b93db695829b8bd;hb=5157b75e725a6b5079c06e413e3264369703ad22;hp=f0e3fe1f85178de7ccd8b589f7e43f5d23e43f17;hpb=590dc277f01b0eafd736783faab81810b006a838;p=gosa.git diff --git a/gosa-core/include/class_ldap.inc b/gosa-core/include/class_ldap.inc index f0e3fe1f8..af263e184 100644 --- a/gosa-core/include/class_ldap.inc +++ b/gosa-core/include/class_ldap.inc @@ -210,7 +210,7 @@ class LDAP{ } else { $basedn = LDAP::convert($basedn); } - return(ereg_replace("[^,]*[,]*[ ]*(.*)", "\\1", $basedn)); + return(preg_replace("/[^,]*[,]*[ ]*(.*)/", "$1", $basedn)); } @@ -219,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); @@ -228,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); } } - $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"; @@ -253,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); @@ -261,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); } } - $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{ @@ -276,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); @@ -663,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(); @@ -970,9 +970,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; @@ -1013,9 +1013,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 */ @@ -1038,11 +1038,11 @@ 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]; @@ -1104,7 +1104,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) { @@ -1116,13 +1116,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 */ @@ -1225,7 +1225,7 @@ class LDAP{ function importcsv($str) { - $lines = split("\n",$str); + $lines = preg_split("/\n/",$str); foreach($lines as $line) { /* continue if theres a comment */ @@ -1237,9 +1237,9 @@ 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); } @@ -1283,7 +1283,7 @@ class LDAP{ continue; } $name= "OID"; - $pattern= split(' ', $val); + $pattern= explode(' ', $val); $ocname= preg_replace("/^.* NAME\s+\(*\s*'([^']+)'\s*\)*.*$/", '\\1', $val); $objectclasses[$ocname]= array(); @@ -1295,7 +1295,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= ""; @@ -1310,7 +1314,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= ""; @@ -1363,10 +1371,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];