aboutsummaryrefslogtreecommitdiffstats
path: root/lib/public/Files/Events/BeforeZipCreatedEvent.php
diff options
context:
space:
mode:
Diffstat (limited to 'lib/public/Files/Events/BeforeZipCreatedEvent.php')
-rw-r--r--lib/public/Files/Events/BeforeZipCreatedEvent.php98
1 files changed, 98 insertions, 0 deletions
diff --git a/lib/public/Files/Events/BeforeZipCreatedEvent.php b/lib/public/Files/Events/BeforeZipCreatedEvent.php
new file mode 100644
index 00000000000..0363d385d36
--- /dev/null
+++ b/lib/public/Files/Events/BeforeZipCreatedEvent.php
@@ -0,0 +1,98 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+
+namespace OCP\Files\Events;
+
+use OCP\EventDispatcher\Event;
+use OCP\Files\Folder;
+
+/**
+ * This event is triggered before a archive is created when a user requested
+ * downloading a folder or multiple files.
+ *
+ * By setting `successful` to false the tar creation can be aborted and the download denied.
+ *
+ * @since 25.0.0
+ */
+class BeforeZipCreatedEvent extends Event {
+ private string $directory;
+ private bool $successful = true;
+ private ?string $errorMessage = null;
+ private ?Folder $folder = null;
+
+ /**
+ * @param list<string> $files
+ * @since 25.0.0
+ * @since 31.0.0 support `OCP\Files\Folder` as `$directory` parameter - passing a string is deprecated now
+ */
+ public function __construct(
+ string|Folder $directory,
+ private array $files,
+ ) {
+ parent::__construct();
+ if ($directory instanceof Folder) {
+ $this->directory = $directory->getPath();
+ $this->folder = $directory;
+ } else {
+ $this->directory = $directory;
+ }
+ }
+
+ /**
+ * @since 31.0.0
+ */
+ public function getFolder(): ?Folder {
+ return $this->folder;
+ }
+
+ /**
+ * @since 25.0.0
+ */
+ public function getDirectory(): string {
+ return $this->directory;
+ }
+
+ /**
+ * @since 25.0.0
+ */
+ public function getFiles(): array {
+ return $this->files;
+ }
+
+ /**
+ * @since 25.0.0
+ */
+ public function isSuccessful(): bool {
+ return $this->successful;
+ }
+
+ /**
+ * Set if the event was successful
+ *
+ * @since 25.0.0
+ */
+ public function setSuccessful(bool $successful): void {
+ $this->successful = $successful;
+ }
+
+ /**
+ * Get the error message, if any
+ * @since 25.0.0
+ */
+ public function getErrorMessage(): ?string {
+ return $this->errorMessage;
+ }
+
+ /**
+ * @since 25.0.0
+ */
+ public function setErrorMessage(string $errorMessage): void {
+ $this->errorMessage = $errorMessage;
+ }
+}