Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>tags/v20.0.0beta1
@@ -59,11 +59,12 @@ use OCP\IConfig; | |||
use OCP\IGroupManager; | |||
use OCP\ILogger; | |||
use OCP\IPreview; | |||
use OCP\IServerContainer; | |||
use OCP\IUserSession; | |||
use OCP\Log\ILogFactory; | |||
use OCP\Share; | |||
use OCP\Util; | |||
use Psr\Container\ContainerInterface; | |||
use Symfony\Component\EventDispatcher\EventDispatcherInterface; | |||
use Symfony\Component\EventDispatcher\GenericEvent; | |||
class Application extends App implements IBootstrap { | |||
@@ -107,25 +108,25 @@ class Application extends App implements IBootstrap { | |||
* Register hooks in order to log them | |||
*/ | |||
private function registerHooks(ILogger $logger, | |||
IServerContainer $serverContainer) { | |||
$this->userManagementHooks($logger, $serverContainer); | |||
$this->groupHooks($logger, $serverContainer); | |||
ContainerInterface $container) { | |||
$this->userManagementHooks($logger, $container); | |||
$this->groupHooks($logger, $container); | |||
$this->authHooks($logger); | |||
$this->consoleHooks($logger, $serverContainer); | |||
$this->appHooks($logger, $serverContainer); | |||
$this->consoleHooks($logger, $container); | |||
$this->appHooks($logger, $container); | |||
$this->sharingHooks($logger); | |||
$this->fileHooks($logger, $serverContainer); | |||
$this->fileHooks($logger, $container); | |||
$this->trashbinHooks($logger); | |||
$this->versionsHooks($logger); | |||
$this->securityHooks($logger, $serverContainer); | |||
$this->securityHooks($logger, $container); | |||
} | |||
private function userManagementHooks(ILogger $logger, | |||
IServerContainer $serverContainer) { | |||
ContainerInterface $container) { | |||
$userActions = new UserManagement($logger); | |||
Util::connectHook('OC_User', 'post_createUser', $userActions, 'create'); | |||
@@ -133,18 +134,18 @@ class Application extends App implements IBootstrap { | |||
Util::connectHook('OC_User', 'changeUser', $userActions, 'change'); | |||
/** @var IUserSession|Session $userSession */ | |||
$userSession = $serverContainer->getUserSession(); | |||
$userSession = $container->get(IUserSession::class); | |||
$userSession->listen('\OC\User', 'postSetPassword', [$userActions, 'setPassword']); | |||
$userSession->listen('\OC\User', 'assignedUserId', [$userActions, 'assign']); | |||
$userSession->listen('\OC\User', 'postUnassignedUserId', [$userActions, 'unassign']); | |||
} | |||
private function groupHooks(ILogger $logger, | |||
IServerContainer $serverContainer) { | |||
ContainerInterface $container) { | |||
$groupActions = new GroupManagement($logger); | |||
/** @var IGroupManager|Manager $groupManager */ | |||
$groupManager = $serverContainer->getGroupManager(); | |||
$groupManager = $container->getGroupManager(IGroupManager::class); | |||
$groupManager->listen('\OC\Group', 'postRemoveUser', [$groupActions, 'removeUser']); | |||
$groupManager->listen('\OC\Group', 'postAddUser', [$groupActions, 'addUser']); | |||
$groupManager->listen('\OC\Group', 'postDelete', [$groupActions, 'deleteGroup']); | |||
@@ -172,8 +173,8 @@ class Application extends App implements IBootstrap { | |||
} | |||
private function appHooks(ILogger $logger, | |||
IServerContainer $serverContainer) { | |||
$eventDispatcher = $serverContainer->getEventDispatcher(); | |||
ContainerInterface $container) { | |||
$eventDispatcher = $container->get(EventDispatcherInterface::class); | |||
$eventDispatcher->addListener(ManagerEvent::EVENT_APP_ENABLE, function (ManagerEvent $event) use ($logger) { | |||
$appActions = new AppManagement($logger); | |||
$appActions->enableApp($event->getAppID()); | |||
@@ -189,8 +190,8 @@ class Application extends App implements IBootstrap { | |||
} | |||
private function consoleHooks(ILogger $logger, | |||
IServerContainer $serverContainer) { | |||
$eventDispatcher = $serverContainer->getEventDispatcher(); | |||
ContainerInterface $container) { | |||
$eventDispatcher = $container->get(EventDispatcherInterface::class); | |||
$eventDispatcher->addListener(ConsoleEvent::EVENT_RUN, function (ConsoleEvent $event) use ($logger) { | |||
$appActions = new Console($logger); | |||
$appActions->runCommand($event->getArguments()); | |||
@@ -198,9 +199,9 @@ class Application extends App implements IBootstrap { | |||
} | |||
private function fileHooks(ILogger $logger, | |||
IServerContainer $serverContainer) { | |||
ContainerInterface $container) { | |||
$fileActions = new Files($logger); | |||
$eventDispatcher = $serverContainer->getEventDispatcher(); | |||
$eventDispatcher = $container->get(EventDispatcherInterface::class); | |||
$eventDispatcher->addListener( | |||
IPreview::EVENT, | |||
function (GenericEvent $event) use ($fileActions) { | |||
@@ -273,8 +274,8 @@ class Application extends App implements IBootstrap { | |||
} | |||
private function securityHooks(ILogger $logger, | |||
IServerContainer $serverContainer) { | |||
$eventDispatcher = $serverContainer->getEventDispatcher(); | |||
ContainerInterface $container) { | |||
$eventDispatcher = $container->get(EventDispatcherInterface::class); | |||
$eventDispatcher->addListener(IProvider::EVENT_SUCCESS, function (GenericEvent $event) use ($logger) { | |||
$security = new Security($logger); | |||
$security->twofactorSuccess($event->getSubject(), $event->getArguments()); |
@@ -27,6 +27,7 @@ | |||
namespace OCA\Comments\AppInfo; | |||
use Closure; | |||
use OCA\Comments\Capabilities; | |||
use OCA\Comments\Controller\Notifications; | |||
use OCA\Comments\EventHandler; | |||
@@ -44,6 +45,8 @@ use OCP\AppFramework\Bootstrap\IBootContext; | |||
use OCP\AppFramework\Bootstrap\IBootstrap; | |||
use OCP\AppFramework\Bootstrap\IRegistrationContext; | |||
use OCP\Comments\CommentsEntityEvent; | |||
use OCP\IConfig; | |||
use OCP\ISearch; | |||
use OCP\IServerContainer; | |||
use OCP\Util; | |||
@@ -75,13 +78,13 @@ class Application extends App implements IBootstrap { | |||
} | |||
public function boot(IBootContext $context): void { | |||
$this->registerNotifier($context->getServerContainer()); | |||
$this->registerCommentsEventHandler($context->getServerContainer()); | |||
$context->injectFn(Closure::fromCallable([$this, 'registerNotifier'])); | |||
$context->injectFn(Closure::fromCallable([$this, 'registerCommentsEventHandler'])); | |||
$jsSettingsHelper = new JSSettingsHelper($context->getServerContainer()); | |||
$jsSettingsHelper = new JSSettingsHelper($context->getAppContainer()->get(IConfig::class)); | |||
Util::connectHook('\OCP\Config', 'js', $jsSettingsHelper, 'extend'); | |||
$context->getServerContainer()->getSearch()->registerProvider(LegacyProvider::class, ['apps' => ['files']]); | |||
$context->getServerContainer()->get(ISearch::class)->registerProvider(LegacyProvider::class, ['apps' => ['files']]); | |||
} | |||
protected function registerNotifier(IServerContainer $container) { |
@@ -23,20 +23,20 @@ | |||
namespace OCA\Comments; | |||
use OCP\IServerContainer; | |||
use OCP\IConfig; | |||
class JSSettingsHelper { | |||
/** @var IServerContainer */ | |||
/** @var IConfig */ | |||
private $c; | |||
public function __construct(IServerContainer $c) { | |||
public function __construct(IConfig $c) { | |||
$this->c = $c; | |||
} | |||
public function extend(array $settings) { | |||
$appConfig = json_decode($settings['array']['oc_appconfig'], true); | |||
$value = (int)$this->c->getConfig()->getAppValue('comments', 'maxAutoCompleteResults', 10); | |||
$value = (int)$this->c->getAppValue('comments', 'maxAutoCompleteResults', 10); | |||
$appConfig['comments']['maxAutoCompleteResults'] = $value; | |||
$settings['array']['oc_appconfig'] = json_encode($appConfig); |
@@ -1,4 +1,7 @@ | |||
<?php | |||
declare(strict_types=1); | |||
/** | |||
* @copyright Copyright (c) 2017 Arthur Schiwon <blizzz@arthur-schiwon.de> | |||
* | |||
@@ -26,11 +29,11 @@ namespace OCA\Comments\Tests\Unit; | |||
use OCA\Comments\JSSettingsHelper; | |||
use OCP\IConfig; | |||
use OCP\IServerContainer; | |||
use PHPUnit\Framework\MockObject\MockObject; | |||
use Test\TestCase; | |||
class JSSettingsHelperTest extends TestCase { | |||
/** @var IServerContainer|\PHPUnit_Framework_MockObject_MockObject */ | |||
/** @var IConfig|MockObject */ | |||
protected $c; | |||
/** @var JSSettingsHelper */ | |||
protected $helper; | |||
@@ -38,22 +41,17 @@ class JSSettingsHelperTest extends TestCase { | |||
protected function setUp(): void { | |||
parent::setUp(); | |||
$this->c = $this->createMock(IServerContainer::class); | |||
$this->c = $this->createMock(IConfig::class); | |||
$this->helper = new JSSettingsHelper($this->c); | |||
} | |||
public function testExtend() { | |||
$config = $this->createMock(IConfig::class); | |||
$config->expects($this->once()) | |||
$this->c->expects($this->once()) | |||
->method('getAppValue') | |||
->with('comments', 'maxAutoCompleteResults') | |||
->willReturn(13); | |||
$this->c->expects($this->once()) | |||
->method('getConfig') | |||
->willReturn($config); | |||
$config = [ | |||
'oc_appconfig' => json_encode([ | |||
'anotherapp' => [ |
@@ -28,6 +28,7 @@ | |||
namespace OCA\FederatedFileSharing\AppInfo; | |||
use Closure; | |||
use OCA\FederatedFileSharing\Listeners\LoadAdditionalScriptsListener; | |||
use OCA\FederatedFileSharing\Notifier; | |||
use OCA\FederatedFileSharing\OCM\CloudFederationProviderFiles; | |||
@@ -36,6 +37,9 @@ use OCP\AppFramework\App; | |||
use OCP\AppFramework\Bootstrap\IBootContext; | |||
use OCP\AppFramework\Bootstrap\IBootstrap; | |||
use OCP\AppFramework\Bootstrap\IRegistrationContext; | |||
use OCP\Federation\ICloudFederationProviderManager; | |||
use OCP\Notification\IManager as INotifiactionManager; | |||
use Psr\Container\ContainerInterface; | |||
class Application extends App implements IBootstrap { | |||
public function __construct() { | |||
@@ -47,16 +51,20 @@ class Application extends App implements IBootstrap { | |||
} | |||
public function boot(IBootContext $context): void { | |||
$server = $context->getServerContainer(); | |||
$context->injectFn(Closure::fromCallable([$this, 'registerCloudFederationProvider'])); | |||
$context->injectFn(Closure::fromCallable([$this, 'registerNotificationManager'])); | |||
} | |||
$cloudFederationManager = $server->getCloudFederationProviderManager(); | |||
$cloudFederationManager->addCloudFederationProvider('file', | |||
private function registerCloudFederationProvider(ICloudFederationProviderManager $manager, | |||
ContainerInterface $container): void { | |||
$manager->addCloudFederationProvider('file', | |||
'Federated Files Sharing', | |||
function () use ($server) { | |||
return $server->query(CloudFederationProviderFiles::class); | |||
function () use ($container) { | |||
return $container->get(CloudFederationProviderFiles::class); | |||
}); | |||
} | |||
$manager = $server->getNotificationManager(); | |||
private function registerNotificationManager(INotifiactionManager $manager): void { | |||
$manager->registerNotifierService(Notifier::class); | |||
} | |||
} |
@@ -34,6 +34,7 @@ declare(strict_types=1); | |||
namespace OCA\Files\AppInfo; | |||
use Closure; | |||
use OC\Search\Provider\File; | |||
use OCA\Files\Capabilities; | |||
use OCA\Files\Collaboration\Resources\Listener; | |||
@@ -53,6 +54,7 @@ use OCP\AppFramework\Bootstrap\IRegistrationContext; | |||
use OCP\Collaboration\Resources\IProviderManager; | |||
use OCP\IContainer; | |||
use OCP\IL10N; | |||
use OCP\ISearch; | |||
use OCP\IServerContainer; | |||
use OCP\Notification\IManager; | |||
use OCP\Util; | |||
@@ -112,35 +114,25 @@ class Application extends App implements IBootstrap { | |||
} | |||
public function boot(IBootContext $context): void { | |||
$this->registerCollaboration($context); | |||
Listener::register($context->getServerContainer()->getEventDispatcher()); | |||
$this->registerNotification($context); | |||
$this->registerSearchProvider($context); | |||
$context->injectFn(Closure::fromCallable([$this, 'registerCollaboration'])); | |||
$context->injectFn([Listener::class, 'register']); | |||
$context->injectFn(Closure::fromCallable([$this, 'registerNotification'])); | |||
$context->injectFn(Closure::fromCallable([$this, 'registerSearchProvider'])); | |||
$this->registerTemplates(); | |||
$this->registerNavigation($context); | |||
$context->injectFn(Closure::fromCallable([$this, 'registerNavigation'])); | |||
$this->registerHooks(); | |||
} | |||
/** | |||
* Register Collaboration ResourceProvider | |||
*/ | |||
private function registerCollaboration(IBootContext $context): void { | |||
/** @var IProviderManager $providerManager */ | |||
$providerManager = $context->getAppContainer()->query(IProviderManager::class); | |||
private function registerCollaboration(IProviderManager $providerManager): void { | |||
$providerManager->registerResourceProvider(ResourceProvider::class); | |||
} | |||
private function registerNotification(IBootContext $context): void { | |||
/** @var IManager $notifications */ | |||
$notifications = $context->getAppContainer()->query(IManager::class); | |||
private function registerNotification(IManager $notifications): void { | |||
$notifications->registerNotifierService(Notifier::class); | |||
} | |||
/** | |||
* @param IBootContext $context | |||
*/ | |||
private function registerSearchProvider(IBootContext $context): void { | |||
$context->getServerContainer()->getSearch()->registerProvider(File::class, ['apps' => ['files']]); | |||
private function registerSearchProvider(ISearch $search): void { | |||
$search->registerProvider(File::class, ['apps' => ['files']]); | |||
} | |||
private function registerTemplates(): void { | |||
@@ -150,9 +142,7 @@ class Application extends App implements IBootstrap { | |||
$templateManager->registerTemplate('application/vnd.oasis.opendocument.spreadsheet', 'core/templates/filetemplates/template.ods'); | |||
} | |||
private function registerNavigation(IBootContext $context): void { | |||
/** @var IL10N $l10n */ | |||
$l10n = $context->getAppContainer()->query(IL10N::class); | |||
private function registerNavigation(IL10N $l10n): void { | |||
\OCA\Files\App::getNavigationManager()->add(function () use ($l10n) { | |||
return [ | |||
'id' => 'files', |
@@ -28,12 +28,15 @@ declare(strict_types=1); | |||
namespace OCA\LookupServerConnector\AppInfo; | |||
use Closure; | |||
use OCA\LookupServerConnector\UpdateLookupServer; | |||
use OCP\AppFramework\App; | |||
use OCP\AppFramework\Bootstrap\IBootContext; | |||
use OCP\AppFramework\Bootstrap\IBootstrap; | |||
use OCP\AppFramework\Bootstrap\IRegistrationContext; | |||
use OCP\EventDispatcher\IEventDispatcher; | |||
use OCP\IUser; | |||
use Psr\Container\ContainerInterface; | |||
use Symfony\Component\EventDispatcher\GenericEvent; | |||
class Application extends App implements IBootstrap { | |||
@@ -47,16 +50,20 @@ class Application extends App implements IBootstrap { | |||
} | |||
public function boot(IBootContext $context): void { | |||
/* | |||
* @todo move the OCP events and then move the registration to `register` | |||
*/ | |||
$dispatcher = $context->getServerContainer()->getEventDispatcher(); | |||
$dispatcher->addListener('OC\AccountManager::userUpdated', function (GenericEvent $event) use ($context) { | |||
$context->injectFn(Closure::fromCallable([$this, 'registerEventListeners'])); | |||
} | |||
/** | |||
* @todo move the OCP events and then move the registration to `register` | |||
*/ | |||
private function registerEventListeners(IEventDispatcher $dispatcher, | |||
ContainerInterface $container): void { | |||
$dispatcher->addListener('OC\AccountManager::userUpdated', function (GenericEvent $event) use ($container) { | |||
/** @var IUser $user */ | |||
$user = $event->getSubject(); | |||
/** @var UpdateLookupServer $updateLookupServer */ | |||
$updateLookupServer = $context->getServerContainer()->query(UpdateLookupServer::class); | |||
$updateLookupServer = $container->get(UpdateLookupServer::class); | |||
$updateLookupServer->userUpdated($user); | |||
}); | |||
} |
@@ -40,6 +40,7 @@ use BadMethodCallException; | |||
use OC\AppFramework\Utility\TimeFactory; | |||
use OC\Authentication\Token\IProvider; | |||
use OC\Authentication\Token\IToken; | |||
use OC\Group\Manager; | |||
use OC\Server; | |||
use OCA\Settings\Activity\Provider; | |||
use OCA\Settings\Hooks; | |||
@@ -52,6 +53,7 @@ use OCP\AppFramework\Bootstrap\IBootstrap; | |||
use OCP\AppFramework\Bootstrap\IRegistrationContext; | |||
use OCP\Defaults; | |||
use OCP\IGroup; | |||
use OCP\IGroupManager; | |||
use OCP\ILogger; | |||
use OCP\IServerContainer; | |||
use OCP\IUser; | |||
@@ -134,38 +136,39 @@ class Application extends App implements IBootstrap { | |||
} | |||
public function boot(IBootContext $context): void { | |||
/** @var EventDispatcherInterface $eventDispatcher */ | |||
$eventDispatcher = $context->getServerContainer()->getEventDispatcher(); | |||
$container = $context->getAppContainer(); | |||
$eventDispatcher->addListener('app_password_created', function (GenericEvent $event) use ($container) { | |||
if (($token = $event->getSubject()) instanceof IToken) { | |||
/** @var IActivityManager $activityManager */ | |||
$activityManager = $container->query(IActivityManager::class); | |||
/** @var ILogger $logger */ | |||
$logger = $container->query(ILogger::class); | |||
$activity = $activityManager->generateEvent(); | |||
$activity->setApp('settings') | |||
->setType('security') | |||
->setAffectedUser($token->getUID()) | |||
->setAuthor($token->getUID()) | |||
->setSubject(Provider::APP_TOKEN_CREATED, ['name' => $token->getName()]) | |||
->setObject('app_token', $token->getId()); | |||
try { | |||
$activityManager->publish($activity); | |||
} catch (BadMethodCallException $e) { | |||
$logger->logException($e, ['message' => 'could not publish activity', 'level' => ILogger::WARN]); | |||
$context->injectFn(function (EventDispatcherInterface $dispatcher, ContainerInterface $container) { | |||
$dispatcher->addListener('app_password_created', function (GenericEvent $event) use ($container) { | |||
if (($token = $event->getSubject()) instanceof IToken) { | |||
/** @var IActivityManager $activityManager */ | |||
$activityManager = $container->get(IActivityManager::class); | |||
/** @var ILogger $logger */ | |||
$logger = $container->get(ILogger::class); | |||
$activity = $activityManager->generateEvent(); | |||
$activity->setApp('settings') | |||
->setType('security') | |||
->setAffectedUser($token->getUID()) | |||
->setAuthor($token->getUID()) | |||
->setSubject(Provider::APP_TOKEN_CREATED, ['name' => $token->getName()]) | |||
->setObject('app_token', $token->getId()); | |||
try { | |||
$activityManager->publish($activity); | |||
} catch (BadMethodCallException $e) { | |||
$logger->logException($e, ['message' => 'could not publish activity', 'level' => ILogger::WARN]); | |||
} | |||
} | |||
} | |||
}); | |||
}); | |||
Util::connectHook('OC_User', 'post_setPassword', $this, 'onChangePassword'); | |||
Util::connectHook('OC_User', 'changeUser', $this, 'onChangeInfo'); | |||
$groupManager = $context->getServerContainer()->getGroupManager(); | |||
$groupManager->listen('\OC\Group', 'postRemoveUser', [$this, 'removeUserFromGroup']); | |||
$groupManager->listen('\OC\Group', 'postAddUser', [$this, 'addUserToGroup']); | |||
$context->injectFn(function (IGroupManager $groupManager) { | |||
/** @var IGroupManager|Manager $groupManager */ | |||
$groupManager->listen('\OC\Group', 'postRemoveUser', [$this, 'removeUserFromGroup']); | |||
$groupManager->listen('\OC\Group', 'postAddUser', [$this, 'addUserToGroup']); | |||
}); | |||
Util::connectHook('\OCP\Config', 'js', $this, 'extendJsConfig'); | |||
} |
@@ -32,6 +32,7 @@ use OCP\AppFramework\Bootstrap\IBootstrap; | |||
use OCP\AppFramework\Bootstrap\IRegistrationContext; | |||
use OCP\SystemTag\ManagerEvent; | |||
use OCP\SystemTag\MapperEvent; | |||
use Symfony\Component\EventDispatcher\EventDispatcher; | |||
class Application extends App implements IBootstrap { | |||
public const APP_ID = 'systemtags'; | |||
@@ -44,35 +45,36 @@ class Application extends App implements IBootstrap { | |||
} | |||
public function boot(IBootContext $context): void { | |||
/* | |||
* @todo move the OCP events and then move the registration to `register` | |||
*/ | |||
$eventDispatcher = $context->getServerContainer()->getEventDispatcher(); | |||
$eventDispatcher->addListener( | |||
'OCA\Files::loadAdditionalScripts', | |||
function () { | |||
// FIXME: no public API for these ? | |||
\OCP\Util::addScript('dist/systemtags'); | |||
\OCP\Util::addScript(self::APP_ID, 'systemtags'); | |||
} | |||
); | |||
$context->injectFn(function (EventDispatcher $dispatcher) use ($context) { | |||
/* | |||
* @todo move the OCP events and then move the registration to `register` | |||
*/ | |||
$dispatcher->addListener( | |||
'OCA\Files::loadAdditionalScripts', | |||
function () { | |||
// FIXME: no public API for these ? | |||
\OCP\Util::addScript('dist/systemtags'); | |||
\OCP\Util::addScript(self::APP_ID, 'systemtags'); | |||
} | |||
); | |||
$managerListener = function (ManagerEvent $event) use ($context) { | |||
/** @var \OCA\SystemTags\Activity\Listener $listener */ | |||
$listener = $context->getServerContainer()->query(Listener::class); | |||
$listener->event($event); | |||
}; | |||
$eventDispatcher->addListener(ManagerEvent::EVENT_CREATE, $managerListener); | |||
$eventDispatcher->addListener(ManagerEvent::EVENT_DELETE, $managerListener); | |||
$eventDispatcher->addListener(ManagerEvent::EVENT_UPDATE, $managerListener); | |||
$managerListener = function (ManagerEvent $event) use ($context) { | |||
/** @var \OCA\SystemTags\Activity\Listener $listener */ | |||
$listener = $context->getServerContainer()->query(Listener::class); | |||
$listener->event($event); | |||
}; | |||
$dispatcher->addListener(ManagerEvent::EVENT_CREATE, $managerListener); | |||
$dispatcher->addListener(ManagerEvent::EVENT_DELETE, $managerListener); | |||
$dispatcher->addListener(ManagerEvent::EVENT_UPDATE, $managerListener); | |||
$mapperListener = function (MapperEvent $event) use ($context) { | |||
/** @var \OCA\SystemTags\Activity\Listener $listener */ | |||
$listener = $context->getServerContainer()->query(Listener::class); | |||
$listener->mapperEvent($event); | |||
}; | |||
$eventDispatcher->addListener(MapperEvent::EVENT_ASSIGN, $mapperListener); | |||
$eventDispatcher->addListener(MapperEvent::EVENT_UNASSIGN, $mapperListener); | |||
$mapperListener = function (MapperEvent $event) use ($context) { | |||
/** @var \OCA\SystemTags\Activity\Listener $listener */ | |||
$listener = $context->getServerContainer()->query(Listener::class); | |||
$listener->mapperEvent($event); | |||
}; | |||
$dispatcher->addListener(MapperEvent::EVENT_ASSIGN, $mapperListener); | |||
$dispatcher->addListener(MapperEvent::EVENT_UNASSIGN, $mapperListener); | |||
}); | |||
\OCA\Files\App::getNavigationManager()->add(function () { | |||
$l = \OC::$server->getL10N(self::APP_ID); |
@@ -28,6 +28,7 @@ declare(strict_types=1); | |||
namespace OCA\TwoFactorBackupCodes\AppInfo; | |||
use Closure; | |||
use OCA\TwoFactorBackupCodes\Db\BackupCodeMapper; | |||
use OCA\TwoFactorBackupCodes\Event\CodesGenerated; | |||
use OCA\TwoFactorBackupCodes\Listener\ActivityPublisher; | |||
@@ -58,9 +59,7 @@ class Application extends App implements IBootstrap { | |||
public function boot(IBootContext $context): void { | |||
Util::connectHook('OC_User', 'post_deleteUser', $this, 'deleteUser'); | |||
$this->registerNotification( | |||
$context->getAppContainer()->query(IManager::class) | |||
); | |||
$context->injectFn(Closure::fromCallable([$this, 'registerNotification'])); | |||
} | |||
/** |
@@ -30,13 +30,20 @@ namespace OCA\UpdateNotification\AppInfo; | |||
use OCA\UpdateNotification\Notification\Notifier; | |||
use OCA\UpdateNotification\UpdateChecker; | |||
use OCP\App\IAppManager; | |||
use OCP\AppFramework\App; | |||
use OCP\AppFramework\Bootstrap\IBootContext; | |||
use OCP\AppFramework\Bootstrap\IBootstrap; | |||
use OCP\AppFramework\Bootstrap\IRegistrationContext; | |||
use OCP\AppFramework\QueryException; | |||
use OCP\IConfig; | |||
use OCP\IGroupManager; | |||
use OCP\ILogger; | |||
use OCP\IUser; | |||
use OCP\IUserSession; | |||
use OCP\Notification\IManager as INotificationManager; | |||
use OCP\Util; | |||
use Psr\Container\ContainerInterface; | |||
class Application extends App implements IBootstrap { | |||
public function __construct() { | |||
@@ -47,36 +54,41 @@ class Application extends App implements IBootstrap { | |||
} | |||
public function boot(IBootContext $context): void { | |||
$server = $context->getServerContainer(); | |||
if ($server->getConfig()->getSystemValue('updatechecker', true) !== true) { | |||
// Updater check is disabled | |||
return; | |||
} | |||
// Always register the notifier, so background jobs (without a user) can send push notifications | |||
$notificationsManager = $server->getNotificationManager(); | |||
$notificationsManager->registerNotifierService(Notifier::class); | |||
$context->injectFn(function (IConfig $config, | |||
INotificationManager $notificationsManager, | |||
IUserSession $userSession, | |||
IAppManager $appManager, | |||
IGroupManager $groupManager, | |||
ContainerInterface $container, | |||
ILogger $logger) { | |||
if ($config->getSystemValue('updatechecker', true) !== true) { | |||
// Updater check is disabled | |||
return; | |||
} | |||
$user = $server->getUserSession()->getUser(); | |||
if (!$user instanceof IUser) { | |||
// Nothing to do for guests | |||
return; | |||
} | |||
// Always register the notifier, so background jobs (without a user) can send push notifications | |||
$notificationsManager->registerNotifierService(Notifier::class); | |||
if (!$server->getAppManager()->isEnabledForUser('notifications') && | |||
$server->getGroupManager()->isAdmin($user->getUID())) { | |||
try { | |||
$updateChecker = $server->query(UpdateChecker::class); | |||
} catch (QueryException $e) { | |||
$server->getLogger()->logException($e); | |||
$user = $userSession->getUser(); | |||
if (!$user instanceof IUser) { | |||
// Nothing to do for guests | |||
return; | |||
} | |||
if ($updateChecker->getUpdateState() !== []) { | |||
Util::addScript('updatenotification', 'legacy-notification'); | |||
\OC_Hook::connect('\OCP\Config', 'js', $updateChecker, 'populateJavaScriptVariables'); | |||
if (!$appManager->isEnabledForUser('notifications') && | |||
$groupManager->isAdmin($user->getUID())) { | |||
try { | |||
$updateChecker = $container->get(UpdateChecker::class); | |||
} catch (QueryException $e) { | |||
$logger->logException($e); | |||
return; | |||
} | |||
if ($updateChecker->getUpdateState() !== []) { | |||
Util::addScript('updatenotification', 'legacy-notification'); | |||
\OC_Hook::connect('\OCP\Config', 'js', $updateChecker, 'populateJavaScriptVariables'); | |||
} | |||
} | |||
} | |||
}); | |||
} | |||
} |
@@ -26,6 +26,7 @@ | |||
namespace OCA\User_LDAP\AppInfo; | |||
use Closure; | |||
use OCA\Files_External\Service\BackendService; | |||
use OCA\User_LDAP\Controller\RenewPasswordController; | |||
use OCA\User_LDAP\Group_Proxy; | |||
@@ -41,9 +42,14 @@ use OCP\AppFramework\App; | |||
use OCP\AppFramework\Bootstrap\IBootContext; | |||
use OCP\AppFramework\Bootstrap\IBootstrap; | |||
use OCP\AppFramework\Bootstrap\IRegistrationContext; | |||
use OCP\IConfig; | |||
use OCP\IGroupManager; | |||
use OCP\IL10N; | |||
use OCP\IServerContainer; | |||
use OCP\IUserSession; | |||
use OCP\Notification\IManager as INotificationManager; | |||
use Psr\Container\ContainerInterface; | |||
use Symfony\Component\EventDispatcher\EventDispatcherInterface; | |||
class Application extends App implements IBootstrap { | |||
public function __construct() { | |||
@@ -77,35 +83,37 @@ class Application extends App implements IBootstrap { | |||
} | |||
public function boot(IBootContext $context): void { | |||
$server = $context->getServerContainer(); | |||
$config = $server->getConfig(); | |||
$helper = new Helper($config); | |||
$configPrefixes = $helper->getServerConfigurationPrefixes(true); | |||
if (count($configPrefixes) > 0) { | |||
$ldapWrapper = new LDAP(); | |||
$notificationManager = $server->getNotificationManager(); | |||
$notificationManager->registerNotifierService(Notifier::class); | |||
$userSession = $server->getUserSession(); | |||
$userPluginManager = $server->query(UserPluginManager::class); | |||
$groupPluginManager = $server->query(GroupPluginManager::class); | |||
$userBackend = new User_Proxy( | |||
$configPrefixes, $ldapWrapper, $config, $notificationManager, $userSession, $userPluginManager | |||
); | |||
$groupBackend = new Group_Proxy($configPrefixes, $ldapWrapper, $groupPluginManager); | |||
// register user backend | |||
\OC_User::useBackend($userBackend); | |||
// Hook to allow plugins to work on registered backends | |||
$server->getEventDispatcher()->dispatch('OCA\\User_LDAP\\User\\User::postLDAPBackendAdded'); | |||
$server->getGroupManager()->addBackend($groupBackend); | |||
$context->injectFn(function (IConfig $config, | |||
INotificationManager $notificationManager, | |||
IUserSession $userSession, | |||
ContainerInterface $container, | |||
EventDispatcherInterface $dispatcher, | |||
IGroupManager $groupManager) { | |||
$helper = new Helper($config); | |||
$configPrefixes = $helper->getServerConfigurationPrefixes(true); | |||
if (count($configPrefixes) > 0) { | |||
$ldapWrapper = new LDAP(); | |||
$notificationManager->registerNotifierService(Notifier::class); | |||
$userPluginManager = $container->get(UserPluginManager::class); | |||
$groupPluginManager = $container->get(GroupPluginManager::class); | |||
$userBackend = new User_Proxy( | |||
$configPrefixes, $ldapWrapper, $config, $notificationManager, $userSession, $userPluginManager | |||
); | |||
$groupBackend = new Group_Proxy($configPrefixes, $ldapWrapper, $groupPluginManager); | |||
// register user backend | |||
\OC_User::useBackend($userBackend); | |||
// Hook to allow plugins to work on registered backends | |||
$dispatcher->dispatch('OCA\\User_LDAP\\User\\User::postLDAPBackendAdded'); | |||
$groupManager->addBackend($groupBackend); | |||
} | |||
}); | |||
$this->registerBackendDependents($context->getAppContainer()); | |||
} | |||
$context->injectFn(Closure::fromCallable([$this, 'registerBackendDependents'])); | |||
\OCP\Util::connectHook( | |||
'\OCA\Files_Sharing\API\Server2Server', | |||
@@ -115,10 +123,8 @@ class Application extends App implements IBootstrap { | |||
); | |||
} | |||
public function registerBackendDependents(ContainerInterface $appContainer) { | |||
/** @var IServerContainer $serverContainer */ | |||
$serverContainer = $appContainer->get(IServerContainer::class); | |||
$serverContainer->getEventDispatcher()->addListener( | |||
private function registerBackendDependents(ContainerInterface $appContainer, EventDispatcherInterface $dispatcher) { | |||
$dispatcher->addListener( | |||
'OCA\\Files_External::loadAdditionalBackends', | |||
function () use ($appContainer) { | |||
$storagesBackendService = $appContainer->get(BackendService::class); |
@@ -21,6 +21,7 @@ | |||
namespace OCA\WorkflowEngine\AppInfo; | |||
use Closure; | |||
use OCA\WorkflowEngine\Controller\RequestTime; | |||
use OCA\WorkflowEngine\Helper\LogContext; | |||
use OCA\WorkflowEngine\Listener\LoadAdditionalSettingsScriptsListener; | |||
@@ -57,11 +58,7 @@ class Application extends App implements IBootstrap { | |||
} | |||
public function boot(IBootContext $context): void { | |||
$this->registerRuleListeners( | |||
$context->getAppContainer()->query(IEventDispatcher::class), | |||
$context->getServerContainer(), | |||
$context->getAppContainer()->query(ILogger::class) | |||
); | |||
$context->injectFn(Closure::fromCallable([$this, 'registerRuleListeners'])); | |||
} | |||
private function registerRuleListeners(IEventDispatcher $dispatcher, |
@@ -57,7 +57,8 @@ class BootContextTest extends TestCase { | |||
public function testGetServerContainer(): void { | |||
$serverContainer = $this->createMock(IServerContainer::class); | |||
$this->appContainer->method('getServer') | |||
$this->appContainer->method('get') | |||
->with(IServerContainer::class) | |||
->willReturn($serverContainer); | |||
$container = $this->context->getServerContainer(); |