protected function runConfigCompilerPlugins($config, $modules)
{
if (!isset($config->_pluginsPathList_configcompiler)) {
return;
}
// load plugins
$plugins = array();
foreach ($config->_pluginsPathList_configcompiler as $pluginName => $path) {
$file = $path . $pluginName . '.configcompiler.php';
if (!file_exists($file)) {
continue;
}
require_once $file;
$classname = '\\' . $pluginName . 'ConfigCompilerPlugin';
$plugins[] = new $classname();
}
if (!count($plugins)) {
return;
}
// sort plugins by priority
usort($plugins, function ($a, $b) {
return $a->getPriority() < $b->getPriority();
});
// run plugins
foreach ($plugins as $plugin) {
$plugin->atStart($config);
}
foreach ($modules as $moduleName => $module) {
foreach ($plugins as $plugin) {
$plugin->onModule($config, $module);
}
}
foreach ($plugins as $plugin) {
$plugin->atEnd($config);
}
}