Xgenious/ docs

Turning Plugins On and Off

Lifecycle

discover → installed → enable → active → disable → inactive → uninstall
StepWhat happens
DiscoverHelpNest scans core/plugins, validates every plugin.json and adds or updates a row for each. Folders whose name and modified time have not changed are skipped (cached). Invalid manifests are logged, never registered.
EnableRuns the plugin's database/migrations, calls activate(), creates the permissions declared in the manifest (guard admin) and writes an activate entry to the audit log.
DisableCalls deactivate() and removes everything the plugin contributed (menus, routes, hooks). Your data is kept.
UninstallCalls uninstall(), removes the seeded permissions and deletes the plugin row.

The audit history lives in plugin_audit_logs. It deliberately has no foreign key to the plugins table, so it survives an uninstall.

From the admin panel

Go to Admin → Plugins Manage → All Plugins. Below the legacy module cards you will find the Plugin Framework table.

ActionRoutePermission needed
DiscoverPOST admin/plugin-manage/framework/discoverplugins-list
ActivatePOST admin/plugin-manage/framework/{id}/enableplugins-status-change
DeactivatePOST admin/plugin-manage/framework/{id}/disableplugins-status-change
UninstallPOST admin/plugin-manage/framework/{id}/uninstallplugins-delete

The endpoints answer JSON in the form { "ok": true, "msg": "…" }. Uninstall also needs a confirm field that equals the plugin id, which is why the confirmation dialog asks you to retype it. The controller is App\Http\Controllers\Backend\PluginFrameworkController.

Note

After copying a new plugin folder to core/plugins, click Discover so it appears in the table, then Activate.

From the command line

php artisan plugins:discover
php artisan plugins:enable analytics-pro
php artisan plugins:disable analytics-pro
php artisan plugins:uninstall analytics-pro

Use the plugin id from plugin.json, not the folder name.

Scheduled work

Several plugins register scheduled commands (for example a nightly refresh). These only run if the Laravel scheduler is configured on the server, which a normal HelpNest install already requires:

* * * * * php /path/to/core/artisan schedule:run >> /dev/null 2>&1

Plugins that dispatch background jobs also need a queue worker running. See the installation guide for the production setup.

Still stuck?
Our support team is ready to help you get set up.
Get support