mirror of
https://github.com/flarum/core.git
synced 2025-10-17 17:56:14 +02:00
Rough extension management implementation
This commit is contained in:
43
src/Api/Actions/Extensions/UpdateAction.php
Normal file
43
src/Api/Actions/Extensions/UpdateAction.php
Normal file
@@ -0,0 +1,43 @@
|
||||
<?php namespace Flarum\Api\Actions\Extensions;
|
||||
|
||||
use Flarum\Api\Actions\JsonApiAction;
|
||||
use Flarum\Api\Request;
|
||||
use Illuminate\Contracts\Bus\Dispatcher;
|
||||
use Flarum\Core\Exceptions\PermissionDeniedException;
|
||||
use Flarum\Support\ExtensionManager;
|
||||
|
||||
class UpdateAction extends JsonApiAction
|
||||
{
|
||||
protected $extensions;
|
||||
|
||||
public function __construct(ExtensionManager $extensions)
|
||||
{
|
||||
$this->extensions = $extensions;
|
||||
}
|
||||
|
||||
protected function respond(Request $request)
|
||||
{
|
||||
if (! $request->actor->isAdmin()) {
|
||||
throw new PermissionDeniedException;
|
||||
}
|
||||
|
||||
$enabled = $request->get('enabled');
|
||||
$name = $request->get('name');
|
||||
|
||||
if ($enabled === true) {
|
||||
$this->extensions->enable($name);
|
||||
} elseif ($enabled === false) {
|
||||
$this->extensions->disable($name);
|
||||
}
|
||||
|
||||
app('flarum.formatter')->flush();
|
||||
|
||||
$assetPath = public_path('assets');
|
||||
$manifest = file_get_contents($assetPath . '/rev-manifest.json');
|
||||
$revisions = json_decode($manifest, true);
|
||||
|
||||
foreach ($revisions as $file => $revision) {
|
||||
@unlink($assetPath . '/' . substr_replace($file, '-' . $revision, strrpos($file, '.'), 0));
|
||||
}
|
||||
}
|
||||
}
|
@@ -313,6 +313,19 @@ class ApiServiceProvider extends ServiceProvider
|
||||
$this->action('Flarum\Api\Actions\Groups\DeleteAction')
|
||||
);
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Extensions
|
||||
|--------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
// Toggle an extension
|
||||
$routes->patch(
|
||||
'/extensions/{name}',
|
||||
'flarum.api.extensions.update',
|
||||
$this->action('Flarum\Api\Actions\Extensions\UpdateAction')
|
||||
);
|
||||
|
||||
event(new RegisterApiRoutes($routes));
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user