Adds PluginManager core class
parent
9797caa58e
commit
facddb0d6d
|
@ -0,0 +1,37 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Core;
|
||||||
|
|
||||||
|
class PluginManager
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Loads all enabled plugins from the given directory.
|
||||||
|
*
|
||||||
|
* @param string $pluginsDir
|
||||||
|
* @return array<string, array{path: string, meta: array}>
|
||||||
|
*/
|
||||||
|
public static function load(string $pluginsDir): array
|
||||||
|
{
|
||||||
|
$enabled = [];
|
||||||
|
foreach (glob($pluginsDir . '*', GLOB_ONLYDIR) as $pluginPath) {
|
||||||
|
$manifest = $pluginPath . '/plugin.json';
|
||||||
|
if (!file_exists($manifest)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
$meta = json_decode(file_get_contents($manifest), true);
|
||||||
|
if (empty($meta['enabled'])) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
$name = basename($pluginPath);
|
||||||
|
$enabled[$name] = [
|
||||||
|
'path' => $pluginPath,
|
||||||
|
'meta' => $meta,
|
||||||
|
];
|
||||||
|
$bootstrap = $pluginPath . '/bootstrap.php';
|
||||||
|
if (file_exists($bootstrap)) {
|
||||||
|
include_once $bootstrap;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $enabled;
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue