summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--apps/dav/lib/CardDAV/PhotoCache.php22
-rw-r--r--lib/private/Files/Node/Folder.php4
2 files changed, 18 insertions, 8 deletions
diff --git a/apps/dav/lib/CardDAV/PhotoCache.php b/apps/dav/lib/CardDAV/PhotoCache.php
index fa244857e39..479f66d40ab 100644
--- a/apps/dav/lib/CardDAV/PhotoCache.php
+++ b/apps/dav/lib/CardDAV/PhotoCache.php
@@ -160,16 +160,19 @@ class PhotoCache {
}
/**
- * @param int $addressBookId
- * @param string $cardUri
- * @return ISimpleFolder
+ * @throws NotFoundException
+ * @throws NotPermittedException
*/
- private function getFolder($addressBookId, $cardUri) {
+ private function getFolder(int $addressBookId, string $cardUri, bool $createIfNotExists = true): ISimpleFolder {
$hash = md5($addressBookId . ' ' . $cardUri);
try {
return $this->appData->getFolder($hash);
} catch (NotFoundException $e) {
- return $this->appData->newFolder($hash);
+ if($createIfNotExists) {
+ return $this->appData->newFolder($hash);
+ } else {
+ throw $e;
+ }
}
}
@@ -271,9 +274,14 @@ class PhotoCache {
/**
* @param int $addressBookId
* @param string $cardUri
+ * @throws NotPermittedException
*/
public function delete($addressBookId, $cardUri) {
- $folder = $this->getFolder($addressBookId, $cardUri);
- $folder->delete();
+ try {
+ $folder = $this->getFolder($addressBookId, $cardUri, false);
+ $folder->delete();
+ } catch (NotFoundException $e) {
+ // that's OK, nothing to do
+ }
}
}
diff --git a/lib/private/Files/Node/Folder.php b/lib/private/Files/Node/Folder.php
index a9b443ce52e..ebf67e47a21 100644
--- a/lib/private/Files/Node/Folder.php
+++ b/lib/private/Files/Node/Folder.php
@@ -158,7 +158,9 @@ class Folder extends Node implements \OCP\Files\Folder {
$nonExisting = new NonExistingFolder($this->root, $this->view, $fullPath);
$this->root->emit('\OC\Files', 'preWrite', array($nonExisting));
$this->root->emit('\OC\Files', 'preCreate', array($nonExisting));
- $this->view->mkdir($fullPath);
+ if(!$this->view->mkdir($fullPath)) {
+ throw new NotPermittedException('Could not create folder');
+ }
$node = new Folder($this->root, $this->view, $fullPath);
$this->root->emit('\OC\Files', 'postWrite', array($node));
$this->root->emit('\OC\Files', 'postCreate', array($node));