/** * This method intercepts PROPPATCH methods and make sure the * group-member-set is updated correctly. * * @param array $propertyDelta * @param array $result * @param Sabre_DAV_INode $node * @return void */ public function updateProperties(&$propertyDelta, &$result, Sabre_DAV_INode $node) { if (!array_key_exists('{DAV:}group-member-set', $propertyDelta)) { return; } if (is_null($propertyDelta['{DAV:}group-member-set'])) { $memberSet = array(); } elseif ($propertyDelta['{DAV:}group-member-set'] instanceof Sabre_DAV_Property_HrefList) { $memberSet = $propertyDelta['{DAV:}group-member-set']->getHrefs(); } else { throw new Sabre_DAV_Exception('The group-member-set property MUST be an instance of Sabre_DAV_Property_HrefList or null'); } if (!$node instanceof Sabre_DAVACL_IPrincipal) { $result[403]['{DAV:}group-member-set'] = null; unset($propertyDelta['{DAV:}group-member-set']); // Returning false will stop the updateProperties process return false; } $node->setGroupMemberSet($memberSet); $result[200]['{DAV:}group-member-set'] = null; unset($propertyDelta['{DAV:}group-member-set']); }