Just stumbled over this myself, there seems to be a bug in addressbook_groupdav::read() implementation.
heres is how i ve fixed it.
addressbook/inc/class.addressbook_groupdav.inc.php:
function read($id)
{
return $this->bo->read(is_numeric($id) ? $id : array(‘id’ => $id));
// not working w/ uid !
//return $this->bo->read(is_numeric($id) ? $id : array(‘uid’ => $id));
}
problem is that this function uses id and not uid:
addressbook/inc/class.addressbook_ldap.inc.php:
function read($contact_id)
{
if (is_array($contact_id) && isset($contact_id[‘account_id’]) || substr($contact_id,0,8) == ‘account:’)
{
$filter = ‘uidNumber=’.(int)(is_array($contact_id) ? $contact_id[‘account_id’] : substr($contact_id,8));
}
else
{
$contact_id = ldap::quote(is_array($contact_id) ? $contact_id[‘id’] : $contact_id);
$filter = “(|(entryUUID=$contact_id)(uid=$contact_id))”;
}
$rows = $this->_searchLDAP($GLOBALS[‘egw_info’][‘server’][‘ldap_contact_context’],
$filter, $this->all_attributes, ADDRESSBOOK_ALL);
return $rows ? $rows[0] : false;
}
im not sure if its the right place to fix but i guess its in either of those two functions.
regards,
tolux