Esempio n. 1
0
 public function releaseLock(RequestInterface $request)
 {
     if ($request->getMethod() !== 'PUT' || isset($_SERVER['HTTP_OC_CHUNKED'])) {
         return;
     }
     try {
         $node = $this->tree->getNodeForPath($request->getPath());
     } catch (NotFound $e) {
         return;
     }
     if ($node instanceof Node) {
         $node->releaseLock(ILockingProvider::LOCK_SHARED);
     }
 }
Esempio n. 2
0
 /**
  * Update ownCloud-specific properties
  *
  * @param string $path
  * @param PropPatch $propPatch
  *
  * @return void
  */
 public function handleUpdateProperties($path, PropPatch $propPatch)
 {
     $propPatch->handle(self::GETLASTMODIFIED_PROPERTYNAME, function ($time) use($path) {
         if (empty($time)) {
             return false;
         }
         $node = $this->tree->getNodeForPath($path);
         if (is_null($node)) {
             return 404;
         }
         $node->touch($time);
         return true;
     });
     $propPatch->handle(self::GETETAG_PROPERTYNAME, function ($etag) use($path) {
         if (empty($etag)) {
             return false;
         }
         $node = $this->tree->getNodeForPath($path);
         if (is_null($node)) {
             return 404;
         }
         if ($node->setEtag($etag) !== -1) {
             return true;
         }
         return false;
     });
 }
Esempio n. 3
0
 /**
  * Updates tags and favorites properties, if applicable.
  *
  * @param string $path
  * @param PropPatch $propPatch
  *
  * @return void
  */
 public function handleUpdateProperties($path, PropPatch $propPatch)
 {
     $propPatch->handle(self::TAGS_PROPERTYNAME, function ($tagList) use($path) {
         $node = $this->tree->getNodeForPath($path);
         if (is_null($node)) {
             return 404;
         }
         $this->updateTags($node->getId(), $tagList->getTags());
         return true;
     });
     $propPatch->handle(self::FAVORITE_PROPERTYNAME, function ($favState) use($path) {
         $node = $this->tree->getNodeForPath($path);
         if (is_null($node)) {
             return 404;
         }
         if ((int) $favState === 1 || $favState === 'true') {
             $this->getTagger()->tagAs($node->getId(), self::TAG_FAVORITE);
         } else {
             $this->getTagger()->unTag($node->getId(), self::TAG_FAVORITE);
         }
         if (is_null($favState)) {
             // confirm deletion
             return 204;
         }
         return 200;
     });
 }
 /**
  * Updates properties for a path
  *
  * @param string $path
  * @param PropPatch $propPatch
  *
  * @return void
  */
 public function propPatch($path, PropPatch $propPatch)
 {
     $node = $this->tree->getNodeForPath($path);
     if (!$node instanceof Node) {
         return;
     }
     $propPatch->handleRemaining(function ($changedProps) use($node) {
         return $this->updateProperties($node, $changedProps);
     });
 }
Esempio n. 5
0
 function testTreeMove()
 {
     mkdir(SABRE_TEMPDIR . '/issue33');
     $dir = new FS\Directory(SABRE_TEMPDIR . '/issue33');
     $dir->createDirectory('bar');
     $tree = new Tree($dir);
     $tree->move('bar', urldecode('%C3%A0fo%C3%B3'));
     $node = $tree->getNodeForPath(urldecode('%C3%A0fo%C3%B3'));
     $this->assertEquals(urldecode('%C3%A0fo%C3%B3'), $node->getName());
 }