Export the CalDAV trash bin retention duration as property
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
This commit is contained in:
parent
6578a93463
commit
f1444eac5d
|
@ -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);
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -165,7 +165,7 @@ class Server {
|
|||
$this->server->addPlugin(\OC::$server->query(\OCA\DAV\CalDAV\Schedule\IMipPlugin::class));
|
||||
}
|
||||
|
||||
$this->server->addPlugin(new \OCA\DAV\CalDAV\Trashbin\Plugin($request));
|
||||
$this->server->addPlugin(\OC::$server->get(\OCA\DAV\CalDAV\Trashbin\Plugin::class));
|
||||
$this->server->addPlugin(new \OCA\DAV\CalDAV\WebcalCaching\Plugin($request));
|
||||
$this->server->addPlugin(new \Sabre\CalDAV\Subscriptions\Plugin());
|
||||
|
||||
|
|
Loading…
Reference in New Issue