X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=inc%2Ffunctions.php;h=add970ca8bcb73c58ac51673fedb40c84698e664;hb=0ca5fea0cc893684982894e474a00176853535e6;hp=b0c28f67d6fff20ee4c09f4c3a3579d87c0e3252;hpb=8901ca2183c08784d801280f975cfbddad6a1c2f;p=contagged diff --git a/inc/functions.php b/inc/functions.php index b0c28f6..add970c 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; @@ -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; @@ -340,7 +344,7 @@ function ldap_store_objectclasses($dn,$classes){ $add['objectClass'] = $set; $r = @ldap_mod_replace($LDAP_CON,$dn,$add); - tpl_ldaperror(); + tpl_ldaperror('store object classes'); /* print '
'; print_r($set); @@ -380,23 +384,37 @@ function ldap_queryabooks($filter,$types){ $results = array(); $result1 = array(); $result2 = array(); + $result3 = array(); // public addressbook - $sr = ldap_list($LDAP_CON,$conf['publicbook'], - $filter,$types); + $sr = @ldap_search($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); } + // user account entries + if ($conf['displayusertree']) { + $sr = @ldap_list($LDAP_CON,$conf['usertree'], + $filter,$types); + tpl_ldaperror(); + $result3 = ldap_get_binentries($LDAP_CON, $sr); + ldap_free_result($sr); + } + + + // return merged results - return array_merge((array)$result1,(array)$result2); + return array_merge((array)$result1,(array)$result2,(array)$result3); } /** @@ -501,9 +519,31 @@ function get_fields_from_template($tpl){ $return[] = $FIELDS[$f]; }elseif($FIELDS["_$f"]){ $return[] = $FIELDS["_$f"]; + }elseif($f = 'markers'){ + $return[] = 'marker'; } } return $return; } +function addCoords(&$coords, $entry, $geocoder) +{ + $priv = $geocoder->getPrivateCoords($entry); + if ($priv !== null) { + $priv->address = '' + . $entry['givenname'] . ' ' . $entry['name'] . '
' + . str_replace("\n", '
', $entry['homestreet']); + $coords[] = $priv; + } + + $busi = $geocoder->getBusinessCoords($entry); + if ($busi !== null) { + $busi->address = '' . $entry['organization'] . '
' + . $entry['givenname'] . ' ' . $entry['name'] . '
' + . $entry['street'] . '
' + . $entry['zip'] . ' ' . $entry['location']; + $coords[] = $busi; + } +} + ?>