protected function runPreInstall($moduleschain, $ep, $installWholeApp, $flags)
{
$result = true;
// ----------- pre install
// put also available installers into $componentsToInstall for
// the next step
$componentsToInstall = array();
foreach ($moduleschain as $resolverItem) {
$component = $resolverItem->getProperty('component');
try {
if ($resolverItem->getAction() == Resolver::ACTION_INSTALL) {
if ($ep->getConfigObj()->disableInstallers) {
$installer = null;
} else {
$installer = $component->getInstaller($ep, $installWholeApp);
}
$componentsToInstall[] = array($installer, $component, Resolver::ACTION_INSTALL);
if ($flags & self::FLAG_INSTALL_MODULE && $installer) {
$installer->preInstall();
}
} elseif ($resolverItem->getAction() == Resolver::ACTION_UPGRADE) {
if ($ep->getConfigObj()->disableInstallers) {
$upgraders = array();
} else {
$upgraders = $component->getUpgraders($ep);
}
if ($flags & self::FLAG_UPGRADE_MODULE && count($upgraders)) {
foreach ($upgraders as $upgrader) {
$upgrader->preInstall();
}
}
$componentsToInstall[] = array($upgraders, $component, Resolver::ACTION_UPGRADE);
} else {
if ($resolverItem->getAction() == Resolver::ACTION_REMOVE) {
if ($ep->getConfigObj()->disableInstallers) {
$installer = null;
} else {
$installer = $component->getInstaller($ep, $installWholeApp);
}
$componentsToInstall[] = array($installer, $component, Resolver::ACTION_REMOVE);
if ($flags & self::FLAG_REMOVE_MODULE && $installer) {
$installer->preUninstall();
}
}
}
} catch (Exception $e) {
$result = false;
$this->error($e->getLocaleKey(), $e->getLocaleParameters());
} catch (\Exception $e) {
$result = false;
$this->error('install.module.error', array($component->getName(), $e->getMessage()));
}
}
if (!$result) {
return false;
}
return $componentsToInstall;
}