diff --git a/Admin/Install/db.json b/Admin/Install/db.json index 0330b82..b45683f 100755 --- a/Admin/Install/db.json +++ b/Admin/Install/db.json @@ -633,9 +633,33 @@ "default": null, "null": true }, - "group_permission_permission": { - "name": "group_permission_permission", - "type": "INT", + "group_permission_hasread": { + "name": "group_permission_hasread", + "type": "TINYINT(1)", + "default": null, + "null": true + }, + "group_permission_hascreate": { + "name": "group_permission_hascreate", + "type": "TINYINT(1)", + "default": null, + "null": true + }, + "group_permission_hasmodify": { + "name": "group_permission_hasmodify", + "type": "TINYINT(1)", + "default": null, + "null": true + }, + "group_permission_hasdelete": { + "name": "group_permission_hasdelete", + "type": "TINYINT(1)", + "default": null, + "null": true + }, + "group_permission_haspermission": { + "name": "group_permission_haspermission", + "type": "TINYINT(1)", "default": null, "null": true } @@ -857,9 +881,33 @@ "default": null, "null": true }, - "account_permission_permission": { - "name": "account_permission_permission", - "type": "INT", + "account_permission_hasread": { + "name": "account_permission_hasread", + "type": "TINYINT(1)", + "default": null, + "null": true + }, + "account_permission_hascreate": { + "name": "account_permission_hascreate", + "type": "TINYINT(1)", + "default": null, + "null": true + }, + "account_permission_hasmodify": { + "name": "account_permission_hasmodify", + "type": "TINYINT(1)", + "default": null, + "null": true + }, + "account_permission_hasdelete": { + "name": "account_permission_hasdelete", + "type": "TINYINT(1)", + "default": null, + "null": true + }, + "account_permission_haspermission": { + "name": "account_permission_haspermission", + "type": "TINYINT(1)", "default": null, "null": true } diff --git a/Admin/Routes/Cli.php b/Admin/Routes/Cli.php new file mode 100755 index 0000000..141c721 --- /dev/null +++ b/Admin/Routes/Cli.php @@ -0,0 +1,18 @@ + [ + [ + 'dest' => '\Modules\Admin\Controller\CliController:viewEmptyCommand', + 'verb' => RouteVerb::ANY, + ], + ], + '^/admin/event.*$' => [ + [ + 'dest' => '\Modules\Admin\Controller\CliController:cliRunEvent', + 'verb' => RouteVerb::ANY, + ], + ], +]; diff --git a/Admin/Routes/Console.php b/Admin/Routes/Console.php deleted file mode 100755 index 9448746..0000000 --- a/Admin/Routes/Console.php +++ /dev/null @@ -1,12 +0,0 @@ - [ - [ - 'dest' => '\Modules\Admin\ConsoleController:viewEmptyCommand', - 'verb' => RouteVerb::ANY, - ], - ], -]; diff --git a/Controller/ApiController.php b/Controller/ApiController.php index b04fc0d..e7ba4d2 100755 --- a/Controller/ApiController.php +++ b/Controller/ApiController.php @@ -63,6 +63,7 @@ use phpOMS\Module\ModuleInfo; use phpOMS\Module\ModuleStatus; use phpOMS\System\File\Local\File; use phpOMS\System\MimeType; +use phpOMS\System\SystemUtils; use phpOMS\Uri\HttpUri; use phpOMS\Uri\UriFactory; use phpOMS\Utils\Parser\Markdown\Markdown; @@ -1825,7 +1826,7 @@ final class ApiController extends Controller } } - if (\is_file($path = __DIR__ . '/../../../Console/Routes.php')) { + if (\is_file($path = __DIR__ . '/../../../Cli/Routes.php')) { \file_put_contents($path, 'app->l11nManager, $request, $response); - $view->setTemplate('/Modules/Admin/Theme/Console/empty-command'); + $view->setTemplate('/Modules/Admin/Theme/Cli/empty-command'); return $view; } diff --git a/Controller/ConsoleController.php b/Controller/CliController.php similarity index 55% rename from Controller/ConsoleController.php rename to Controller/CliController.php index 3db9ba3..ec681ba 100755 --- a/Controller/ConsoleController.php +++ b/Controller/CliController.php @@ -29,7 +29,7 @@ use phpOMS\Views\View; * @link https://karaka.app * @since 1.0.0 */ -final class ConsoleController extends Controller +final class CliController extends Controller { /** * Method which generates the general settings view. @@ -49,7 +49,37 @@ final class ConsoleController extends Controller public function viewEmptyCommand(RequestAbstract $request, ResponseAbstract $response, $data = null) : RenderableInterface { $view = new View($this->app->l11nManager, $request, $response); - $view->setTemplate('/Modules/Admin/Theme/Console/empty-command'); + $view->setTemplate('/Modules/Admin/Theme/Cli/empty-command'); + + return $view; + } + + /** + * Find and run events + * + * This is mostly used by the web applications to offload searching for event hooks and of course running the events which might take a long time for complex events. + * + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * @param mixed $data Generic data + * + * @return RenderableInterface Response can be rendered + * + * @since 1.0.0 + * @codeCoverageIgnore + */ + public function cliRunEvent(RequestAbstract $request, ResponseAbstract $response, $data = null) : RenderableInterface + { + $event = $this->app->eventManager->triggerSimilar( + $request->getData('g'), + $request->getData('i'), + \json_decode($request->getData('d'), true) + ); + + $view = new View($this->app->l11nManager, $request, $response); + $view->setTemplate('/Modules/Admin/Theme/Cli/event-result'); + + $view->setData('event', $event); return $view; } diff --git a/Models/AccountPermissionMapper.php b/Models/AccountPermissionMapper.php index 1e67867..2080478 100755 --- a/Models/AccountPermissionMapper.php +++ b/Models/AccountPermissionMapper.php @@ -42,7 +42,11 @@ final class AccountPermissionMapper extends DataMapperFactory 'account_permission_type' => ['name' => 'account_permission_type', 'type' => 'int', 'internal' => 'type'], 'account_permission_element' => ['name' => 'account_permission_element', 'type' => 'int', 'internal' => 'element'], 'account_permission_component' => ['name' => 'account_permission_component', 'type' => 'int', 'internal' => 'component'], - 'account_permission_permission' => ['name' => 'account_permission_permission', 'type' => 'int', 'internal' => 'permission'], + 'account_permission_hasread' => ['name' => 'account_permission_hasread', 'type' => 'bool', 'internal' => 'hasRead'], + 'account_permission_hascreate' => ['name' => 'account_permission_hascreate', 'type' => 'bool', 'internal' => 'hasCreate'], + 'account_permission_hasmodify' => ['name' => 'account_permission_hasmodify', 'type' => 'bool', 'internal' => 'hasCreate'], + 'account_permission_hasdelete' => ['name' => 'account_permission_hasdelete', 'type' => 'bool', 'internal' => 'hasDelete'], + 'account_permission_haspermission' => ['name' => 'account_permission_haspermission', 'type' => 'bool', 'internal' => 'hasPermission'], ]; /** diff --git a/Models/GroupPermissionMapper.php b/Models/GroupPermissionMapper.php index 492eed0..5e45e6e 100755 --- a/Models/GroupPermissionMapper.php +++ b/Models/GroupPermissionMapper.php @@ -42,7 +42,11 @@ final class GroupPermissionMapper extends DataMapperFactory 'group_permission_type' => ['name' => 'group_permission_type', 'type' => 'int', 'internal' => 'type'], 'group_permission_element' => ['name' => 'group_permission_element', 'type' => 'int', 'internal' => 'element'], 'group_permission_component' => ['name' => 'group_permission_component', 'type' => 'int', 'internal' => 'component'], - 'group_permission_permission' => ['name' => 'group_permission_permission', 'type' => 'int', 'internal' => 'permission'], + 'group_permission_hasread' => ['name' => 'group_permission_hasread', 'type' => 'bool', 'internal' => 'hasRead'], + 'group_permission_hascreate' => ['name' => 'group_permission_hascreate', 'type' => 'bool', 'internal' => 'hasCreate'], + 'group_permission_hasmodify' => ['name' => 'group_permission_hasmodify', 'type' => 'bool', 'internal' => 'hasCreate'], + 'group_permission_hasdelete' => ['name' => 'group_permission_hasdelete', 'type' => 'bool', 'internal' => 'hasDelete'], + 'group_permission_haspermission' => ['name' => 'group_permission_haspermission', 'type' => 'bool', 'internal' => 'hasPermission'], ]; /** diff --git a/Theme/Console/empty-command.tpl.php b/Theme/Cli/empty-command.tpl.php similarity index 100% rename from Theme/Console/empty-command.tpl.php rename to Theme/Cli/empty-command.tpl.php