From 2f5ca6ae2086e6b070ecb29a4e8e0f9bfd51d661 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rub=C3=A9n=20D?= Date: Sun, 12 Jun 2022 10:02:16 +0200 Subject: [PATCH] refactor: [WIP] Migrate plugin controller. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Rubén D --- .../Controllers/Plugin/DeleteController.php | 99 +++++ .../Controllers/Plugin/DisableController.php | 86 ++++ .../Controllers/Plugin/EnableController.php | 86 ++++ .../Controllers/Plugin/IndexController.php | 94 ++++ .../Controllers/Plugin/PluginSearchBase.php | 80 ++++ .../Controllers/Plugin/ResetController.php | 90 ++++ .../Controllers/Plugin/SearchController.php | 58 +++ .../web/Controllers/Plugin/ViewController.php | 131 ++++++ .../web/Controllers/PluginController.php | 405 ------------------ 9 files changed, 724 insertions(+), 405 deletions(-) create mode 100644 app/modules/web/Controllers/Plugin/DeleteController.php create mode 100644 app/modules/web/Controllers/Plugin/DisableController.php create mode 100644 app/modules/web/Controllers/Plugin/EnableController.php create mode 100644 app/modules/web/Controllers/Plugin/IndexController.php create mode 100644 app/modules/web/Controllers/Plugin/PluginSearchBase.php create mode 100644 app/modules/web/Controllers/Plugin/ResetController.php create mode 100644 app/modules/web/Controllers/Plugin/SearchController.php create mode 100644 app/modules/web/Controllers/Plugin/ViewController.php delete mode 100644 app/modules/web/Controllers/PluginController.php diff --git a/app/modules/web/Controllers/Plugin/DeleteController.php b/app/modules/web/Controllers/Plugin/DeleteController.php new file mode 100644 index 00000000..8b929e34 --- /dev/null +++ b/app/modules/web/Controllers/Plugin/DeleteController.php @@ -0,0 +1,99 @@ +. + */ + +namespace SP\Modules\Web\Controllers\Plugin; + + +use Exception; +use SP\Core\Acl\ActionsInterface; +use SP\Core\Application; +use SP\Core\Events\Event; +use SP\Domain\Plugin\PluginServiceInterface; +use SP\Http\JsonResponse; +use SP\Modules\Web\Controllers\ControllerBase; +use SP\Modules\Web\Controllers\Traits\JsonTrait; +use SP\Mvc\Controller\ItemTrait; +use SP\Mvc\Controller\WebControllerHelper; + +/** + * Class DeleteController + */ +final class DeleteController extends ControllerBase +{ + use JsonTrait, ItemTrait; + + private PluginServiceInterface $pluginService; + + public function __construct( + Application $application, + WebControllerHelper $webControllerHelper, + PluginServiceInterface $pluginService + ) { + parent::__construct($application, $webControllerHelper); + + $this->checkLoggedIn(); + + $this->pluginService = $pluginService; + } + + /** + * resetAction + * + * @param int|null $id + * + * @return bool + * @throws \JsonException + */ + public function deleteAction(?int $id = null): bool + { + try { + if (!$this->acl->checkUserAccess(ActionsInterface::PLUGIN_DELETE)) { + return $this->returnJsonResponse( + JsonResponse::JSON_ERROR, + __u('You don\'t have permission to do this operation') + ); + } + + if ($id === null) { + $this->pluginService->deleteByIdBatch($this->getItemsIdFromRequest($this->request)); + + $this->eventDispatcher->notifyEvent('delete.plugin.selection', new Event($this)); + + return $this->returnJsonResponse(JsonResponse::JSON_SUCCESS, __u('Plugins deleted')); + } + + $this->pluginService->delete($id); + + $this->eventDispatcher->notifyEvent('delete.plugin', new Event($this)); + + return $this->returnJsonResponse(JsonResponse::JSON_SUCCESS, __u('Plugin deleted')); + } catch (Exception $e) { + processException($e); + + $this->eventDispatcher->notifyEvent('exception', new Event($e)); + + return $this->returnJsonResponseException($e); + } + } +} \ No newline at end of file diff --git a/app/modules/web/Controllers/Plugin/DisableController.php b/app/modules/web/Controllers/Plugin/DisableController.php new file mode 100644 index 00000000..5692f72c --- /dev/null +++ b/app/modules/web/Controllers/Plugin/DisableController.php @@ -0,0 +1,86 @@ +. + */ + +namespace SP\Modules\Web\Controllers\Plugin; + + +use Exception; +use SP\Core\Application; +use SP\Core\Events\Event; +use SP\Core\Events\EventMessage; +use SP\Domain\Plugin\PluginServiceInterface; +use SP\Http\JsonResponse; +use SP\Modules\Web\Controllers\ControllerBase; +use SP\Modules\Web\Controllers\Traits\JsonTrait; +use SP\Mvc\Controller\WebControllerHelper; + +/** + * Class DisableController + */ +final class DisableController extends ControllerBase +{ + use JsonTrait; + + private PluginServiceInterface $pluginService; + + public function __construct( + Application $application, + WebControllerHelper $webControllerHelper, + PluginServiceInterface $pluginService + ) { + parent::__construct($application, $webControllerHelper); + + $this->checkLoggedIn(); + + $this->pluginService = $pluginService; + } + + /** + * disableAction + * + * @param int $id + * + * @return bool + * @throws \JsonException + */ + public function disableAction(int $id): bool + { + try { + $this->pluginService->toggleEnabled($id, false); + + $this->eventDispatcher->notifyEvent( + 'edit.plugin.disable', + new Event($this, EventMessage::factory()->addDescription(__u('Plugin disabled'))) + ); + + return $this->returnJsonResponse(JsonResponse::JSON_SUCCESS, __u('Plugin disabled')); + } catch (Exception $e) { + processException($e); + + $this->eventDispatcher->notifyEvent('exception', new Event($e)); + + return $this->returnJsonResponseException($e); + } + } +} \ No newline at end of file diff --git a/app/modules/web/Controllers/Plugin/EnableController.php b/app/modules/web/Controllers/Plugin/EnableController.php new file mode 100644 index 00000000..f44d5ab1 --- /dev/null +++ b/app/modules/web/Controllers/Plugin/EnableController.php @@ -0,0 +1,86 @@ +. + */ + +namespace SP\Modules\Web\Controllers\Plugin; + + +use Exception; +use SP\Core\Application; +use SP\Core\Events\Event; +use SP\Core\Events\EventMessage; +use SP\Domain\Plugin\PluginServiceInterface; +use SP\Http\JsonResponse; +use SP\Modules\Web\Controllers\ControllerBase; +use SP\Modules\Web\Controllers\Traits\JsonTrait; +use SP\Mvc\Controller\WebControllerHelper; + +/** + * Class EnableController + */ +final class EnableController extends ControllerBase +{ + use JsonTrait; + + private PluginServiceInterface $pluginService; + + public function __construct( + Application $application, + WebControllerHelper $webControllerHelper, + PluginServiceInterface $pluginService + ) { + parent::__construct($application, $webControllerHelper); + + $this->checkLoggedIn(); + + $this->pluginService = $pluginService; + } + + /** + * enableAction + * + * @param int $id + * + * @return bool + * @throws \JsonException + */ + public function enableAction(int $id): bool + { + try { + $this->pluginService->toggleEnabled($id, true); + + $this->eventDispatcher->notifyEvent( + 'edit.plugin.enable', + new Event($this, EventMessage::factory()->addDescription(__u('Plugin enabled'))) + ); + + return $this->returnJsonResponse(JsonResponse::JSON_SUCCESS, __u('Plugin enabled')); + } catch (Exception $e) { + processException($e); + + $this->eventDispatcher->notifyEvent('exception', new Event($e)); + + return $this->returnJsonResponseException($e); + } + } +} \ No newline at end of file diff --git a/app/modules/web/Controllers/Plugin/IndexController.php b/app/modules/web/Controllers/Plugin/IndexController.php new file mode 100644 index 00000000..6d070fd0 --- /dev/null +++ b/app/modules/web/Controllers/Plugin/IndexController.php @@ -0,0 +1,94 @@ +. + */ + +namespace SP\Modules\Web\Controllers\Plugin; + +use DI\DependencyException; +use DI\NotFoundException; +use Exception; +use SP\Core\Acl\Acl; +use SP\Core\Acl\ActionsInterface; +use SP\Core\Events\Event; +use SP\Core\Events\EventMessage; +use SP\Core\Exceptions\ConstraintException; +use SP\Core\Exceptions\QueryException; +use SP\Core\Exceptions\SessionTimeout; +use SP\Domain\Auth\Services\AuthException; +use SP\Domain\Plugin\Services\PluginDataService; +use SP\Domain\Plugin\Services\PluginService; +use SP\Http\JsonResponse; +use SP\Infrastructure\Common\Repositories\NoSuchItemException; +use SP\Infrastructure\Plugin\Repositories\PluginModel; +use SP\Plugin\PluginManager; + +/** + * Class IndexController + * + * @package web\Controllers + */ +final class IndexController extends PluginSearchBase +{ + /** + * indexAction + * + * @throws \SP\Core\Exceptions\ConstraintException + * @throws \SP\Core\Exceptions\QueryException + */ + public function indexAction(): void + { + if (!$this->acl->checkUserAccess(ActionsInterface::PLUGIN)) { + return; + } + + $this->view->addTemplate('index'); + + $this->view->assign('data', $this->getSearchGrid()); + + $this->view(); + } + + + + + + + + + + + + /** + * @throws AuthException + * @throws DependencyException + * @throws NotFoundException + * @throws SessionTimeout + */ + protected function initialize(): void + { + $this->checkLoggedIn(); + + $this->pluginService = $this->dic->get(PluginService::class); + $this->pluginDataService = $this->dic->get(PluginDataService::class); + } +} \ No newline at end of file diff --git a/app/modules/web/Controllers/Plugin/PluginSearchBase.php b/app/modules/web/Controllers/Plugin/PluginSearchBase.php new file mode 100644 index 00000000..b205cb83 --- /dev/null +++ b/app/modules/web/Controllers/Plugin/PluginSearchBase.php @@ -0,0 +1,80 @@ +. + */ + +namespace SP\Modules\Web\Controllers\Plugin; + + +use SP\Core\Application; +use SP\Domain\Plugin\PluginServiceInterface; +use SP\Html\DataGrid\DataGridInterface; +use SP\Modules\Web\Controllers\ControllerBase; +use SP\Modules\Web\Controllers\Helpers\Grid\PluginGrid; +use SP\Modules\Web\Controllers\Traits\JsonTrait; +use SP\Mvc\Controller\ItemTrait; +use SP\Mvc\Controller\WebControllerHelper; + +/** + * Class PluginSearchBase + */ +abstract class PluginSearchBase extends ControllerBase +{ + use JsonTrait, ItemTrait; + + private PluginServiceInterface $pluginService; + private PluginGrid $pluginGrid; + + public function __construct( + Application $application, + WebControllerHelper $webControllerHelper, + PluginServiceInterface $pluginService, + PluginGrid $pluginGrid + ) { + parent::__construct($application, $webControllerHelper); + + $this->checkLoggedIn(); + + $this->pluginService = $pluginService; + $this->pluginGrid = $pluginGrid; + } + + /** + * getSearchGrid + * + * @return \SP\Html\DataGrid\DataGridInterface + * @throws \SP\Core\Exceptions\ConstraintException + * @throws \SP\Core\Exceptions\QueryException + */ + protected function getSearchGrid(): DataGridInterface + { + $itemSearchData = $this->getSearchData( + $this->configData->getAccountCount(), + $this->request + ); + + return $this->pluginGrid->updatePager( + $this->pluginGrid->getGrid($this->pluginService->search($itemSearchData)), + $itemSearchData + ); + } +} \ No newline at end of file diff --git a/app/modules/web/Controllers/Plugin/ResetController.php b/app/modules/web/Controllers/Plugin/ResetController.php new file mode 100644 index 00000000..10860ffe --- /dev/null +++ b/app/modules/web/Controllers/Plugin/ResetController.php @@ -0,0 +1,90 @@ +. + */ + +namespace SP\Modules\Web\Controllers\Plugin; + + +use Exception; +use SP\Core\Application; +use SP\Core\Events\Event; +use SP\Core\Events\EventMessage; +use SP\Domain\Plugin\PluginDataServiceInterface; +use SP\Domain\Plugin\PluginServiceInterface; +use SP\Http\JsonResponse; +use SP\Modules\Web\Controllers\ControllerBase; +use SP\Modules\Web\Controllers\Traits\JsonTrait; +use SP\Mvc\Controller\WebControllerHelper; + +/** + * Class ResetController + */ +final class ResetController extends ControllerBase +{ + use JsonTrait; + + private PluginServiceInterface $pluginService; + private PluginDataServiceInterface $pluginDataService; + + public function __construct( + Application $application, + WebControllerHelper $webControllerHelper, + PluginServiceInterface $pluginService, + PluginDataServiceInterface $pluginDataService + ) { + parent::__construct($application, $webControllerHelper); + + $this->checkLoggedIn(); + + $this->pluginService = $pluginService; + $this->pluginDataService = $pluginDataService; + } + + /** + * resetAction + * + * @param int $id + * + * @return bool + * @throws \JsonException + */ + public function resetAction(int $id): bool + { + try { + $this->pluginDataService->delete($this->pluginService->getById($id)->getName()); + + $this->eventDispatcher->notifyEvent( + 'edit.plugin.reset', + new Event($this, EventMessage::factory()->addDescription(__u('Plugin reset'))) + ); + + return $this->returnJsonResponse(JsonResponse::JSON_SUCCESS, __u('Plugin reset')); + } catch (Exception $e) { + processException($e); + + $this->eventDispatcher->notifyEvent('exception', new Event($e)); + + return $this->returnJsonResponseException($e); + } + } +} \ No newline at end of file diff --git a/app/modules/web/Controllers/Plugin/SearchController.php b/app/modules/web/Controllers/Plugin/SearchController.php new file mode 100644 index 00000000..98a398ce --- /dev/null +++ b/app/modules/web/Controllers/Plugin/SearchController.php @@ -0,0 +1,58 @@ +. + */ + +namespace SP\Modules\Web\Controllers\Plugin; + + +use SP\Core\Acl\ActionsInterface; +use SP\Http\JsonResponse; + +/** + * Class SearchController + */ +final class SearchController extends PluginSearchBase +{ + /** + * Search action + * + * @return bool + * @throws \JsonException + * @throws \SP\Core\Exceptions\ConstraintException + * @throws \SP\Core\Exceptions\QueryException + */ + public function searchAction(): bool + { + if (!$this->acl->checkUserAccess(ActionsInterface::PLUGIN_SEARCH)) { + return $this->returnJsonResponse( + JsonResponse::JSON_ERROR, + __u('You don\'t have permission to do this operation') + ); + } + + $this->view->addTemplate('datagrid-table', 'grid'); + $this->view->assign('data', $this->getSearchGrid()); + + return $this->returnJsonResponseData(['html' => $this->render()]); + } +} \ No newline at end of file diff --git a/app/modules/web/Controllers/Plugin/ViewController.php b/app/modules/web/Controllers/Plugin/ViewController.php new file mode 100644 index 00000000..49a8255a --- /dev/null +++ b/app/modules/web/Controllers/Plugin/ViewController.php @@ -0,0 +1,131 @@ +. + */ + +namespace SP\Modules\Web\Controllers\Plugin; + + +use Exception; +use SP\Core\Acl\Acl; +use SP\Core\Acl\ActionsInterface; +use SP\Core\Application; +use SP\Core\Events\Event; +use SP\Domain\Plugin\PluginServiceInterface; +use SP\Http\JsonResponse; +use SP\Infrastructure\Plugin\Repositories\PluginModel; +use SP\Modules\Web\Controllers\ControllerBase; +use SP\Modules\Web\Controllers\Traits\JsonTrait; +use SP\Mvc\Controller\WebControllerHelper; +use SP\Plugin\PluginManager; + +/** + * Class ViewController + */ +final class ViewController extends ControllerBase +{ + use JsonTrait; + + private PluginServiceInterface $pluginService; + private PluginManager $pluginManager; + + public function __construct( + Application $application, + WebControllerHelper $webControllerHelper, + PluginServiceInterface $pluginService, + PluginManager $pluginManager + ) { + parent::__construct($application, $webControllerHelper); + + $this->checkLoggedIn(); + + $this->pluginService = $pluginService; + $this->pluginManager = $pluginManager; + } + + /** + * View action + * + * @param int $id + * + * @return bool + * @throws \JsonException + */ + public function viewAction(int $id): bool + { + try { + if (!$this->acl->checkUserAccess(ActionsInterface::PLUGIN_VIEW)) { + return $this->returnJsonResponse( + JsonResponse::JSON_ERROR, + __u('You don\'t have permission to do this operation') + ); + } + + $this->view->assign('header', __('View Plugin')); + $this->view->assign('isView', true); + + $this->setViewData($id); + + $this->eventDispatcher->notifyEvent('show.plugin', new Event($this)); + + return $this->returnJsonResponseData(['html' => $this->render()]); + } catch (Exception $e) { + processException($e); + + $this->eventDispatcher->notifyEvent('exception', new Event($e)); + + return $this->returnJsonResponseException($e); + } + } + + /** + * Sets view data for displaying items's data + * + * @param int|null $pluginId + * + * @throws \SP\Core\Exceptions\ConstraintException + * @throws \SP\Core\Exceptions\QueryException + * @throws \SP\Infrastructure\Common\Repositories\NoSuchItemException + */ + protected function setViewData(?int $pluginId = null): void + { + $this->view->addTemplate('plugin'); + + $pluginData = $pluginId + ? $this->pluginService->getById($pluginId) + : new PluginModel(); + $pluginInfo = $this->pluginManager->getPlugin($pluginData->getName()); + + $this->view->assign('plugin', $pluginData); + $this->view->assign('pluginInfo', $pluginInfo); + + $this->view->assign('nextAction', Acl::getActionRoute(ActionsInterface::ITEMS_MANAGE)); + + if ($this->view->isView === true) { + $this->view->assign('disabled', 'disabled'); + $this->view->assign('readonly', 'readonly'); + } else { + $this->view->assign('disabled', false); + $this->view->assign('readonly', false); + } + } +} \ No newline at end of file diff --git a/app/modules/web/Controllers/PluginController.php b/app/modules/web/Controllers/PluginController.php deleted file mode 100644 index b01453ca..00000000 --- a/app/modules/web/Controllers/PluginController.php +++ /dev/null @@ -1,405 +0,0 @@ -. - */ - -namespace SP\Modules\Web\Controllers; - -use DI\DependencyException; -use DI\NotFoundException; -use Exception; -use SP\Core\Acl\Acl; -use SP\Core\Acl\ActionsInterface; -use SP\Core\Events\Event; -use SP\Core\Events\EventMessage; -use SP\Core\Exceptions\ConstraintException; -use SP\Core\Exceptions\QueryException; -use SP\Core\Exceptions\SessionTimeout; -use SP\Core\Exceptions\SPException; -use SP\Domain\Auth\Services\AuthException; -use SP\Domain\Plugin\Services\PluginDataService; -use SP\Domain\Plugin\Services\PluginService; -use SP\Html\DataGrid\DataGridInterface; -use SP\Http\JsonResponse; -use SP\Infrastructure\Common\Repositories\NoSuchItemException; -use SP\Infrastructure\Plugin\Repositories\PluginModel; -use SP\Modules\Web\Controllers\Helpers\Grid\PluginGrid; -use SP\Modules\Web\Controllers\Traits\JsonTrait; -use SP\Mvc\Controller\ItemTrait; -use SP\Plugin\PluginManager; - -/** - * Class PluginController - * - * @package web\Controllers - */ -final class PluginController extends ControllerBase -{ - use JsonTrait, ItemTrait; - - protected ?PluginService $pluginService = null; - protected ?PluginDataService $pluginDataService = null; - - /** - * indexAction - * - * @throws DependencyException - * @throws NotFoundException - * @throws ConstraintException - * @throws QueryException - * @throws SPException - */ - public function indexAction(): void - { - if (!$this->acl->checkUserAccess(ActionsInterface::PLUGIN)) { - return; - } - - $this->view->addTemplate('index'); - - $this->view->assign('data', $this->getSearchGrid()); - - $this->view(); - } - - /** - * getSearchGrid - * - * @throws DependencyException - * @throws NotFoundException - * @throws ConstraintException - * @throws QueryException - */ - protected function getSearchGrid(): DataGridInterface - { - $itemSearchData = $this->getSearchData( - $this->configData->getAccountCount(), - $this->request - ); - - $pluginGrid = $this->dic->get(PluginGrid::class); - - return $pluginGrid->updatePager( - $pluginGrid->getGrid($this->pluginService->search($itemSearchData)), - $itemSearchData - ); - } - - /** - * Search action - * - * @return bool - * @throws \DI\DependencyException - * @throws \DI\NotFoundException - * @throws \JsonException - * @throws \SP\Core\Exceptions\ConstraintException - * @throws \SP\Core\Exceptions\QueryException - */ - public function searchAction(): bool - { - if (!$this->acl->checkUserAccess(ActionsInterface::PLUGIN_SEARCH)) { - return $this->returnJsonResponse( - JsonResponse::JSON_ERROR, - __u('You don\'t have permission to do this operation') - ); - } - - $this->view->addTemplate('datagrid-table', 'grid'); - $this->view->assign('data', $this->getSearchGrid()); - - return $this->returnJsonResponseData(['html' => $this->render()]); - } - - /** - * View action - * - * @param int $id - * - * @return bool - * @throws \DI\DependencyException - * @throws \DI\NotFoundException - * @throws \JsonException - */ - public function viewAction(int $id): bool - { - try { - if (!$this->acl->checkUserAccess(ActionsInterface::PLUGIN_VIEW)) { - return $this->returnJsonResponse( - JsonResponse::JSON_ERROR, - __u('You don\'t have permission to do this operation') - ); - } - - $this->view->assign('header', __('View Plugin')); - $this->view->assign('isView', true); - - $this->setViewData($id); - - $this->eventDispatcher->notifyEvent( - 'show.plugin', - new Event($this) - ); - - return $this->returnJsonResponseData(['html' => $this->render()]); - } catch (Exception $e) { - processException($e); - - $this->eventDispatcher->notifyEvent( - 'exception', - new Event($e) - ); - - return $this->returnJsonResponseException($e); - } - } - - /** - * Sets view data for displaying items's data - * - * @param int|null $pluginId - * - * @throws DependencyException - * @throws NotFoundException - * @throws ConstraintException - * @throws QueryException - * @throws NoSuchItemException - */ - protected function setViewData(?int $pluginId = null): void - { - $this->view->addTemplate('plugin'); - - $pluginData = $pluginId - ? $this->pluginService->getById($pluginId) - : new PluginModel(); - $pluginInfo = $this->dic->get(PluginManager::class) - ->getPlugin($pluginData->getName()); - - $this->view->assign('plugin', $pluginData); - $this->view->assign('pluginInfo', $pluginInfo); - - $this->view->assign( - 'nextAction', - Acl::getActionRoute(ActionsInterface::ITEMS_MANAGE) - ); - - if ($this->view->isView === true) { - $this->view->assign('disabled', 'disabled'); - $this->view->assign('readonly', 'readonly'); - } else { - $this->view->assign('disabled', false); - $this->view->assign('readonly', false); - } - } - - /** - * enableAction - * - * @param int $id - * - * @return bool - * @throws DependencyException - * @throws NotFoundException - * @throws \JsonException - */ - public function enableAction(int $id): bool - { - try { - $this->pluginService->toggleEnabled($id, true); - - $this->eventDispatcher->notifyEvent( - 'edit.plugin.enable', - new Event( - $this, - EventMessage::factory() - ->addDescription(__u('Plugin enabled')) - ) - ); - - return $this->returnJsonResponse( - JsonResponse::JSON_SUCCESS, - __u('Plugin enabled') - ); - } catch (Exception $e) { - processException($e); - - $this->eventDispatcher->notifyEvent( - 'exception', - new Event($e) - ); - - return $this->returnJsonResponseException($e); - } - } - - /** - * disableAction - * - * @param int $id - * - * @return bool - * @throws DependencyException - * @throws NotFoundException - * @throws \JsonException - */ - public function disableAction(int $id): bool - { - try { - $this->pluginService->toggleEnabled($id, false); - - $this->eventDispatcher->notifyEvent( - 'edit.plugin.disable', - new Event( - $this, - EventMessage::factory() - ->addDescription(__u('Plugin disabled')) - ) - ); - - return $this->returnJsonResponse( - JsonResponse::JSON_SUCCESS, - __u('Plugin disabled') - ); - } catch (Exception $e) { - processException($e); - - $this->eventDispatcher->notifyEvent( - 'exception', - new Event($e) - ); - - return $this->returnJsonResponseException($e); - } - } - - /** - * resetAction - * - * @param int $id - * - * @return bool - * @throws \DI\DependencyException - * @throws \DI\NotFoundException - * @throws \JsonException - */ - public function resetAction(int $id): bool - { - try { - $pluginModel = $this->pluginService->getById($id); - $this->pluginDataService->delete($pluginModel->getName()); - - $this->eventDispatcher->notifyEvent( - 'edit.plugin.reset', - new Event( - $this, - EventMessage::factory() - ->addDescription(__u('Plugin reset')) - ) - ); - - return $this->returnJsonResponse( - JsonResponse::JSON_SUCCESS, - __u('Plugin reset') - ); - } catch (Exception $e) { - processException($e); - - $this->eventDispatcher->notifyEvent( - 'exception', - new Event($e) - ); - - return $this->returnJsonResponseException($e); - } - } - - /** - * resetAction - * - * @param int|null $id - * - * @return bool - * @throws \DI\DependencyException - * @throws \DI\NotFoundException - * @throws \JsonException - */ - public function deleteAction(?int $id = null): bool - { - try { - if (!$this->acl->checkUserAccess(ActionsInterface::PLUGIN_DELETE)) { - return $this->returnJsonResponse( - JsonResponse::JSON_ERROR, - __u('You don\'t have permission to do this operation') - ); - } - - if ($id === null) { - $this->pluginService - ->deleteByIdBatch($this->getItemsIdFromRequest($this->request)); - - $this->eventDispatcher->notifyEvent( - 'delete.plugin.selection', - new Event($this) - ); - - return $this->returnJsonResponse( - JsonResponse::JSON_SUCCESS, - __u('Plugins deleted') - ); - } - - $this->pluginService->delete($id); - - $this->eventDispatcher->notifyEvent( - 'delete.plugin', - new Event($this) - ); - - return $this->returnJsonResponse( - JsonResponse::JSON_SUCCESS, - __u('Plugin deleted') - ); - } catch (Exception $e) { - processException($e); - - $this->eventDispatcher->notifyEvent( - 'exception', - new Event($e) - ); - - return $this->returnJsonResponseException($e); - } - } - - /** - * @throws AuthException - * @throws DependencyException - * @throws NotFoundException - * @throws SessionTimeout - */ - protected function initialize(): void - { - $this->checkLoggedIn(); - - $this->pluginService = $this->dic->get(PluginService::class); - $this->pluginDataService = $this->dic->get(PluginDataService::class); - } -} \ No newline at end of file