]> source.dussan.org Git - nextcloud-server.git/commitdiff
enables the file name check also to match name of mountpoints
authorArthur Schiwon <blizzz@arthur-schiwon.de>
Mon, 14 Dec 2020 23:02:43 +0000 (00:02 +0100)
committerArthur Schiwon <blizzz@arthur-schiwon.de>
Mon, 14 Dec 2020 23:05:42 +0000 (00:05 +0100)
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
apps/workflowengine/lib/Check/FileName.php

index 9f2a78aef629497985dc39a3edf53b190a411cf7..893a9a72605f12511226ae46fdb4d72f7c54d610 100644 (file)
@@ -24,6 +24,7 @@ declare(strict_types=1);
 namespace OCA\WorkflowEngine\Check;
 
 use OCA\WorkflowEngine\Entity\File;
+use OCP\Files\Mount\IMountManager;
 use OCP\IL10N;
 use OCP\IRequest;
 use OCP\WorkflowEngine\IFileCheck;
@@ -33,21 +34,38 @@ class FileName extends AbstractStringCheck implements IFileCheck {
 
        /** @var IRequest */
        protected $request;
+       /** @var IMountManager */
+       private $mountManager;
 
        /**
         * @param IL10N $l
         * @param IRequest $request
         */
-       public function __construct(IL10N $l, IRequest $request) {
+       public function __construct(IL10N $l, IRequest $request, IMountManager $mountManager) {
                parent::__construct($l);
                $this->request = $request;
+               $this->mountManager = $mountManager;
        }
 
        /**
         * @return string
         */
        protected function getActualValue(): string {
-               return $this->path === null ? '' : basename($this->path);
+               $fileName = $this->path === null ? '' : basename($this->path);
+               if ($fileName === '' && !$this->storage->isLocal()) {
+                       // Return the mountpoint name of external storages that are not mounted as user home
+                       $mountPoints = $this->mountManager->findByStorageId($this->storage->getId());
+                       if (empty($mountPoints) || $mountPoints[0]->getMountType() !== 'external') {
+                               return $fileName;
+                       }
+                       $mountPointPath = rtrim($mountPoints[0]->getMountPoint(), '/');
+                       $mountPointPieces = explode('/', $mountPointPath);
+                       $mountPointName = array_pop($mountPointPieces);
+                       if (!empty($mountPointName) && $mountPointName !== 'files' && count($mountPointPieces) !== 2) {
+                               return $mountPointName;
+                       }
+               }
+               return $fileName;
        }
 
        /**