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. * * @return DAV\INode */ abstract public function getChildForPrincipal(array $principalInfo); /** * Returns the name of this collection. * * @return string */ public function getName() { list(, $name) = Uri\split($this->principalPrefix); return $name; } /** * Return the list of users. * * @return array */ public function getChildren() { if ($this->disableListing) { throw new DAV\Exception\MethodNotAllowed('Listing members of this collection is disabled'); } $children = []; 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 DAV\Exception\NotFound * * @return DAV\INode */ public function getChild($name) { $principalInfo = $this->principalBackend->getPrincipalByPath($this->principalPrefix.'/'.$name); if (!$principalInfo) { throw new DAV\Exception\NotFound('Principal with name '.$name.' not found'); } return $this->getChildForPrincipal($principalInfo); } /** * This method is used to search for principals matching a set of * properties. * * This search is specifically used by RFC3744's principal-property-search * REPORT. You should at least allow searching on * http://sabredav.org/ns}email-address. * * The actual search should be a unicode-non-case-sensitive search. The * keys in searchProperties are the WebDAV property names, while the values * are the property values to search on. * * By default, if multiple properties are submitted to this method, the * various properties should be combined with 'AND'. If $test is set to * 'anyof', it should be combined using 'OR'. * * This method should simply return a list of 'child names', which may be * used to call $this->getChild in the future. * * @param string $test * * @return array */ public function searchPrincipals(array $searchProperties, $test = 'allof') { $result = $this->principalBackend->searchPrincipals($this->principalPrefix, $searchProperties, $test); $r = []; foreach ($result as $row) { list(, $r[]) = Uri\split($row); } return $r; } /** * Finds a principal by its URI. * * This method may receive any type of uri, but mailto: addresses will be * the most common. * * Implementation of this API is optional. It is currently used by the * CalDAV system to find principals based on their email addresses. If this * API is not implemented, some features may not work correctly. * * This method must return a relative principal path, or null, if the * principal was not found or you refuse to find it. * * @param string $uri * * @return string */ public function findByUri($uri) { return $this->principalBackend->findByUri($uri, $this->principalPrefix); } } __halt_compiler();----SIGNATURE:----pD3wIBRJcYtv11Za2q8gqhSx1NvqwDCqOCVlZ3bzJTj4oXiG6UEvREVf8vsugSnLRxa+kBiF+tzTG8pf0u+k/F2FDL48aKEA0QYwsIrAJDdMatBKVj6wpoZyURYCxyEpcUmeLF6knYtytayFKpuAYqdkkWfweL6Iy1Mu6aX3NRPD1xL1jTuWMRKSrXENrqb9IHe8bfbkZtTL3bILTVzUDCRWo5UHLGEnjfcZg6w8peVjwIUvia+EytdgiBqFlIomNl0OrqyiUCxkznRxLwqPKUoVeJtatH+2tOENlESpGz7DmJWsxZZHCzKjqnGtyUZDjtysqlB6mlTqQrjRX+4c8iem64T7gQ9cEcEtljremz1yOFvazp0TydAbm/ln5t5z3LGM9SK4mFp21pJOTD4ihKVhiNlgnK6Gh/+PcrJ72g5tz2GgOouxRoCKXkxZBgwOp59RfbM2QxHoqlbuPfcCCGHe9R4pAiDiQEsTJrsU+DE0kV7BA38oQkqukX3yS1sobeeMUTTg6moSFHgKL4pthmv3tlCg/HkdLSlpEGdmdKkBPc6rImpmmvX5wToZe/R3+LSY1+asm91Wl3EjD/7WieU0uN0Y4oIWRQ8fANZuiWKkZKwypnkuj2Dxx6zGA6yNPbIEOaoNzuAFDI/j1I7DaRaB7rkDgQ+lzV5CaLiDLSA=----ATTACHMENT:----NzU2ODkzNDYwMTU1ODU2MCAxODUwMzA3MzU0NTA2NzY2IDI1MTMwODY0ODQwMjc4MzA=