Example #1
0
 /**
  * Get contact information. Returned in a raw array format from AD
  * 
  * @param string $distinguisedname The full DN of a contact
  * @param array $fields Attributes to be returned
  * @return array
  */
 public function info($distinguishedName, $fields = NULL)
 {
     if ($distinguishedName === NULL) {
         return false;
     }
     if (!$this->adldap->getLdapBind()) {
         return false;
     }
     $filter = "distinguishedName=" . $distinguishedName;
     if ($fields === NULL) {
         $fields = array("distinguishedname", "mail", "memberof", "department", "displayname", "telephonenumber", "primarygroupid", "objectsid");
     }
     $sr = ldap_search($this->adldap->getLdapConnection(), $this->adldap->getBaseDn(), $filter, $fields);
     $entries = ldap_get_entries($this->adldap->getLdapConnection(), $sr);
     if ($entries[0]['count'] >= 1) {
         // AD does not return the primary group in the ldap query, we may need to fudge it
         if ($this->adldap->getRealPrimaryGroup() && isset($entries[0]["primarygroupid"][0]) && isset($entries[0]["primarygroupid"][0])) {
             //$entries[0]["memberof"][]=$this->group_cn($entries[0]["primarygroupid"][0]);
             $entries[0]["memberof"][] = $this->adldap->group()->getPrimaryGroup($entries[0]["primarygroupid"][0], $entries[0]["objectsid"][0]);
         } else {
             $entries[0]["memberof"][] = "CN=Domain Users,CN=Users," . $this->adldap->getBaseDn();
         }
     }
     $entries[0]["memberof"]["count"]++;
     return $entries;
 }
Example #2
0
 /**
  * Find information about the users. Returned in a raw array format from AD
  * 
  * @param string $username The username to query
  * @param array $fields Array of parameters to query
  * @param bool $isGUID Is the username passed a GUID or a samAccountName
  * @return array
  */
 public function info($username, $fields = NULL, $isGUID = false, $type = NULL)
 {
     if ($username === NULL) {
         return false;
     }
     if (!$this->adldap->getLdapBind()) {
         return false;
     }
     if ($isGUID === true) {
         $username = $this->adldap->utilities()->strGuidToHex($username);
         $filter = "objectguid=" . $username;
     } else {
         if (strstr($username, "@")) {
             $filter = "userPrincipalName=" . $username;
         } else {
             if ($type == "NetIQ") {
                 $filter = "cn=" . $username;
             } elseif ($type == "LDAP") {
                 $filter = "uid=" . $username;
             } else {
                 $filter = "samaccountname=" . $username;
             }
         }
     }
     $filter = ($type == "NetIQ" or $type == "LDAP") ? "(&(objectClass=person)({$filter}))" : "(&(objectCategory=person)({$filter}))";
     if ($fields === NULL) {
         $fields = array("samaccountname", "mail", "memberof", "department", "displayname", "telephonenumber", "primarygroupid", "objectsid");
     }
     if (!in_array("objectsid", $fields)) {
         $fields[] = "objectsid";
     }
     $sr = ldap_search($this->adldap->getLdapConnection(), $this->adldap->getBaseDn(), $filter, $fields);
     $entries = ldap_get_entries($this->adldap->getLdapConnection(), $sr);
     if ($type == "NetIQ" && sizeof(@$entries) > 0 && isset($entries)) {
         foreach ($entries as $key => $u) {
             @($entries[@$key]['displayname'] = $u['fullname']);
             @($entries[@$key]['samaccountname'] = $u['cn']);
         }
     }
     if (isset($entries[0])) {
         if ($entries[0]['count'] >= 1) {
             if (in_array("memberof", $fields)) {
                 // AD does not return the primary group in the ldap query, we may need to fudge it
                 if ($this->adldap->getRealPrimaryGroup() && isset($entries[0]["primarygroupid"][0]) && isset($entries[0]["objectsid"][0])) {
                     //$entries[0]["memberof"][]=$this->group_cn($entries[0]["primarygroupid"][0]);
                     $entries[0]["memberof"][] = $this->adldap->group()->getPrimaryGroup($entries[0]["primarygroupid"][0], $entries[0]["objectsid"][0]);
                 } else {
                     $entries[0]["memberof"][] = "CN=Domain Users,CN=Users," . $this->adldap->getBaseDn();
                 }
                 if (!isset($entries[0]["memberof"]["count"])) {
                     $entries[0]["memberof"]["count"] = 0;
                 }
                 $entries[0]["memberof"]["count"]++;
             }
         }
         return $entries;
     }
     return false;
 }
