@@ -23,8 +23,9 @@
|
|||||||
|
|
||||||
namespace OCA\Deck\AppInfo;
|
namespace OCA\Deck\AppInfo;
|
||||||
|
|
||||||
|
use Closure;
|
||||||
use Exception;
|
use Exception;
|
||||||
use OC_Util;
|
use OC\EventDispatcher\SymfonyAdapter;
|
||||||
use OCA\Deck\Activity\CommentEventHandler;
|
use OCA\Deck\Activity\CommentEventHandler;
|
||||||
use OCA\Deck\Capabilities;
|
use OCA\Deck\Capabilities;
|
||||||
use OCA\Deck\Collaboration\Resources\ResourceProvider;
|
use OCA\Deck\Collaboration\Resources\ResourceProvider;
|
||||||
@@ -45,19 +46,20 @@ use OCP\AppFramework\App;
|
|||||||
use OCP\AppFramework\Bootstrap\IBootContext;
|
use OCP\AppFramework\Bootstrap\IBootContext;
|
||||||
use OCP\AppFramework\Bootstrap\IBootstrap;
|
use OCP\AppFramework\Bootstrap\IBootstrap;
|
||||||
use OCP\AppFramework\Bootstrap\IRegistrationContext;
|
use OCP\AppFramework\Bootstrap\IRegistrationContext;
|
||||||
use OCP\Collaboration\Resources\IManager;
|
|
||||||
use OCP\Collaboration\Resources\IProviderManager;
|
use OCP\Collaboration\Resources\IProviderManager;
|
||||||
use OCP\Comments\CommentsEntityEvent;
|
use OCP\Comments\CommentsEntityEvent;
|
||||||
|
use OCP\Comments\ICommentsManager;
|
||||||
use OCP\EventDispatcher\Event;
|
use OCP\EventDispatcher\Event;
|
||||||
use OCP\EventDispatcher\IEventDispatcher;
|
use OCP\EventDispatcher\IEventDispatcher;
|
||||||
use OCP\FullTextSearch\IFullTextSearchManager;
|
use OCP\FullTextSearch\IFullTextSearchManager;
|
||||||
use OCP\IConfig;
|
use OCP\IConfig;
|
||||||
use OCP\IContainer;
|
|
||||||
use OCP\IDBConnection;
|
use OCP\IDBConnection;
|
||||||
use OCP\IGroup;
|
use OCP\IGroup;
|
||||||
|
use OCP\IGroupManager;
|
||||||
use OCP\IServerContainer;
|
use OCP\IServerContainer;
|
||||||
use OCP\IUser;
|
use OCP\IUser;
|
||||||
use OCP\IUserManager;
|
use OCP\IUserManager;
|
||||||
|
use OCP\Notification\IManager as NotificationManager;
|
||||||
use OCP\Util;
|
use OCP\Util;
|
||||||
use Psr\Container\ContainerInterface;
|
use Psr\Container\ContainerInterface;
|
||||||
|
|
||||||
@@ -82,15 +84,14 @@ class Application20 extends App implements IBootstrap {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public function boot(IBootContext $context): void {
|
public function boot(IBootContext $context): void {
|
||||||
$notificationManager = $context->getServerContainer()->get(\OCP\Notification\IManager::class);
|
Util::addStyle('deck', 'deck');
|
||||||
$notificationManager->registerNotifierService(Notifier::class);
|
|
||||||
\OCP\Util::addStyle('deck', 'deck');
|
|
||||||
|
|
||||||
$this->registerUserGroupHooks();
|
$context->injectFn(Closure::fromCallable([$this, 'registerUserGroupHooks']));
|
||||||
|
$context->injectFn(Closure::fromCallable([$this, 'registerCommentsEntity']));
|
||||||
$this->registerCommentsEntity();
|
$context->injectFn(Closure::fromCallable([$this, 'registerCommentsEventHandler']));
|
||||||
$this->registerFullTextSearch();
|
$context->injectFn(Closure::fromCallable([$this, 'registerNotifications']));
|
||||||
$this->registerCollaborationResources();
|
$context->injectFn(Closure::fromCallable([$this, 'registerFullTextSearch']));
|
||||||
|
$context->injectFn(Closure::fromCallable([$this, 'registerCollaborationResources']));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function register(IRegistrationContext $context): void {
|
public function register(IRegistrationContext $context): void {
|
||||||
@@ -113,11 +114,13 @@ class Application20 extends App implements IBootstrap {
|
|||||||
$context->registerDashboardWidget(DeckWidget::class);
|
$context->registerDashboardWidget(DeckWidget::class);
|
||||||
}
|
}
|
||||||
|
|
||||||
private function registerUserGroupHooks(): void {
|
public function registerNotifications(NotificationManager $notificationManager): void {
|
||||||
|
$notificationManager->registerNotifierService(Notifier::class);
|
||||||
|
}
|
||||||
|
|
||||||
|
private function registerUserGroupHooks(IUserManager $userManager, IGroupManager $groupManager): void {
|
||||||
$container = $this->getContainer();
|
$container = $this->getContainer();
|
||||||
// Delete user/group acl entries when they get deleted
|
// Delete user/group acl entries when they get deleted
|
||||||
/** @var IUserManager $userManager */
|
|
||||||
$userManager = $this->server->getUserManager();
|
|
||||||
$userManager->listen('\OC\User', 'postDelete', static function (IUser $user) use ($container) {
|
$userManager->listen('\OC\User', 'postDelete', static function (IUser $user) use ($container) {
|
||||||
// delete existing acl entries for deleted user
|
// delete existing acl entries for deleted user
|
||||||
/** @var AclMapper $aclMapper */
|
/** @var AclMapper $aclMapper */
|
||||||
@@ -141,8 +144,6 @@ class Application20 extends App implements IBootstrap {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
/** @var IUserManager $userManager */
|
|
||||||
$groupManager = $this->server->getGroupManager();
|
|
||||||
$groupManager->listen('\OC\Group', 'postDelete', static function (IGroup $group) use ($container) {
|
$groupManager->listen('\OC\Group', 'postDelete', static function (IGroup $group) use ($container) {
|
||||||
/** @var AclMapper $aclMapper */
|
/** @var AclMapper $aclMapper */
|
||||||
$aclMapper = $container->query(AclMapper::class);
|
$aclMapper = $container->query(AclMapper::class);
|
||||||
@@ -154,8 +155,8 @@ class Application20 extends App implements IBootstrap {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public function registerCommentsEntity(): void {
|
public function registerCommentsEntity(SymfonyAdapter $symfonyAdapter): void {
|
||||||
$this->server->getEventDispatcher()->addListener(CommentsEntityEvent::EVENT_ENTITY, function (CommentsEntityEvent $event) {
|
$symfonyAdapter->addListener(CommentsEntityEvent::EVENT_ENTITY, function (CommentsEntityEvent $event) {
|
||||||
$event->addEntityCollection(self::COMMENT_ENTITY_TYPE, function ($name) {
|
$event->addEntityCollection(self::COMMENT_ENTITY_TYPE, function ($name) {
|
||||||
/** @var CardMapper */
|
/** @var CardMapper */
|
||||||
$cardMapper = $this->getContainer()->query(CardMapper::class);
|
$cardMapper = $this->getContainer()->query(CardMapper::class);
|
||||||
@@ -168,85 +169,64 @@ class Application20 extends App implements IBootstrap {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
$this->registerCommentsEventHandler();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function registerCommentsEventHandler(): void {
|
protected function registerCommentsEventHandler(ICommentsManager $commentsManager): void {
|
||||||
$this->server->getCommentsManager()->registerEventHandler(function () {
|
$commentsManager->registerEventHandler(function () {
|
||||||
return $this->getContainer()->query(CommentEventHandler::class);
|
return $this->getContainer()->query(CommentEventHandler::class);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function registerCollaborationResources(): void {
|
protected function registerCollaborationResources(IProviderManager $resourceManager, SymfonyAdapter $symfonyAdapter): void {
|
||||||
$version = OC_Util::getVersion()[0];
|
|
||||||
/**
|
|
||||||
* Register Collaboration ResourceProvider
|
|
||||||
*
|
|
||||||
* @Todo: Remove if min-version is 18
|
|
||||||
*/
|
|
||||||
if ($version < 18) {
|
|
||||||
/** @var IManager $resourceManager */
|
|
||||||
$resourceManager = $this->getContainer()->query(IManager::class);
|
|
||||||
} else {
|
|
||||||
/** @var IProviderManager $resourceManager */
|
|
||||||
$resourceManager = $this->getContainer()->query(IProviderManager::class);
|
|
||||||
}
|
|
||||||
$resourceManager->registerResourceProvider(ResourceProvider::class);
|
$resourceManager->registerResourceProvider(ResourceProvider::class);
|
||||||
$resourceManager->registerResourceProvider(ResourceProviderCard::class);
|
$resourceManager->registerResourceProvider(ResourceProviderCard::class);
|
||||||
|
|
||||||
$this->server->getEventDispatcher()->addListener('\OCP\Collaboration\Resources::loadAdditionalScripts', static function () {
|
$symfonyAdapter->addListener('\OCP\Collaboration\Resources::loadAdditionalScripts', static function () {
|
||||||
Util::addScript('deck', 'collections');
|
Util::addScript('deck', 'collections');
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public function registerFullTextSearch(): void {
|
public function registerFullTextSearch(IFullTextSearchManager $fullTextSearchManager, IEventDispatcher $eventDispatcher): void {
|
||||||
if (Util::getVersion()[0] < 16) {
|
if (!$fullTextSearchManager->isAvailable()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
$c = $this->getContainer();
|
// FIXME move to addServiceListener
|
||||||
try {
|
$server = $this->server;
|
||||||
// FIXME we should probably lazy load this
|
|
||||||
$this->fullTextSearchService = $c->query(FullTextSearchService::class);
|
|
||||||
$this->fullTextSearchManager = $c->query(IFullTextSearchManager::class);
|
|
||||||
} catch (Exception $e) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!$this->fullTextSearchManager->isAvailable()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
/** @var IEventDispatcher $eventDispatcher */
|
|
||||||
$eventDispatcher = $this->server->query(IEventDispatcher::class);
|
|
||||||
$eventDispatcher->addListener(
|
$eventDispatcher->addListener(
|
||||||
'\OCA\Deck\Card::onCreate', function (Event $e) {
|
'\OCA\Deck\Card::onCreate', function (Event $e) use ($server) {
|
||||||
$this->fullTextSearchService->onCardCreated($e);
|
$fullTextSearchService = $server->get(FullTextSearchService::class);
|
||||||
|
$fullTextSearchService->onCardCreated($e);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
$eventDispatcher->addListener(
|
$eventDispatcher->addListener(
|
||||||
'\OCA\Deck\Card::onUpdate', function (Event $e) {
|
'\OCA\Deck\Card::onUpdate', function (Event $e) use ($server) {
|
||||||
$this->fullTextSearchService->onCardUpdated($e);
|
$fullTextSearchService = $server->get(FullTextSearchService::class);
|
||||||
|
$fullTextSearchService->onCardUpdated($e);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
$eventDispatcher->addListener(
|
$eventDispatcher->addListener(
|
||||||
'\OCA\Deck\Card::onDelete', function (Event $e) {
|
'\OCA\Deck\Card::onDelete', function (Event $e) use ($server) {
|
||||||
$this->fullTextSearchService->onCardDeleted($e);
|
$fullTextSearchService = $server->get(FullTextSearchService::class);
|
||||||
|
$fullTextSearchService->onCardDeleted($e);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
$eventDispatcher->addListener(
|
$eventDispatcher->addListener(
|
||||||
'\OCA\Deck\Board::onShareNew', function (Event $e) {
|
'\OCA\Deck\Board::onShareNew', function (Event $e) {
|
||||||
$this->fullTextSearchService->onBoardShares($e);
|
$fullTextSearchService = $server->get(FullTextSearchService::class);
|
||||||
|
$fullTextSearchService->onBoardShares($e);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
$eventDispatcher->addListener(
|
$eventDispatcher->addListener(
|
||||||
'\OCA\Deck\Board::onShareEdit', function (Event $e) {
|
'\OCA\Deck\Board::onShareEdit', function (Event $e) use ($server) {
|
||||||
$this->fullTextSearchService->onBoardShares($e);
|
$fullTextSearchService = $server->get(FullTextSearchService::class);
|
||||||
|
$fullTextSearchService->onBoardShares($e);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
$eventDispatcher->addListener(
|
$eventDispatcher->addListener(
|
||||||
'\OCA\Deck\Board::onShareDelete', function (Event $e) {
|
'\OCA\Deck\Board::onShareDelete', function (Event $e) use ($server) {
|
||||||
$this->fullTextSearchService->onBoardShares($e);
|
$fullTextSearchService = $server->get(FullTextSearchService::class);
|
||||||
|
$fullTextSearchService->onBoardShares($e);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user