Greets,

I am playing around with usort and an LDAP class.  Basically, I want to sort
the results of an LDAP search based on a specific criterion.

class CLDAP {
  var $m_Entries;
  var $m_LinkIdentifier;
  ...

  function Connect() {
    ...
  }

  function Bind() {
    ...
  }

  function FindEntries($BaseDN, $Filter) {
    $ProcName="CLDAP::FindEntries";
    $LDAPSearchResult=ldap_search($this->m_LinkIdentifier, "$BaseDN",
"$Filter");

    if($LDAPSearchResult) {
      $Entries=ldap_get_entries($this->m_LinkIdentifier, $LDAPSearchResult);
      if($Entries) {
        //print "$ProcName: Entries found for filter of $Filter<br>";
        $this->m_Entries = $Entries;
       } else {
        // No entries
        //print "$ProcName: No entries found for filter of $Filter<br>";
      }
    }
  }

  //*************************
  //*  SORT CLASS MEMBERS
  //*************************
  function MySort() {
    $ProcName = "CLDAP::MySort";

    // Sort the entries    ;
    print "$ProcName: BEFORE: " . $this->m_Entries["count"] . "<br>";
    usort($this->m_Entries, array($this,"cmp"));
    print "$ProcName: AFTER: " . $this->m_Entries["count"] . "<br>";
  }

  function cmp ($a, $b) {
    $ProcName = "CLDAP:cmp";
    print "$ProcName: IN COMPARE: " . $this->m_Entries["count"] . "<br>";
    return strcmp($a["sn"],$b["sn"]);
  }
}

Now, with the above (hacked up) example, I create my LDAP object, connect to
an LDAP server and retrieve values based on a DN and Filter.  Essentially, I
get a multi-dimensional array populated with the results from my LDAP
filter, with key references to their attributes ("givenname" = first name,
"sn" = last name, etc...).  This works!  I can populate my object property
'$this->m_Entries' with my UNSORTED LDAP results.

When I run the $LDAP->MySort() routine, '$this->m_Entries' has values BEFORE
the usort function call, but has NULL entries AFTER the function call.
'$this->cmp' has values each time it is called.  Somehow, my data is being
wiped out by usort after I return from '$this->cmp'.  The above example is
attempting to sort my LDAP results by "sn", or last name in LDAP-ese.

What is happening here?  Why is my array of results disappearing after the
usort?  I played with globals, and I even saved my array into a temp
variable and used that instead.  The temp variable is fine before the usort,
but is totally gone after.  Any help is appreciated!

Cheers,
Jason



-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]

Reply via email to