示例#1
0
 /**
  * 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']);
 }