public function scanDirectory($pluginId = null)
{
// scan plugin directory
$directories = glob($this->pluginDirectory . '/' . ($pluginId ?: '*'), GLOB_ONLYDIR);
if (count($directories) === 0) {
if ($pluginId !== null) {
throw new PluginNotFoundException(['plugin' => $pluginId]);
} else {
return [];
}
}
$pluginInfos = [];
foreach ($directories as $directory) {
$id = basename($directory);
if (strpos($id, '_') === 0) {
continue;
}
$path = $directory . '/plugin.php';
$pluginInfo = [];
try {
$pluginInfo['class'] = $this->getClassName($path);
} catch (\Exception $e) {
continue;
}
$pluginInfo['id'] = $id;
$pluginInfo['path'] = $path;
$pluginInfo['metaData'] = $this->metaFileReader->read($directory);
$pluginInfos[$id] = $pluginInfo;
}
return $pluginInfos;
}