diff options
Diffstat (limited to 'apps/workflowengine')
-rw-r--r-- | apps/workflowengine/lib/Check/FileMimeType.php | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/apps/workflowengine/lib/Check/FileMimeType.php b/apps/workflowengine/lib/Check/FileMimeType.php index 4a985840e60..8608fffd4e2 100644 --- a/apps/workflowengine/lib/Check/FileMimeType.php +++ b/apps/workflowengine/lib/Check/FileMimeType.php @@ -76,13 +76,22 @@ class FileMimeType extends AbstractStringCheck { return $this->mimeType[$this->storage->getId()][$this->path]; } - $this->mimeType[$this->storage->getId()][$this->path] = ''; if ($this->isWebDAVRequest()) { if ($this->request->getMethod() === 'PUT') { $path = $this->request->getPathInfo(); $this->mimeType[$this->storage->getId()][$this->path] = $this->mimeTypeDetector->detectPath($path); return $this->mimeType[$this->storage->getId()][$this->path]; } + } else if ($this->isPublicWebDAVRequest()) { + if ($this->request->getMethod() === 'PUT') { + $path = $this->request->getPathInfo(); + if (strpos($path, '/webdav/') === 0) { + $path = substr($path, strlen('/webdav')); + } + $path = $this->path . $path; + $this->mimeType[$this->storage->getId()][$path] = $this->mimeTypeDetector->detectPath($path); + return $this->mimeType[$this->storage->getId()][$path]; + } } if (in_array($this->request->getMethod(), ['POST', 'PUT'])) { @@ -159,4 +168,14 @@ class FileMimeType extends AbstractStringCheck { strpos($this->request->getPathInfo(), '/dav/files/') === 0 ); } + + /** + * @return bool + */ + protected function isPublicWebDAVRequest() { + return substr($this->request->getScriptName(), 0 - strlen('/public.php')) === '/public.php' && ( + $this->request->getPathInfo() === '/webdav' || + strpos($this->request->getPathInfo(), '/webdav/') === 0 + ); + } } |