public function getPrincipalMembership($mainPrincipal)
    {
        // First check our cache
        if (isset($this->principalMembershipCache[$mainPrincipal])) {
            return $this->principalMembershipCache[$mainPrincipal];
        }

        $check = [$mainPrincipal];
        $principals = [];

        while (count($check)) {
            $principal = array_shift($check);

            $node = $this->server->tree->getNodeForPath($principal);
            if ($node instanceof IPrincipal) {
                foreach ($node->getGroupMembership() as $groupMember) {
                    if (!in_array($groupMember, $principals)) {
                        $check[] = $groupMember;
                        $principals[] = $groupMember;
                    }
                }
            }
        }

        // Store the result in the cache
        $this->principalMembershipCache[$mainPrincipal] = $principals;

        return $principals;
    }
public function getPrincipalMembership($mainPrincipal)
    {
        // First check our cache
        if (isset($this->principalMembershipCache[$mainPrincipal])) {
            return $this->principalMembershipCache[$mainPrincipal];
        }

        $check = [$mainPrincipal];
        $principals = [];

        while (count($check)) {
            $principal = array_shift($check);

            $node = $this->server->tree->getNodeForPath($principal);
            if ($node instanceof IPrincipal) {
                foreach ($node->getGroupMembership() as $groupMember) {
                    if (!in_array($groupMember, $principals)) {
                        $check[] = $groupMember;
                        $principals[] = $groupMember;
                    }
                }
            }
        }

        // Store the result in the cache
        $this->principalMembershipCache[$mainPrincipal] = $principals;

        return $principals;
    }
public function getPrincipalMembership ( $ mainPrincipal ) { // First check our cache if ( isset ( $ this -> principalMembershipCache [ $ mainPrincipal ] ) ) { return $ this -> principalMembershipCache [ $ mainPrincipal ] ; } $ check = [ $ mainPrincipal ] ; $ principals = [ ] ; while ( count ( $ check ) ) { $ principal = array_shift ( $ check ) ; $ node = $ this -> server -> tree -> getNodeForPath ( $ principal ) ; if ( $ node instanceof IPrincipal ) { foreach ( $ node -> getGroupMembership ( ) as $ groupMember ) { if ( ! in_array ( $ groupMember , $ principals ) ) { $ check [ ] = $ groupMember ; $ principals [ ] = $ groupMember ; } } } } // Store the result in the cache $ this -> principalMembershipCache [ $ mainPrincipal ] = $ principals ; return $ principals ; }
Returns all the principal groups the specified principal is a member of.

@param string $mainPrincipal

@return array
Returns all the principal groups the specified principal is a member of .