migrate app.php to AppInfo\Application

This commit is contained in:
binsky 2021-03-12 02:50:03 +01:00
parent be51248383
commit db7e020360
2 changed files with 63 additions and 107 deletions

View file

@ -1,36 +0,0 @@
<?php
/**
* Nextcloud - passman
*
* This file is licensed under the Affero General Public License version 3 or
* later. See the COPYING file.
*
* @author Sander Brand <brantje@gmail.com>
* @copyright Sander Brand 2016
*/
namespace OCA\Passman\AppInfo;
use OCP\Util;
use OCP\BackgroundJob;
use OCP\App;
use OCA\Passman\Notifier;
use OCA\Passman\Activity;
require_once __DIR__ . '/autoload.php';
$app = new \OCA\Passman\AppInfo\Application();
$app->registerNavigationEntry();
$app->registerPersonalPage();
$l = \OC::$server->getL10N('passman');
$manager = \OC::$server->getNotificationManager();
$manager->registerNotifierService(Notifier::class);
/**
* Loading translations
*
* The string has to match the app's folder name
*/
Util::addTranslations('passman');
\OCP\App::registerAdmin('passman', 'templates/admin.settings');

View file

@ -24,110 +24,103 @@
namespace OCA\Passman\AppInfo; namespace OCA\Passman\AppInfo;
use OC\Files\View; use OC\Files\View;
use OC\ServerContainer;
use OCA\Passman\Controller\CredentialController;
use OCA\Passman\Controller\PageController;
use OCA\Passman\Controller\ShareController; use OCA\Passman\Controller\ShareController;
use OCA\Passman\Controller\VaultController;
use OCA\Passman\Middleware\APIMiddleware; use OCA\Passman\Middleware\APIMiddleware;
use OCA\Passman\Middleware\ShareMiddleware; use OCA\Passman\Middleware\ShareMiddleware;
use OCA\Passman\Notifier;
use OCA\Passman\Service\ActivityService; use OCA\Passman\Service\ActivityService;
use OCA\Passman\Service\CronService;
use OCA\Passman\Service\CredentialService; use OCA\Passman\Service\CredentialService;
use OCA\Passman\Service\ShareService; use OCA\Passman\Service\CronService;
use OCA\Passman\Service\FileService; use OCA\Passman\Service\FileService;
use OCA\Passman\Service\NotificationService;
use OCA\Passman\Service\SettingsService;
use OCA\Passman\Service\ShareService;
use OCA\Passman\Service\VaultService; use OCA\Passman\Service\VaultService;
use OCA\Passman\Utility\Utils; use OCA\Passman\Utility\Utils;
use OCA\Passman\Service\NotificationService;
Use OCA\Passman\Service\SettingsService;
use OCP\IConfig;
use OCP\IDBConnection;
use OCP\AppFramework\App; use OCP\AppFramework\App;
use OCP\AppFramework\Bootstrap\IBootContext;
use OCP\AppFramework\Bootstrap\IBootstrap;
use OCP\AppFramework\Bootstrap\IRegistrationContext;
use OCP\IDBConnection;
use OCP\IL10N; use OCP\IL10N;
use OCP\ILogger;
use OCP\Notification\IManager;
use OCP\Util; use OCP\Util;
use Psr\Container\ContainerInterface;
class Application extends App implements IBootstrap {
public const APP_ID = 'passman';
class Application extends App {
public function __construct() { public function __construct() {
parent::__construct('passman'); parent::__construct(self::APP_ID);
$container = $this->getContainer(); }
// Allow automatic DI for the View, until we migrated to Nodes API
$container->registerService(View::class, function () { public function register(IRegistrationContext $context): void {
$this->registerNavigationEntry();
$this->registerPersonalPage();
$context->registerEventListener(
BeforeUserDeletedEvent::class,
UserDeletedListener::class
);
$context->registerService(View::class, function () {
return new View(''); return new View('');
}, false); }, false);
$container->registerService('isCLI', function () {
$context->registerService('isCLI', function () {
return \OC::$CLI; return \OC::$CLI;
}); });
/** $context->registerMiddleware(ShareMiddleware::class);
* Middleware $context->registerMiddleware(APIMiddleware::class);
*/
$container->registerService('ShareMiddleware', function ($c) {
return new ShareMiddleware($c->query('SettingsService'));
});
$container->registerMiddleware('ShareMiddleware');
/** $context->registerService('ShareController', function (ContainerInterface $c) {
* Controllers $server = $this->getContainer()->getServer();
*/
$container->registerService('ShareController', function ($c) {
$container = $this->getContainer();
$server = $container->getServer();
return new ShareController( return new ShareController(
$c->query('AppName'), $c->get('AppName'),
$c->query('Request'), $c->get('Request'),
$server->getUserSession()->getUser(), $server->getUserSession()->getUser(),
$server->getGroupManager(), $server->getGroupManager(),
$server->getUserManager(), $server->getUserManager(),
$c->query('ActivityService'), $c->get(ActivityService::class),
$c->query('VaultService'), $c->get(VaultService::class),
$c->query('ShareService'), $c->get(ShareService::class),
$c->query('CredentialService'), $c->get(CredentialService::class),
$c->query('NotificationService'), $c->get(NotificationService::class),
$c->query('FileService'), $c->get(FileService::class),
$c->query('SettingsService') $c->get(SettingsService::class)
); );
}); });
/** Cron **/ $context->registerService('CronService', function (ContainerInterface $c) {
$container->registerService('CronService', function ($c) {
return new CronService( return new CronService(
$c->query('CredentialService'), $c->get(CredentialService::class),
$c->query('Logger'), $c->get(ILogger::class),
$c->query('Utils'), $c->get(Utils::class),
$c->query('NotificationService'), $c->get(NotificationService::class),
$c->query('ActivityService'), $c->get(ActivityService::class),
$c->query('IDBConnection') $c->get(IDBConnection::class)
); );
}); });
$container->registerService('Db', function () { $context->registerService('Logger', function (ContainerInterface $c) {
return new Db(); return $c->get(ServerContainer::class)->getLogger();
}); });
}
$container->registerService('Logger', function ($c) { public function boot(IBootContext $context): void {
return $c->query('ServerContainer')->getLogger(); $l = \OC::$server->getL10N(self::APP_ID);
});
$container->registerMiddleware('APIMiddleware'); /** @var IManager $manager */
$manager = $context->getAppContainer()->get(IManager::class);
$manager->registerNotifierService(Notifier::class);
// Aliases for the controllers so we can use the automatic DI Util::addTranslations(self::APP_ID);
$container->registerAlias('CredentialController', CredentialController::class); \OCP\App::registerAdmin(self::APP_ID, 'templates/admin.settings');
$container->registerAlias('PageController', PageController::class);
$container->registerAlias('VaultController', VaultController::class);
$container->registerAlias('VaultController', VaultController::class);
$container->registerAlias('CredentialService', CredentialService::class);
$container->registerAlias('NotificationService', NotificationService::class);
$container->registerAlias('ActivityService', ActivityService::class);
$container->registerAlias('VaultService', VaultService::class);
$container->registerAlias('FileService', FileService::class);
$container->registerAlias('ShareService', ShareService::class);
$container->registerAlias('Utils', Utils::class);
$container->registerAlias('IDBConnection', IDBConnection::class);
$container->registerAlias('IConfig', IConfig::class);
$container->registerAlias('SettingsService', SettingsService::class);
$container->registerAlias('APIMiddleware', APIMiddleware::class);
} }
/** /**
@ -135,7 +128,6 @@ class Application extends App {
*/ */
public function registerNavigationEntry() { public function registerNavigationEntry() {
$c = $this->getContainer(); $c = $this->getContainer();
/** @var \OCP\IServerContainer $server */
$server = $c->getServer(); $server = $c->getServer();
$navigationEntry = function () use ($c, $server) { $navigationEntry = function () use ($c, $server) {
return [ return [