* Addressbook/ActiveDirectory: accounts addressbook was empty, if not explicit context was set

This commit is contained in:
Ralf Becker 2013-06-20 07:46:34 +00:00
parent 7b9bcffb74
commit fe96404533
2 changed files with 6 additions and 14 deletions

View File

@ -38,7 +38,7 @@ class addressbook_ads extends addressbook_ldap
* Filter used for accounts addressbook
* @var string
*/
var $accountsFilter = '(objectclass=user)';
var $accountsFilter = '(objectCategory=person)';
/**
* Attribute used for DN
@ -70,7 +70,6 @@ class addressbook_ads extends addressbook_ldap
*/
function __construct(array $ldap_config=null, $ds=null)
{
//$this->db_data_cols = $this->stock_contact_fields + $this->non_contact_fields;
$this->accountName = $GLOBALS['egw_info']['user']['account_lid'];
if ($ldap_config)

View File

@ -705,15 +705,7 @@ class addressbook_ldap
*/
function &search($criteria,$only_keys=True,$order_by='',$extra_cols='',$wildcard='',$empty=False,$op='AND',$start=false,$filter=null,$join='',$need_full_no_count=false)
{
#$order_by = explode(',',$order_by);
#$order_by = explode(' ',$order_by);
#$sort = $order_by[0];
#$order = $order_by[1];
#$query = $criteria;
#$fields = $only_keys ? ($only_keys === true ? $this->contacts_id : $only_keys) : '';
#$limit = $need_full_no_count ? 0 : $GLOBALS['egw_info']['user']['preferences']['common']['maxmatchs'];
#return parent::read($start,$limit,$fields,$query,$filter,$sort,$order);
error_log(__METHOD__."(".array2string($criteria).", ".array2string($only_keys).", '$order_by', ".array2string($extra_cols).", '$wildcard', '$empty', '$op', ".array2string($start).", ".array2string($filter).")");
if (is_array($filter['owner']))
{
if (count($filter['owner']) == 1)
@ -769,7 +761,7 @@ class addressbook_ldap
// exclude expired accounts
//$shadowExpireNow = floor((time()+date('Z'))/86400);
//$objectFilter .= "(|(!(shadowExpire=*))(shadowExpire>=$shadowExpireNow))";
// shadowExpire>= does NOT work, as shadow schema only specifies intergerMatch and not integerOrderingMatch :-(
// shadowExpire>= does NOT work, as shadow schema only specifies integerMatch and not integerOrderingMatch :-(
$searchFilter = '';
if(is_array($criteria) && count($criteria) > 0)
@ -979,9 +971,9 @@ class addressbook_ldap
$_attributes[] = 'creatorsName';
$_attributes[] = 'modifiersName';
//echo "<p>ldap_search($this->ds, '$_ldapContext', '$_filter', ".array2string($_attributes).", 0, $this->ldapLimit)</p>\n";
//error_log(__METHOD__."('$_ldapContext', '$_filter', ".array2string($_attributes).", $_addressbooktype)");
if($_addressbooktype == ADDRESSBOOK_ALL)
if($_addressbooktype == ADDRESSBOOK_ALL || $_ldapContext == $this->allContactsDN)
{
$result = ldap_search($this->ds, $_ldapContext, $_filter, $_attributes, 0, $this->ldapLimit);
}
@ -990,6 +982,7 @@ class addressbook_ldap
$result = @ldap_list($this->ds, $_ldapContext, $_filter, $_attributes, 0, $this->ldapLimit);
}
if(!$result || !$entries = ldap_get_entries($this->ds, $result)) return array();
//error_log(__METHOD__."('$_ldapContext', '$_filter', ".array2string($_attributes).", $_addressbooktype) result of $entries[count]");
$this->total = $entries['count'];
foreach($entries as $i => $entry)