diff options
author | Christoph Wurst <christoph@winzerhof-wurst.at> | 2021-06-02 16:00:29 +0200 |
---|---|---|
committer | Christoph Wurst <christoph@winzerhof-wurst.at> | 2021-06-02 18:10:07 +0200 |
commit | f1444eac5d6cf64f0700732b47f53919e9ff7c1a (patch) | |
tree | 6fbaadd7d94f05557cc5c4d25883fa5dfe72ed67 /apps/dav/lib/CalDAV | |
parent | 6578a934636fa0cd6a94d2738b9c2fc0cd4cca30 (diff) | |
download | nextcloud-server-f1444eac5d6cf64f0700732b47f53919e9ff7c1a.tar.gz nextcloud-server-f1444eac5d6cf64f0700732b47f53919e9ff7c1a.zip |
Export the CalDAV trash bin retention duration as property
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
Diffstat (limited to 'apps/dav/lib/CalDAV')
-rw-r--r-- | apps/dav/lib/CalDAV/RetentionService.php | 8 | ||||
-rw-r--r-- | apps/dav/lib/CalDAV/Trashbin/Plugin.php | 14 |
2 files changed, 19 insertions, 3 deletions
diff --git a/apps/dav/lib/CalDAV/RetentionService.php b/apps/dav/lib/CalDAV/RetentionService.php index 934e6f71530..7342b719c81 100644 --- a/apps/dav/lib/CalDAV/RetentionService.php +++ b/apps/dav/lib/CalDAV/RetentionService.php @@ -51,8 +51,8 @@ class RetentionService { $this->calDavBackend = $calDavBackend; } - public function cleanUp(): void { - $retentionTime = max( + public function getDuration(): int { + return max( (int) $this->config->getAppValue( Application::APP_ID, self::RETENTION_CONFIG_KEY, @@ -60,6 +60,10 @@ class RetentionService { ), 0 // Just making sure we don't delete things in the future when a negative number is passed ); + } + + public function cleanUp(): void { + $retentionTime = $this->getDuration(); $now = $this->time->getTime(); $calendars = $this->calDavBackend->getDeletedCalendars($now - $retentionTime); diff --git a/apps/dav/lib/CalDAV/Trashbin/Plugin.php b/apps/dav/lib/CalDAV/Trashbin/Plugin.php index fd47e1faa30..93f17cc5b7c 100644 --- a/apps/dav/lib/CalDAV/Trashbin/Plugin.php +++ b/apps/dav/lib/CalDAV/Trashbin/Plugin.php @@ -27,6 +27,7 @@ namespace OCA\DAV\CalDAV\Trashbin; use Closure; use OCA\DAV\CalDAV\Calendar; +use OCA\DAV\CalDAV\RetentionService; use OCP\IRequest; use Sabre\DAV\Exception\NotFound; use Sabre\DAV\INode; @@ -41,15 +42,21 @@ use function implode; class Plugin extends ServerPlugin { public const PROPERTY_DELETED_AT = '{http://nextcloud.com/ns}deleted-at'; public const PROPERTY_CALENDAR_URI = '{http://nextcloud.com/ns}calendar-uri'; + public const PROPERTY_RETENTION_DURATION = '{http://nextcloud.com/ns}trash-bin-retention-duration'; /** @var bool */ private $disableTrashbin; + /** @var RetentionService */ + private $retentionService; + /** @var Server */ private $server; - public function __construct(IRequest $request) { + public function __construct(IRequest $request, + RetentionService $retentionService) { $this->disableTrashbin = $request->getHeader('X-NC-CalDAV-No-Trashbin') === '1'; + $this->retentionService = $retentionService; } public function initialize(Server $server): void { @@ -100,6 +107,11 @@ class Plugin extends ServerPlugin { return $node->getCalendarUri(); }); } + if ($node instanceof TrashbinHome) { + $propFind->handle(self::PROPERTY_RETENTION_DURATION, function () use ($node) { + return $this->retentionService->getDuration(); + }); + } } public function getFeatures(): array { |