Skip to content

Instantly share code, notes, and snippets.

@lgladdy
Created August 14, 2015 07:37
Show Gist options
  • Save lgladdy/e997981ee47b65675eaf to your computer and use it in GitHub Desktop.
Save lgladdy/e997981ee47b65675eaf to your computer and use it in GitHub Desktop.
Rewrite group_info to query a group for more than 1500 people in a group on WS 2012 DCs
public function group_info($group_name,$fields=NULL){
if ($group_name===NULL){ return (false); }
if (!$this->_bind){ return (false); }
if (stristr($group_name, '+')) {
$group_name=stripslashes($group_name);
}
$filter="(&(objectCategory=group)(name=".$this->ldap_slashes($group_name)."))";
//echo ($filter."!!!<br>");
if ($fields===NULL){ $fields=array("member","memberof","cn","description","distinguishedname","objectcategory","samaccountname"); }
$sr=ldap_search($this->_conn,$this->_base_dn,$filter,$fields);
$entries = ldap_get_entries($this->_conn, $sr);
// Windows 2003: Returns up to 1500 values (Windows 2000 only 1000 is not supported).
if ($entries[0]['member;range=0-1499']['count'] == 1500) {
echo "Got more than 1500...";
$entries[0]['member']['count'] = "0";
$rangestep = 1499; // Step site
$rangelow = 0; // Initial low range
$rangehigh = $rangelow + $rangestep; // Initial high range
// do until array_keys($members[0])[0] ends with a '*', e. g. member;range=1499-*. It indicates end of the range
do {
echo "In member search loop bizniz...";
echo "Range low: $rangelow, to $rangehigh";
$sr = ldap_search($this->_conn, $this->_base_dn, $filter, array("member;range=" . $rangelow . "-" . $rangehigh));
$members = ldap_get_entries($this->_conn, $sr);
$memberrange = array_keys($members[0]);
$membercount = $members[0][$memberrange[0]]['count'];
// Copy range entries to member
for ($i = 0; $i <= $membercount -1; $i++) {
$entries[0]['member'][] = $members[0][$memberrange[0]][$i];
}
$entries[0]['member']['count'] += $membercount;
$rangelow += $rangestep +1;
$rangehigh += $rangestep +1;
} while (substr($memberrange[0], -1) != '*');
}
//print_r($entries);
return ($entries);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment