aboutsummaryrefslogtreecommitdiffstats
path: root/lib/public/Activity/IManager.php
diff options
context:
space:
mode:
Diffstat (limited to 'lib/public/Activity/IManager.php')
-rw-r--r--lib/public/Activity/IManager.php176
1 files changed, 176 insertions, 0 deletions
diff --git a/lib/public/Activity/IManager.php b/lib/public/Activity/IManager.php
new file mode 100644
index 00000000000..d638b8b2c6b
--- /dev/null
+++ b/lib/public/Activity/IManager.php
@@ -0,0 +1,176 @@
+<?php
+
+declare(strict_types=1);
+/**
+ * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-FileCopyrightText: 2016 ownCloud, Inc.
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+namespace OCP\Activity;
+
+use OCP\Activity\Exceptions\FilterNotFoundException;
+use OCP\Activity\Exceptions\IncompleteActivityException;
+use OCP\Activity\Exceptions\SettingNotFoundException;
+
+/**
+ * Interface IManager
+ *
+ * @since 6.0.0
+ */
+interface IManager {
+ /**
+ * Generates a new IEvent object
+ *
+ * Make sure to call at least the following methods before sending it to the
+ * app with via the publish() method:
+ * - setApp()
+ * - setType()
+ * - setAffectedUser()
+ * - setSubject()
+ * - setObject()
+ *
+ * @return IEvent
+ * @since 8.2.0
+ */
+ public function generateEvent(): IEvent;
+
+ /**
+ * Publish an event to the activity consumers
+ *
+ * Make sure to call at least the following methods before sending an Event:
+ * - setApp()
+ * - setType()
+ * - setAffectedUser()
+ * - setSubject()
+ * - setObject()
+ *
+ * @param IEvent $event
+ * @throws IncompleteActivityException if required values have not been set
+ * @since 8.2.0
+ * @since 30.0.0 throws {@see IncompleteActivityException} instead of \BadMethodCallException
+ */
+ public function publish(IEvent $event): void;
+
+ /**
+ * Bulk publish an event for multiple users
+ * taking into account the app specific activity settings
+ *
+ * Make sure to call at least the following methods before sending an Event:
+ * - setApp()
+ * - setType()
+ *
+ * @param IEvent $event
+ * @throws IncompleteActivityException if required values have not been set
+ * @since 32.0.0
+ */
+ public function bulkPublish(IEvent $event, array $affectedUserIds, ISetting $setting): void;
+
+ /**
+ * In order to improve lazy loading a closure can be registered which will be called in case
+ * activity consumers are actually requested
+ *
+ * $callable has to return an instance of \OCP\Activity\IConsumer
+ *
+ * @param \Closure $callable
+ * @since 6.0.0
+ */
+ public function registerConsumer(\Closure $callable): void;
+
+ /**
+ * @param string $filter Class must implement OCA\Activity\IFilter
+ * @since 11.0.0
+ */
+ public function registerFilter(string $filter): void;
+
+ /**
+ * @return IFilter[]
+ * @since 11.0.0
+ */
+ public function getFilters(): array;
+
+ /**
+ * @param string $id
+ * @return IFilter
+ * @throws FilterNotFoundException when the filter was not found
+ * @since 11.0.0
+ * @since 30.0.0 throws {@see FilterNotFoundException} instead of \InvalidArgumentException
+ */
+ public function getFilterById(string $id): IFilter;
+
+ /**
+ * @param string $setting Class must implement OCA\Activity\ISetting
+ * @since 11.0.0
+ */
+ public function registerSetting(string $setting): void;
+
+ /**
+ * @return ActivitySettings[]
+ * @since 11.0.0
+ */
+ public function getSettings(): array;
+
+ /**
+ * @param string $provider Class must implement OCA\Activity\IProvider
+ * @since 11.0.0
+ */
+ public function registerProvider(string $provider): void;
+
+ /**
+ * @return IProvider[]
+ * @since 11.0.0
+ */
+ public function getProviders(): array;
+
+ /**
+ * @param string $id
+ * @return ActivitySettings
+ * @throws SettingNotFoundException when the setting was not found
+ * @since 11.0.0
+ * @since 30.0.0 throws {@see SettingNotFoundException} instead of \InvalidArgumentException
+ */
+ public function getSettingById(string $id): ActivitySettings;
+
+ /**
+ * @param string $type
+ * @param int $id
+ * @since 8.2.0
+ */
+ public function setFormattingObject(string $type, int $id): void;
+
+ /**
+ * @return bool
+ * @since 8.2.0
+ */
+ public function isFormattingFilteredObject(): bool;
+
+ /**
+ * @param bool $status Set to true, when parsing events should not use SVG icons
+ * @since 12.0.1
+ */
+ public function setRequirePNG(bool $status): void;
+
+ /**
+ * @return bool
+ * @since 12.0.1
+ */
+ public function getRequirePNG(): bool;
+
+ /**
+ * Set the user we need to use
+ *
+ * @param string|null $currentUserId
+ * @since 9.0.1
+ */
+ public function setCurrentUserId(?string $currentUserId = null): void;
+
+ /**
+ * Get the user we need to use
+ *
+ * Either the user is logged in, or we try to get it from the token
+ *
+ * @return string
+ * @throws \UnexpectedValueException If the token is invalid, does not exist or is not unique
+ * @since 8.1.0
+ */
+ public function getCurrentUserId(): string;
+}