diff options
-rw-r--r-- | apps/workflowengine/lib/Check/FileMimeType.php | 12 | ||||
-rw-r--r-- | apps/workflowengine/lib/Check/TFileCheck.php | 7 | ||||
-rw-r--r-- | apps/workflowengine/lib/Service/RuleMatcher.php | 5 | ||||
-rw-r--r-- | lib/public/WorkflowEngine/IFileCheck.php | 5 |
4 files changed, 22 insertions, 7 deletions
diff --git a/apps/workflowengine/lib/Check/FileMimeType.php b/apps/workflowengine/lib/Check/FileMimeType.php index 25c4ed28b47..77463d8960a 100644 --- a/apps/workflowengine/lib/Check/FileMimeType.php +++ b/apps/workflowengine/lib/Check/FileMimeType.php @@ -57,12 +57,18 @@ class FileMimeType extends AbstractStringCheck implements IFileCheck { /** * @param IStorage $storage * @param string $path + * @param bool $isDir */ - public function setFileInfo(IStorage $storage, string $path) { - $this->_setFileInfo($storage, $path); + public function setFileInfo(IStorage $storage, string $path, bool $isDir = false): void { + $this->_setFileInfo($storage, $path, $isDir); if (!isset($this->mimeType[$this->storage->getId()][$this->path]) || $this->mimeType[$this->storage->getId()][$this->path] === '') { - $this->mimeType[$this->storage->getId()][$this->path] = null; + + if ($isDir) { + $this->mimeType[$this->storage->getId()][$this->path] = 'httpd/unix-directory'; + } else { + $this->mimeType[$this->storage->getId()][$this->path] = null; + } } } diff --git a/apps/workflowengine/lib/Check/TFileCheck.php b/apps/workflowengine/lib/Check/TFileCheck.php index 383c2d4ef5f..afaf46b52bf 100644 --- a/apps/workflowengine/lib/Check/TFileCheck.php +++ b/apps/workflowengine/lib/Check/TFileCheck.php @@ -37,14 +37,19 @@ trait TFileCheck { /** @var string */ protected $path; + /** @var bool */ + protected $isDir; + /** * @param IStorage $storage * @param string $path + * @param bool $isDir * @since 18.0.0 */ - public function setFileInfo(IStorage $storage, string $path) { + public function setFileInfo(IStorage $storage, string $path, bool $isDir = false): void { $this->storage = $storage; $this->path = $path; + $this->isDir = $isDir; } /** diff --git a/apps/workflowengine/lib/Service/RuleMatcher.php b/apps/workflowengine/lib/Service/RuleMatcher.php index 16f0e486aaa..b08bcbbe56b 100644 --- a/apps/workflowengine/lib/Service/RuleMatcher.php +++ b/apps/workflowengine/lib/Service/RuleMatcher.php @@ -71,9 +71,10 @@ class RuleMatcher implements IRuleMatcher { $this->l = $l; } - public function setFileInfo(IStorage $storage, string $path): void { + public function setFileInfo(IStorage $storage, string $path, bool $isDir = false): void { $this->fileInfo['storage'] = $storage; $this->fileInfo['path'] = $path; + $this->fileInfo['isDir'] = $isDir; } public function setEntitySubject(IEntity $entity, $subject): void { @@ -168,7 +169,7 @@ class RuleMatcher implements IRuleMatcher { if (empty($this->fileInfo)) { throw new RuntimeException('Must set file info before running the check'); } - $checkInstance->setFileInfo($this->fileInfo['storage'], $this->fileInfo['path']); + $checkInstance->setFileInfo($this->fileInfo['storage'], $this->fileInfo['path'], $this->fileInfo['isDir']); } elseif ($checkInstance instanceof IEntityCheck) { foreach($this->contexts as $entityInfo) { list($entity, $subject) = $entityInfo; diff --git a/lib/public/WorkflowEngine/IFileCheck.php b/lib/public/WorkflowEngine/IFileCheck.php index 07626a0071d..546b72fa2dc 100644 --- a/lib/public/WorkflowEngine/IFileCheck.php +++ b/lib/public/WorkflowEngine/IFileCheck.php @@ -37,8 +37,11 @@ use OCP\Files\Storage\IStorage; */ interface IFileCheck extends IEntityCheck { /** + * @param IStorage $storage + * @param string $path + * @param bool $isDir * @since 18.0.0 */ - public function setFileInfo(IStorage $storage, string $path); + public function setFileInfo(IStorage $storage, string $path, bool $isDir = false): void; } |