mirror of
https://github.com/nextcloud/server.git
synced 2026-02-14 08:14:47 -05:00
Create new events to replace deprecated CommentsEvent constant and use them when creating CommentsEvents. On the listener side, we can't yet use these events as deck still send the old events. Also fixes some issues reported by psalm level 3 on the comment app. Signed-off-by: Carl Schwan <carl.schwan@nextcloud.com>
63 lines
1.8 KiB
PHP
63 lines
1.8 KiB
PHP
<?php
|
|
|
|
/**
|
|
* SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors
|
|
* SPDX-FileCopyrightText: 2016 ownCloud, Inc.
|
|
* SPDX-License-Identifier: AGPL-3.0-only
|
|
*/
|
|
namespace OCP\Comments;
|
|
|
|
use OCP\AppFramework\Attribute\Consumable;
|
|
use OCP\EventDispatcher\Event;
|
|
|
|
/**
|
|
* Class CommentsEntityEvent
|
|
*
|
|
* @since 9.1.0
|
|
* @since 28.0.0 Dispatched as a typed event
|
|
*/
|
|
#[Consumable(since: '9.1.0')]
|
|
class CommentsEntityEvent extends Event {
|
|
/**
|
|
* @since 9.1.0
|
|
* @deprecated 22.0.0 - Listen to the typed event instead.
|
|
*/
|
|
public const EVENT_ENTITY = 'OCP\Comments\ICommentsManager::registerEntity';
|
|
|
|
/** @var (\Closure(string $id): bool)[] */
|
|
protected array $collections = [];
|
|
|
|
/**
|
|
* DispatcherEvent constructor.
|
|
*
|
|
* @since 9.1.0
|
|
*/
|
|
public function __construct() {
|
|
parent::__construct();
|
|
}
|
|
|
|
/**
|
|
* @param string $name
|
|
* @param \Closure(string $id):bool $entityExistsFunction The closure should take one
|
|
* argument, which is the id of the entity, that comments
|
|
* should be handled for. The return should then be bool,
|
|
* depending on whether comments are allowed (true) or not.
|
|
* @throws \OutOfBoundsException when the entity name is already taken
|
|
* @since 9.1.0
|
|
*/
|
|
public function addEntityCollection(string $name, \Closure $entityExistsFunction): void {
|
|
if (isset($this->collections[$name])) {
|
|
throw new \OutOfBoundsException('Duplicate entity name "' . $name . '"');
|
|
}
|
|
|
|
$this->collections[$name] = $entityExistsFunction;
|
|
}
|
|
|
|
/**
|
|
* @return (\Closure(string $id): bool)[]
|
|
* @since 9.1.0
|
|
*/
|
|
public function getEntityCollections(): array {
|
|
return $this->collections;
|
|
}
|
|
}
|