aboutsummaryrefslogtreecommitdiffstats
path: root/apps
diff options
context:
space:
mode:
authorJohn Molakvoæ <skjnldsv@users.noreply.github.com>2024-10-15 09:15:16 +0200
committerGitHub <noreply@github.com>2024-10-15 09:15:16 +0200
commit832695d5654bb3bfe81a29a3557d99b2b4a334f0 (patch)
tree1a3d5e94aee7ed9a1424869476087dc51b61145c /apps
parent07f822c916565c9e6110840d00c4dd36dd22d2aa (diff)
parentabd0cddd38dca34c6f7c0fa8e809aa5d04e3586b (diff)
downloadnextcloud-server-832695d5654bb3bfe81a29a3557d99b2b4a334f0.tar.gz
nextcloud-server-832695d5654bb3bfe81a29a3557d99b2b4a334f0.zip
Merge pull request #48206 from nextcloud/feat/systemtags-public
Diffstat (limited to 'apps')
-rw-r--r--apps/dav/appinfo/v2/publicremote.php8
-rw-r--r--apps/dav/lib/SystemTag/SystemTagList.php14
-rw-r--r--apps/dav/lib/SystemTag/SystemTagPlugin.php6
-rw-r--r--apps/systemtags/composer/composer/autoload_classmap.php3
-rw-r--r--apps/systemtags/composer/composer/autoload_static.php3
-rw-r--r--apps/systemtags/lib/AppInfo/Application.php8
-rw-r--r--apps/systemtags/lib/Listeners/BeforeSabrePubliclyLoadedListener.php32
-rw-r--r--apps/systemtags/lib/Listeners/BeforeTemplateRenderedListener.php26
-rw-r--r--apps/systemtags/lib/Listeners/LoadAdditionalScriptsListener.php26
9 files changed, 114 insertions, 12 deletions
diff --git a/apps/dav/appinfo/v2/publicremote.php b/apps/dav/appinfo/v2/publicremote.php
index 0b7480872cb..cc2d1ed5bc8 100644
--- a/apps/dav/appinfo/v2/publicremote.php
+++ b/apps/dav/appinfo/v2/publicremote.php
@@ -12,6 +12,7 @@ use OC\Files\View;
use OCA\DAV\Storage\PublicOwnerWrapper;
use OCA\DAV\Storage\PublicShareWrapper;
use OCA\FederatedFileSharing\FederatedShareProvider;
+use OCP\BeforeSabrePubliclyLoadedEvent;
use OCP\EventDispatcher\IEventDispatcher;
use OCP\Files\Mount\IMountManager;
use OCP\IConfig;
@@ -35,6 +36,7 @@ OC_Util::obEnd();
$session = \OCP\Server::get(ISession::class);
$request = \OCP\Server::get(IRequest::class);
+$eventDispatcher = \OCP\Server::get(IEventDispatcher::class);
$session->close();
$requestUri = $request->getRequestUri();
@@ -59,7 +61,7 @@ $serverFactory = new OCA\DAV\Connector\Sabre\ServerFactory(
\OCP\Server::get(ITagManager::class),
$request,
\OCP\Server::get(IPreview::class),
- \OCP\Server::get(IEventDispatcher::class),
+ $eventDispatcher,
$l10nFactory->get('dav'),
);
@@ -135,5 +137,9 @@ $server = $serverFactory->createServer($baseuri, $requestUri, $authPlugin, funct
$server->addPlugin($linkCheckPlugin);
$server->addPlugin($filesDropPlugin);
+// allow setup of additional plugins
+$event = new BeforeSabrePubliclyLoadedEvent($server);
+$eventDispatcher->dispatchTyped($event);
+
// And off we go!
$server->start();
diff --git a/apps/dav/lib/SystemTag/SystemTagList.php b/apps/dav/lib/SystemTag/SystemTagList.php
index cbdf98b752f..087c84fabd9 100644
--- a/apps/dav/lib/SystemTag/SystemTagList.php
+++ b/apps/dav/lib/SystemTag/SystemTagList.php
@@ -20,12 +20,14 @@ use Sabre\Xml\Writer;
class SystemTagList implements Element {
public const NS_NEXTCLOUD = 'http://nextcloud.org/ns';
- /** @var ISystemTag[] */
- private array $tags;
- private ISystemTagManager $tagManager;
- private IUser $user;
-
- public function __construct(array $tags, ISystemTagManager $tagManager, IUser $user) {
+ /**
+ * @param ISystemTag[] $tags
+ */
+ public function __construct(
+ private array $tags,
+ private ISystemTagManager $tagManager,
+ private ?IUser $user,
+ ) {
$this->tags = $tags;
$this->tagManager = $tagManager;
$this->user = $user;
diff --git a/apps/dav/lib/SystemTag/SystemTagPlugin.php b/apps/dav/lib/SystemTag/SystemTagPlugin.php
index bf7e5e00053..6098a41ab3b 100644
--- a/apps/dav/lib/SystemTag/SystemTagPlugin.php
+++ b/apps/dav/lib/SystemTag/SystemTagPlugin.php
@@ -305,9 +305,6 @@ class SystemTagPlugin extends \Sabre\DAV\ServerPlugin {
$propFind->handle(self::SYSTEM_TAGS_PROPERTYNAME, function () use ($node) {
$user = $this->userSession->getUser();
- if ($user === null) {
- return;
- }
$tags = $this->getTagsForFile($node->getId(), $user);
usort($tags, function (ISystemTag $tagA, ISystemTag $tagB): int {
@@ -321,8 +318,7 @@ class SystemTagPlugin extends \Sabre\DAV\ServerPlugin {
* @param int $fileId
* @return ISystemTag[]
*/
- private function getTagsForFile(int $fileId, IUser $user): array {
-
+ private function getTagsForFile(int $fileId, ?IUser $user): array {
if (isset($this->cachedTagMappings[$fileId])) {
$tagIds = $this->cachedTagMappings[$fileId];
} else {
diff --git a/apps/systemtags/composer/composer/autoload_classmap.php b/apps/systemtags/composer/composer/autoload_classmap.php
index 66d788547c6..20174ee4667 100644
--- a/apps/systemtags/composer/composer/autoload_classmap.php
+++ b/apps/systemtags/composer/composer/autoload_classmap.php
@@ -13,6 +13,9 @@ return array(
'OCA\\SystemTags\\AppInfo\\Application' => $baseDir . '/../lib/AppInfo/Application.php',
'OCA\\SystemTags\\Capabilities' => $baseDir . '/../lib/Capabilities.php',
'OCA\\SystemTags\\Controller\\LastUsedController' => $baseDir . '/../lib/Controller/LastUsedController.php',
+ 'OCA\\SystemTags\\Listeners\\BeforeSabrePubliclyLoadedListener' => $baseDir . '/../lib/Listeners/BeforeSabrePubliclyLoadedListener.php',
+ 'OCA\\SystemTags\\Listeners\\BeforeTemplateRenderedListener' => $baseDir . '/../lib/Listeners/BeforeTemplateRenderedListener.php',
+ 'OCA\\SystemTags\\Listeners\\LoadAdditionalScriptsListener' => $baseDir . '/../lib/Listeners/LoadAdditionalScriptsListener.php',
'OCA\\SystemTags\\Search\\TagSearchProvider' => $baseDir . '/../lib/Search/TagSearchProvider.php',
'OCA\\SystemTags\\Settings\\Admin' => $baseDir . '/../lib/Settings/Admin.php',
);
diff --git a/apps/systemtags/composer/composer/autoload_static.php b/apps/systemtags/composer/composer/autoload_static.php
index c1ea8635181..04dae4aa52f 100644
--- a/apps/systemtags/composer/composer/autoload_static.php
+++ b/apps/systemtags/composer/composer/autoload_static.php
@@ -28,6 +28,9 @@ class ComposerStaticInitSystemTags
'OCA\\SystemTags\\AppInfo\\Application' => __DIR__ . '/..' . '/../lib/AppInfo/Application.php',
'OCA\\SystemTags\\Capabilities' => __DIR__ . '/..' . '/../lib/Capabilities.php',
'OCA\\SystemTags\\Controller\\LastUsedController' => __DIR__ . '/..' . '/../lib/Controller/LastUsedController.php',
+ 'OCA\\SystemTags\\Listeners\\BeforeSabrePubliclyLoadedListener' => __DIR__ . '/..' . '/../lib/Listeners/BeforeSabrePubliclyLoadedListener.php',
+ 'OCA\\SystemTags\\Listeners\\BeforeTemplateRenderedListener' => __DIR__ . '/..' . '/../lib/Listeners/BeforeTemplateRenderedListener.php',
+ 'OCA\\SystemTags\\Listeners\\LoadAdditionalScriptsListener' => __DIR__ . '/..' . '/../lib/Listeners/LoadAdditionalScriptsListener.php',
'OCA\\SystemTags\\Search\\TagSearchProvider' => __DIR__ . '/..' . '/../lib/Search/TagSearchProvider.php',
'OCA\\SystemTags\\Settings\\Admin' => __DIR__ . '/..' . '/../lib/Settings/Admin.php',
);
diff --git a/apps/systemtags/lib/AppInfo/Application.php b/apps/systemtags/lib/AppInfo/Application.php
index 2fbdf7853e7..82c6682f206 100644
--- a/apps/systemtags/lib/AppInfo/Application.php
+++ b/apps/systemtags/lib/AppInfo/Application.php
@@ -9,13 +9,18 @@ declare(strict_types=1);
namespace OCA\SystemTags\AppInfo;
use OCA\Files\Event\LoadAdditionalScriptsEvent;
+use OCA\Files_Sharing\Event\BeforeTemplateRenderedEvent;
use OCA\SystemTags\Activity\Listener;
use OCA\SystemTags\Capabilities;
+use OCA\SystemTags\Listeners\BeforeSabrePubliclyLoadedListener;
+use OCA\SystemTags\Listeners\BeforeTemplateRenderedListener;
+use OCA\SystemTags\Listeners\LoadAdditionalScriptsListener;
use OCA\SystemTags\Search\TagSearchProvider;
use OCP\AppFramework\App;
use OCP\AppFramework\Bootstrap\IBootContext;
use OCP\AppFramework\Bootstrap\IBootstrap;
use OCP\AppFramework\Bootstrap\IRegistrationContext;
+use OCP\BeforeSabrePubliclyLoadedEvent;
use OCP\EventDispatcher\IEventDispatcher;
use OCP\SystemTag\ManagerEvent;
use OCP\SystemTag\MapperEvent;
@@ -30,6 +35,9 @@ class Application extends App implements IBootstrap {
public function register(IRegistrationContext $context): void {
$context->registerSearchProvider(TagSearchProvider::class);
$context->registerCapability(Capabilities::class);
+ $context->registerEventListener(LoadAdditionalScriptsEvent::class, LoadAdditionalScriptsListener::class);
+ $context->registerEventListener(BeforeTemplateRenderedEvent::class, BeforeTemplateRenderedListener::class);
+ $context->registerEventListener(BeforeSabrePubliclyLoadedEvent::class, BeforeSabrePubliclyLoadedListener::class);
}
public function boot(IBootContext $context): void {
diff --git a/apps/systemtags/lib/Listeners/BeforeSabrePubliclyLoadedListener.php b/apps/systemtags/lib/Listeners/BeforeSabrePubliclyLoadedListener.php
new file mode 100644
index 00000000000..e89ed47a104
--- /dev/null
+++ b/apps/systemtags/lib/Listeners/BeforeSabrePubliclyLoadedListener.php
@@ -0,0 +1,32 @@
+<?php
+
+declare(strict_types=1);
+/**
+ * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+namespace OCA\SystemTags\Listeners;
+
+use OCA\DAV\SystemTag\SystemTagPlugin;
+use OCP\BeforeSabrePubliclyLoadedEvent;
+use OCP\EventDispatcher\Event;
+use OCP\EventDispatcher\IEventListener;
+use OCP\Server;
+
+/**
+ * @template-implements IEventListener<BeforeSabrePubliclyLoadedEvent>
+ */
+class BeforeSabrePubliclyLoadedListener implements IEventListener {
+ public function handle(Event $event): void {
+ if (!$event instanceof BeforeSabrePubliclyLoadedEvent) {
+ return;
+ }
+
+ $server = $event->getServer();
+ if ($server === null) {
+ return;
+ }
+
+ $server->addPlugin(Server::get(SystemTagPlugin::class));
+ }
+}
diff --git a/apps/systemtags/lib/Listeners/BeforeTemplateRenderedListener.php b/apps/systemtags/lib/Listeners/BeforeTemplateRenderedListener.php
new file mode 100644
index 00000000000..74fa6bd03fe
--- /dev/null
+++ b/apps/systemtags/lib/Listeners/BeforeTemplateRenderedListener.php
@@ -0,0 +1,26 @@
+<?php
+
+declare(strict_types=1);
+/**
+ * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+namespace OCA\SystemTags\Listeners;
+
+use OCA\Files_Sharing\Event\BeforeTemplateRenderedEvent;
+use OCA\SystemTags\AppInfo\Application;
+use OCP\EventDispatcher\Event;
+use OCP\EventDispatcher\IEventListener;
+use OCP\Util;
+
+/**
+ * @template-implements IEventListener<BeforeTemplateRenderedEvent>
+ */
+class BeforeTemplateRenderedListener implements IEventListener {
+ public function handle(Event $event): void {
+ if (!$event instanceof BeforeTemplateRenderedEvent) {
+ return;
+ }
+ Util::addInitScript(Application::APP_ID, 'init');
+ }
+}
diff --git a/apps/systemtags/lib/Listeners/LoadAdditionalScriptsListener.php b/apps/systemtags/lib/Listeners/LoadAdditionalScriptsListener.php
new file mode 100644
index 00000000000..7d00bf44fc4
--- /dev/null
+++ b/apps/systemtags/lib/Listeners/LoadAdditionalScriptsListener.php
@@ -0,0 +1,26 @@
+<?php
+
+declare(strict_types=1);
+/**
+ * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+namespace OCA\SystemTags\Listeners;
+
+use OCA\Files\Event\LoadAdditionalScriptsEvent;
+use OCA\SystemTags\AppInfo\Application;
+use OCP\EventDispatcher\Event;
+use OCP\EventDispatcher\IEventListener;
+use OCP\Util;
+
+/**
+ * @template-implements IEventListener<LoadAdditionalScriptsEvent>
+ */
+class LoadAdditionalScriptsListener implements IEventListener {
+ public function handle(Event $event): void {
+ if (!$event instanceof LoadAdditionalScriptsEvent) {
+ return;
+ }
+ Util::addInitScript(Application::APP_ID, 'init');
+ }
+}