X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=inc%2Ffunctions.php;h=a5e0631cf46d7dad051abc732773402e9e5364af;hb=b923ce87e422780c66bc65d048e130e29f72109f;hp=9166d31ca0c5e9f77ead7d923a32e21ce2ae7029;hpb=64fca63a29fb2a863d159734627795acfb17c853;p=contagged diff --git a/inc/functions.php b/inc/functions.php index 9166d31..a5e0631 100644 --- a/inc/functions.php +++ b/inc/functions.php @@ -67,7 +67,7 @@ function do_ldap_bind($user,$pass,$dn=""){ if(empty($dn)){ //anonymous bind to lookup users //blank binddn or blank bindpw will result in anonymous bind - if(!ldap_bind($LDAP_CON,$conf['anonbinddn'],$conf['anonbindpw'])){ + if(!@ldap_bind($LDAP_CON,$conf['anonbinddn'],$conf['anonbindpw'])){ die("can not bind for user lookup"); } @@ -89,7 +89,7 @@ function do_ldap_bind($user,$pass,$dn=""){ } //bind with dn - if(ldap_bind($LDAP_CON,$dn,$pass)){ + if(@ldap_bind($LDAP_CON,$dn,$pass)){ //bind successful -> set up session set_session($user,$pass,$dn); return true; @@ -153,7 +153,7 @@ function set_session($user,$pass,$dn){ * cookies; the string is stored inside the cache dir */ function get_cookie_secret(){ - $file = dirname(__FILE__).'/cache/.htcookiesecret.php'; + $file = dirname(__FILE__).'/../cache/.htcookiesecret.php'; if(@file_exists($file)){ return md5(trim(file($file))); } @@ -230,15 +230,19 @@ function prepare_ldap_entry($in){ $out[$FIELDS["_$key"]][] = $value; //shouldn't happen, but to be sure } }else{ - // no mapping found - assume it to be a LDAP attribute (shouldn't happen) - if(is_array($value)){ - $out[$key] = $value; - }else{ - $out[$key][] = $value; - } + // no mapping found we ignore it } } + // special tag handling for Thunderbird + if($conf['tbtaghack'] && in_array('contactPerson',$OCLASSES)){ + if($in['marker'][0]) $out['custom1'][] = $in['marker'][0]; + if($in['marker'][1]) $out['custom2'][] = $in['marker'][1]; + if($in['marker'][2]) $out['custom3'][] = $in['marker'][2]; + if($in['marker'][3]) $out['custom4'][] = $in['marker'][3]; + } + + // add the Objectclasses $out['objectclass'] = $OCLASSES; @@ -382,16 +386,18 @@ function ldap_queryabooks($filter,$types){ $result2 = array(); // public addressbook - $sr = ldap_list($LDAP_CON,$conf['publicbook'], - $filter,$types); + $sr = @ldap_list($LDAP_CON,$conf['publicbook'], + $filter,$types); + tpl_ldaperror(); $result1 = ldap_get_binentries($LDAP_CON, $sr); ldap_free_result($sr); // private addressbook - if(!empty($_SESSION['ldapab']['binddn'])){ + if(!empty($_SESSION['ldapab']['binddn']) && $conf['privatebook']){ $sr = @ldap_list($LDAP_CON,$conf['privatebook']. ','.$_SESSION['ldapab']['binddn'], $filter,$types); + if(ldap_errno($LDAP_CON) != 32) tpl_ldaperror(); // ignore missing address book $result2 = ldap_get_binentries($LDAP_CON, $sr); } @@ -482,5 +488,28 @@ function utf8_encode_array(&$array) { } } +/** + * Returns all the fields used in the template + * + * Returned fields are already decoded to LDAP internals + */ +function get_fields_from_template($tpl){ + global $smarty; + global $FIELDS; + $tpl = $smarty->template_dir.'/'.$tpl; + $data = @file_get_contents($tpl); + $matches = array(); + preg_match_all('/\$entry\.(\w+)/',$data,$matches); + $matches = array_unique((array) $matches[1]); + $return = array(); + foreach($matches as $f){ + if($FIELDS[$f]){ + $return[] = $FIELDS[$f]; + }elseif($FIELDS["_$f"]){ + $return[] = $FIELDS["_$f"]; + } + } + return $return; +} ?>