Exemplo n.º 1
0
 protected function performMove(ResourceInterface $resource, $destination, $overwrite, &$replaced, StorageInterface $storage)
 {
     $parts = explode('/', $destination);
     $name = array_pop($parts);
     try {
         $parent = $storage->findResource(implode('/', $parts));
     } catch (\OutOfBoundsException $e) {
         throw new WebDavException(WebDav::CODE_CONFLICT);
     }
     if (!$parent->isCollection()) {
         throw new WebDavException(WebDav::CODE_CONFLICT);
     }
     try {
         $target = $storage->findResource($destination);
         if ($resource->getPath() == $target->getPath()) {
             throw new WebDavException(WebDav::CODE_FORBIDDEN);
         }
         if (!$overwrite) {
             throw new WebDavException(WebDav::CODE_PRECONDITION_FAILED);
         }
         $storage->deleteResource($target);
         $replaced = true;
     } catch (\OutOfBoundsException $e) {
     }
     return $storage->moveResource($resource, $parent, $name);
 }