Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/server.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'apps/files_sharing/lib/api.php')
-rw-r--r--apps/files_sharing/lib/api.php29
1 files changed, 27 insertions, 2 deletions
diff --git a/apps/files_sharing/lib/api.php b/apps/files_sharing/lib/api.php
index 50ba74f5beb..faf141db25f 100644
--- a/apps/files_sharing/lib/api.php
+++ b/apps/files_sharing/lib/api.php
@@ -339,6 +339,8 @@ class Api {
return self::updatePassword($share, $params);
} elseif (isset($params['_put']['publicUpload'])) {
return self::updatePublicUpload($share, $params);
+ } elseif (isset($params['_put']['expireDate'])) {
+ return self::updateExpireDate($share, $params);
}
} catch (\Exception $e) {
@@ -409,7 +411,7 @@ class Api {
if ($share['item_type'] !== 'folder' ||
(int)$share['share_type'] !== \OCP\Share::SHARE_TYPE_LINK ) {
- return new \OC_OCS_Result(null, 404, "public upload is only possible for public shared folders");
+ return new \OC_OCS_Result(null, 400, "public upload is only possible for public shared folders");
}
// read, create, update (7) if public upload is enabled or
@@ -421,6 +423,29 @@ class Api {
}
/**
+ * set expire date for public link share
+ * @param array $share information about the share
+ * @param array $params contains 'expireDate' which needs to be a well formated date string, e.g DD-MM-YYYY
+ * @return \OC_OCS_Result
+ */
+ private static function updateExpireDate($share, $params) {
+ // only public links can have a expire date
+ if ((int)$share['share_type'] !== \OCP\Share::SHARE_TYPE_LINK ) {
+ return new \OC_OCS_Result(null, 400, "expire date only exists for public link shares");
+ }
+
+ try {
+ $expireDateSet = \OCP\Share::setExpirationDate($share['item_type'], $share['item_source'], $params['_put']['expireDate'], (int)$share['stime']);
+ $result = ($expireDateSet) ? new \OC_OCS_Result() : new \OC_OCS_Result(null, 404, "couldn't set expire date");
+ } catch (\Exception $e) {
+ $result = new \OC_OCS_Result(null, 404, $e->getMessage());
+ }
+
+ return $result;
+
+ }
+
+ /**
* update password for public link share
* @param array $share information about the share
* @param array $params 'password'
@@ -555,7 +580,7 @@ class Api {
* @return array with: item_source, share_type, share_with, item_type, permissions
*/
private static function getShareFromId($shareID) {
- $sql = 'SELECT `file_source`, `item_source`, `share_type`, `share_with`, `item_type`, `permissions` FROM `*PREFIX*share` WHERE `id` = ?';
+ $sql = 'SELECT `file_source`, `item_source`, `share_type`, `share_with`, `item_type`, `permissions`, `stime` FROM `*PREFIX*share` WHERE `id` = ?';
$args = array($shareID);
$query = \OCP\DB::prepare($sql);
$result = $query->execute($args);