From 95141550fa20b4f33e4e58d1da0268764c35d4cc Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 12 Dec 2019 15:39:29 +0100 Subject: [PATCH] NEW Support of deployement of metapackages --- ChangeLog | 1 + htdocs/admin/modules.php | 44 +++++++++++++++++++++++++++------------- 2 files changed, 31 insertions(+), 14 deletions(-) diff --git a/ChangeLog b/ChangeLog index 96027e862ac..294a0c78aec 100644 --- a/ChangeLog +++ b/ChangeLog @@ -145,6 +145,7 @@ NEW: #4301 For Developers or integrators: NEW: Add a manifest.json.php file for web app. +NEW: Support of deployement of metapackages NEW: Removed deprecated code that create linked object from ->origin NEW: experimental zapier for dolibarr NEW: Accountancy - Add hook bookkeepinglist on general ledger diff --git a/htdocs/admin/modules.php b/htdocs/admin/modules.php index 8bdfb978219..9171d9ffda7 100644 --- a/htdocs/admin/modules.php +++ b/htdocs/admin/modules.php @@ -198,20 +198,36 @@ if ($action=='install') // TODO Make more test } - // Now we install the module - if (! $error) - { - //var_dump($dirins); - @dol_delete_dir_recursive($dirins.'/'.$modulename); // delete the zip file - dol_syslog("Uncompress of module file is a success. We copy it from ".$modulenamedir." into target dir ".$dirins.'/'.$modulename); - $result=dolCopyDir($modulenamedir, $dirins.'/'.$modulename, '0444', 1); - if ($result <= 0) - { - dol_syslog('Failed to call dolCopyDir result='.$result." with param ".$modulenamedir." and ".$dirins.'/'.$modulename, LOG_WARNING); - $langs->load("errors"); - setEventMessages($langs->trans("ErrorFailToCopyDir", $modulenamedir, $dirins.'/'.$modulename), null, 'errors'); - $error++; - } + dol_syslog("Uncompress of module file is a success."); + + $modulenamearrays = array(); + if (dol_is_file($modulenamedir.'/metapackage.conf')) { + // This is a meta package + $metafile = file_get_contents($modulenamedir.'/metapackage.conf'); + $modulenamearrays = explode("\n", $metafile); + } + $modulenamearrays[$modulename] = $modulename; + + foreach($modulenamearrays as $modulenameval) { + if (strpos($modulenameval, '#') === 0) continue; // Discard comments + if (strpos($modulenameval, '//') === 0) continue; // Discard comments + if (! trim($modulenameval)) continue; + + // Now we install the module + if (! $error) + { + //var_dump($dirins); + @dol_delete_dir_recursive($dirins.'/'.$modulenameval); // delete the zip file + dol_syslog("We copy now directory ".$conf->admin->dir_temp.'/'.$tmpdir.'/htdocs/'.$modulenameval." into target dir ".$dirins.'/'.$modulenameval); + $result=dolCopyDir($conf->admin->dir_temp.'/'.$tmpdir.'/htdocs/'.$modulenameval, $dirins.'/'.$modulenameval, '0444', 1); + if ($result <= 0) + { + dol_syslog('Failed to call dolCopyDir result='.$result." with param ".$modulenamedir." and ".$dirins.'/'.$modulenameval, LOG_WARNING); + $langs->load("errors"); + setEventMessages($langs->trans("ErrorFailToCopyDir", $conf->admin->dir_temp.'/'.$tmpdir.'/htdocs/'.$modulenameval, $dirins.'/'.$modulenameval), null, 'errors'); + $error++; + } + } } } }