protected function _singleModules($action, $modulesList, $entrypoint)
{
$this->startMessage();
if ($entrypoint == null) {
$entryPointList = $this->entryPoints;
} else {
if (isset($this->epId[$entrypoint])) {
$entryPointList = array($this->entryPoints[$this->epId[$entrypoint]]);
} else {
throw new \Exception("unknown entry point");
}
}
foreach ($entryPointList as $epId => $ep) {
if ($ep->sameConfigAs) {
continue;
}
$allModules =& $ep->getLaunchers();
$modules = array();
// check that all given modules are existing
$hasError = false;
foreach ($modulesList as $name) {
if (!isset($allModules[$name])) {
$this->error('module.unknown', $name);
$hasError = true;
}
}
if ($hasError) {
continue;
}
// get all modules
$resolver = new Resolver();
foreach ($ep->getLaunchers() as $name => $module) {
$resolverItem = $module->getResolverItem($epId);
if (in_array($name, $modulesList)) {
$resolverItem->setAction($action);
}
$resolver->addItem($resolverItem);
}
// install modules
$result = $result & $this->_installModules($resolver, $ep, false);
if (!$result) {
break;
}
$this->installerIni->save();
}
$this->completeInstallStatus();
$this->installerIni->save();
$this->endMessage();
return $result;
}