protected function getUnregisteredPlugins(array $plugins, \Eccube\Application $app)
{
$finder = new Finder();
$pluginCodes = array();
// DB登録済みプラグインコードのみ取得
foreach ($plugins as $key => $plugin) {
$pluginCodes[] = $plugin->getCode();
}
// DB登録済みプラグインコードPluginディレクトリから排他
$dirs = $finder->in($app['config']['plugin_realdir'])->depth(0)->directories();
// プラグイン基本チェック
$unregisteredPlugins = array();
foreach ($dirs as $dir) {
$pluginCode = $dir->getBasename();
if (in_array($pluginCode, $pluginCodes, true)) {
continue;
}
try {
$app['eccube.service.plugin']->checkPluginArchiveContent($dir->getRealPath());
} catch (\Eccube\Exception\PluginException $e) {
//config.yamlに不備があった際は全てスキップ
$app['monolog']->warning($e->getMessage());
continue;
}
$config = $app['eccube.service.plugin']->readYml($dir->getRealPath() . '/config.yml');
$unregisteredPlugins[$pluginCode]['name'] = isset($config['name']) ? $config['name'] : null;
$unregisteredPlugins[$pluginCode]['event'] = isset($config['event']) ? $config['event'] : null;
$unregisteredPlugins[$pluginCode]['version'] = isset($config['version']) ? $config['version'] : null;
$unregisteredPlugins[$pluginCode]['enable'] = Constant::DISABLED;
$unregisteredPlugins[$pluginCode]['code'] = isset($config['code']) ? $config['code'] : null;
}
return $unregisteredPlugins;
}