aboutsummaryrefslogtreecommitdiffstats
path: root/apps/files_sharing/lib/Controller/ShareAPIController.php
diff options
context:
space:
mode:
Diffstat (limited to 'apps/files_sharing/lib/Controller/ShareAPIController.php')
-rw-r--r--apps/files_sharing/lib/Controller/ShareAPIController.php31
1 files changed, 31 insertions, 0 deletions
diff --git a/apps/files_sharing/lib/Controller/ShareAPIController.php b/apps/files_sharing/lib/Controller/ShareAPIController.php
index fafdb1a64cd..e40aed0da70 100644
--- a/apps/files_sharing/lib/Controller/ShareAPIController.php
+++ b/apps/files_sharing/lib/Controller/ShareAPIController.php
@@ -45,6 +45,7 @@ declare(strict_types=1);
namespace OCA\Files_Sharing\Controller;
use OC\Files\FileInfo;
+use OCA\DAV\DAV\ViewOnlyPlugin;
use OCA\Files_Sharing\Exceptions\SharingRightsException;
use OCA\Files_Sharing\External\Storage;
use OCA\Files\Helper;
@@ -324,6 +325,11 @@ class ShareAPIController extends OCSController {
$result['mail_send'] = $share->getMailSend() ? 1 : 0;
$result['hide_download'] = $share->getHideDownload() ? 1 : 0;
+ $result['attributes'] = null;
+ if ($attributes = $share->getAttributes()) {
+ $result['attributes'] = \json_encode($attributes->toArray());
+ }
+
return $result;
}
@@ -674,6 +680,8 @@ class ShareAPIController extends OCSController {
$share->setNote($note);
}
+ $share = $this->setShareAttributes($share, $this->request->getParam('attributes', null));
+
try {
$share = $this->shareManager->createShare($share);
} catch (GenericShareException $e) {
@@ -1216,6 +1224,8 @@ class ShareAPIController extends OCSController {
}
}
+ $share = $this->setShareAttributes($share, $this->request->getParam('attributes', null));
+
try {
$share = $this->shareManager->updateShare($share);
} catch (GenericShareException $e) {
@@ -1832,4 +1842,25 @@ class ShareAPIController extends OCSController {
}
}
}
+
+ /**
+ * @param IShare $share
+ * @param string[][]|null $formattedShareAttributes
+ * @return IShare modified share
+ */
+ private function setShareAttributes(IShare $share, $formattedShareAttributes) {
+ $newShareAttributes = $this->shareManager->newShare()->newAttributes();
+ if ($formattedShareAttributes !== null) {
+ foreach ($formattedShareAttributes as $formattedAttr) {
+ $newShareAttributes->setAttribute(
+ $formattedAttr['scope'],
+ $formattedAttr['key'],
+ (bool) \json_decode($formattedAttr['enabled'])
+ );
+ }
+ }
+ $share->setAttributes($newShareAttributes);
+
+ return $share;
+ }
}