Example #1
0
 /**
  * Performs actual purging of locks.
  *
  * Iterates over {@link $lockProperties} and purges all locks of which the
  * tokens have been collected in {$locksToPurge}.
  * 
  * @return void
  *
  * @throws ezcWebdavLockAdministrationException
  *         in case purging of a lock failed.
  */
 protected function performPurge()
 {
     foreach ($this->lockProperties as $path => $lockDiscoveryProp) {
         $removeIds = array();
         foreach ($lockDiscoveryProp->activeLock as $id => $activeLock) {
             if (isset($this->locksToPurge[(string) $activeLock->token])) {
                 $removeIds[] = $id;
             }
         }
         if ($removeIds !== array()) {
             foreach ($removeIds as $id) {
                 $lockDiscoveryProp->activeLock->offsetUnset($id);
             }
             $propPatchReq = new ezcWebdavPropPatchRequest($path);
             $propPatchReq->updates = new ezcWebdavFlaggedPropertyStorage();
             $propPatchReq->updates->attach($lockDiscoveryProp, ezcWebdavPropPatchRequest::SET);
             $propPatchReq->validateHeaders();
             $propPatchRes = $this->backend->propPatch($propPatchReq);
             if (!$propPatchRes instanceof ezcWebdavPropPatchResponse) {
                 throw new ezcWebdavLockAdministrationException("PROPPATCH to remove timedout lock failed for '{$path}'.", $propPatchRes);
             }
         }
     }
 }