diff --git a/htdocs/install/upgrade2.php b/htdocs/install/upgrade2.php
index 9ee3d842e51..d3eb23e99b6 100644
--- a/htdocs/install/upgrade2.php
+++ b/htdocs/install/upgrade2.php
@@ -63,6 +63,7 @@ $setuplang=GETPOST("selectlang",'',3)?GETPOST("selectlang",'',3):'auto';
$langs->setDefaultLang($setuplang);
$versionfrom=GETPOST("versionfrom",'',3)?GETPOST("versionfrom",'',3):(empty($argv[1])?'':$argv[1]);
$versionto=GETPOST("versionto",'',3)?GETPOST("versionto",'',3):(empty($argv[2])?'':$argv[2]);
+$enablemodules=GETPOST("enablemodules",'',3)?GETPOST("enablemodules",'',3):(empty($argv[3])?'':$argv[3]);
$langs->load('admin');
$langs->load('install');
@@ -84,9 +85,9 @@ if (! is_object($conf)) dolibarr_install_syslog("upgrade2: conf file not initial
* View
*/
-if (! $versionfrom && ! $versionto)
+if ((! $versionfrom || preg_match('/version/', $versionfrom)) && (! $versionto || preg_match('/version/', $versionto)))
{
- print 'Error: Parameter versionfrom or versionto missing.'."\n";
+ print 'Error: Parameter versionfrom or versionto missing or having a bad format.'."\n";
print 'Upgrade must be ran from cmmand line with parameters or called from page install/index.php (like a first install) instead of page install/upgrade.php'."\n";
// Test if batch mode
$sapi_type = php_sapi_name();
@@ -416,6 +417,21 @@ if (! GETPOST("action") || preg_match('/upgrade/i',GETPOST('action')))
migrate_reload_menu($db,$langs,$conf,$versionto);
}
+
+ // Can force activation of some module during migration with third paramater = MAIN_MODULE_XXX,MAIN_MODULE_YYY,...
+ if ($enablemodules)
+ {
+ // Reload modules (this must be always and only into last targeted version)
+ $listofmodules=array();
+ $tmplistofmodules=explode(',', $enablemodules);
+ foreach($tmplistofmodules as $value)
+ {
+ $listofmodules[$value]='newboxdefonly';
+ }
+ migrate_reload_modules($db,$langs,$conf,$listofmodules,1);
+ }
+
+
print '
'.$langs->trans("MigrationFinished").' |
';
// On commit dans tous les cas.
@@ -3776,11 +3792,12 @@ function migrate_delete_old_dir($db,$langs,$conf)
* @param Translate $langs Object langs
* @param Conf $conf Object conf
* @param array $listofmodule List of modules
+ * @param int $force 1=Reload module even if not already loaded
* @return void
*/
-function migrate_reload_modules($db,$langs,$conf,$listofmodule=array())
+function migrate_reload_modules($db,$langs,$conf,$listofmodule=array(),$force=0)
{
- dolibarr_install_syslog("upgrade2::migrate_reload_modules");
+ dolibarr_install_syslog("upgrade2::migrate_reload_modules force=".$force);
// If no info is provided, we reload all modules with mode newboxdefonly.
if (count($listofmodule) == 0)
@@ -3805,7 +3822,7 @@ function migrate_reload_modules($db,$langs,$conf,$listofmodule=array())
foreach($listofmodule as $moduletoreload => $reloadmode)
{
- if (empty($moduletoreload) || empty($conf->global->$moduletoreload)) continue;
+ if (empty($moduletoreload) || (empty($conf->global->$moduletoreload) && ! $force)) continue; // Discard reload if module not enabled
$mod=null;
@@ -3819,7 +3836,17 @@ function migrate_reload_modules($db,$langs,$conf,$listofmodule=array())
$mod->init($reloadmode);
}
}
- if ($moduletoreload == 'MAIN_MODULE_BARCODE')
+ if ($moduletoreload == 'MAIN_MODULE_API')
+ {
+ dolibarr_install_syslog("upgrade2::migrate_reload_modules Reactivate Rest API module");
+ $res=@include_once DOL_DOCUMENT_ROOT.'/core/modules/modApi.class.php';
+ if ($res) {
+ $mod=new modApi($db);
+ //$mod->remove('noboxes');
+ $mod->init($reloadmode);
+ }
+ }
+ if ($moduletoreload == 'MAIN_MODULE_BARCODE')
{
dolibarr_install_syslog("upgrade2::migrate_reload_modules Reactivate Barcode module");
$res=@include_once DOL_DOCUMENT_ROOT.'/core/modules/modBarcode.class.php';
@@ -3974,7 +4001,7 @@ function migrate_reload_modules($db,$langs,$conf,$listofmodule=array())
{
print '';
print ''.$langs->trans('Upgrade').': ';
- print $langs->trans('MigrationReloadModule')." ".$mod->getName();
+ print $langs->trans('MigrationReloadModule').' '.$mod->getName(); // We keep getName outside of trans because getName is already encoded/translated
print "";
print " \n";
print ' |
';