Example #3
0
 /**
  * Find information about the users. Returned in a raw array format from AD
  * 
  * @param string $username The username to query
  * @param array $fields Array of parameters to query
  * @param bool $isGUID Is the username passed a GUID or a samAccountName
  * @return array
  */
 public function info($username, $fields = NULL, $isGUID = false)
 {
     if ($username === NULL) {
         return false;
     }
     if (!$this->adldap->getLdapBind()) {
         $GLOBALS["CLASS_ACTV"][] = __FUNCTION__ . ": LINE:" . __LINE__ . ":getLdapBind() return false";
         return false;
     }
     if ($isGUID === true) {
         $username = $this->adldap->utilities()->strGuidToHex($username);
         $filter = "objectguid=" . $username;
     } else {
         if (strstr($username, "@")) {
             $filter = "userPrincipalName=" . $username;
         } else {
             $filter = "samaccountname=" . $username;
         }
     }
     $filter = "(&(objectCategory=person)({$filter}))";
     if ($fields === NULL) {
         $fields = array("samaccountname", "mail", "memberof", "department", "displayname", "telephonenumber", "primarygroupid", "objectsid");
     }
     if (!in_array("objectsid", $fields)) {
         $fields[] = "objectsid";
     }
     $getBaseDn = $this->adldap->getBaseDn();
     $GLOBALS["CLASS_ACTV"][] = __FUNCTION__ . ": LINE:" . __LINE__ . ":Search {$filter} in {$getBaseDn}";
     $sr = ldap_search($this->adldap->getLdapConnection(), $getBaseDn, $filter, $fields);
     if (!$sr) {
         $GLOBALS["CLASS_ACTV"][] = __FUNCTION__ . ": LINE:" . __LINE__ . ":Search  Failed";
     }
     $entries = ldap_get_entries($this->adldap->getLdapConnection(), $sr);
     if (isset($entries[0])) {
         if ($entries[0]['count'] >= 1) {
             if (in_array("memberof", $fields)) {
                 // AD does not return the primary group in the ldap query, we may need to fudge it
                 if ($this->adldap->getRealPrimaryGroup() && isset($entries[0]["primarygroupid"][0]) && isset($entries[0]["objectsid"][0])) {
                     //$entries[0]["memberof"][]=$this->group_cn($entries[0]["primarygroupid"][0]);
                     $entries[0]["memberof"][] = $this->adldap->group()->getPrimaryGroup($entries[0]["primarygroupid"][0], $entries[0]["objectsid"][0]);
                 } else {
                     $entries[0]["memberof"][] = "CN=Domain Users,CN=Users," . $this->adldap->getBaseDn();
                 }
                 if (!isset($entries[0]["memberof"]["count"])) {
                     $entries[0]["memberof"]["count"] = 0;
                 }
                 $entries[0]["memberof"]["count"]++;
             }
         }
         return $entries;
     }
     return false;
 }
 /**
  * Find information about the users. Returned in a raw array format from AD
  * 
  * @param string $username The username to query
  * @param array $fields Array of parameters to query
  * @param bool $isGUID Is the username passed a GUID or a samAccountName
  * @return array
  */
 public function info($username, $fields = NULL, $isGUID = false)
 {
     if ($username === NULL) {
         return false;
     }
     //if (!$this->adldap->getLdapBind()) { print 'No bind!'; return false; }
     if ($isGUID === true) {
         $username = $this->adldap->utilities()->strGuidToHex($username);
         $filter = "objectguid=" . $username;
     } else {
         if (strstr($username, "@")) {
             $user = explode('@', $username);
             $user = $user[0];
             $filter = "uid=" . $user;
         } else {
             $filter = "uid=" . $username;
         }
     }
     $filter = "(&(objectClass=person)({$filter}))";
     if ($fields === NULL) {
         $fields = array("samaccountname", "mail", "memberof", "department", "displayname", "telephonenumber", "primarygroupid", "objectsid");
     }
     if (!in_array("objectsid", $fields)) {
         $fields[] = "objectsid";
     }
     $sr = ldap_search($this->adldap->getLdapConnection(), $this->adldap->getBaseDn(), $filter, $fields);
     $entries = ldap_get_entries($this->adldap->getLdapConnection(), $sr);
     if (isset($entries[0])) {
         if ($entries[0]['count'] >= 1) {
             if (in_array("memberof", $fields)) {
                 // AD does not return the primary group in the ldap query, we may need to fudge it
                 if ($this->adldap->getRealPrimaryGroup() && isset($entries[0]["primarygroupid"][0]) && isset($entries[0]["objectsid"][0])) {
                     //$entries[0]["memberof"][]=$this->group_cn($entries[0]["primarygroupid"][0]);
                     $entries[0]["memberof"][] = $this->adldap->group()->getPrimaryGroup($entries[0]["primarygroupid"][0], $entries[0]["objectsid"][0]);
                 } else {
                     $entries[0]["memberof"][] = "CN=Domain Users,CN=Users," . $this->adldap->getBaseDn();
                 }
                 if (!isset($entries[0]["memberof"]["count"])) {
                     $entries[0]["memberof"]["count"] = 0;
                 }
                 $entries[0]["memberof"]["count"]++;
             }
         }
         return $entries;
     }
     return false;
 }