principalPrefix = $principalPrefix; $this->principalBackend = $principalBackend; } /** * This method returns a node for a principal. * * The passed array contains principal information, and is guaranteed to * at least contain a uri item. Other properties may or may not be * supplied by the authentication backend. * * @param array $principalInfo * @return Sabre_DAVACL_IPrincipal */ abstract function getChildForPrincipal(array $principalInfo); /** * Returns the name of this collection. * * @return string */ public function getName() { list(,$name) = Sabre_DAV_URLUtil::splitPath($this->principalPrefix); return $name; } /** * Return the list of users * * @return void */ public function getChildren() { if ($this->disableListing) throw new Sabre_DAV_Exception_MethodNotAllowed('Listing members of this collection is disabled'); $children = array(); foreach($this->principalBackend->getPrincipalsByPrefix($this->principalPrefix) as $principalInfo) { $children[] = $this->getChildForPrincipal($principalInfo); } return $children; } /** * Returns a child object, by its name. * * @param string $name * @throws Sabre_DAV_Exception_FileNotFound * @return Sabre_DAV_IPrincipal */ public function getChild($name) { $principalInfo = $this->principalBackend->getPrincipalByPath($this->principalPrefix . '/' . $name); if (!$principalInfo) throw new Sabre_DAV_Exception_FileNotFound('Principal with name ' . $name . ' not found'); return $this->getChildForPrincipal($principalInfo); } }