From dcaef54f9bc1850447352d25a26583296eaf00e6 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 4 Sep 2015 16:47:43 +0200 Subject: [PATCH] Fix can't disable a module that were removed. --- htdocs/core/lib/admin.lib.php | 5 +++-- htdocs/core/modules/DolibarrModules.class.php | 11 ++++++++--- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/htdocs/core/lib/admin.lib.php b/htdocs/core/lib/admin.lib.php index d59e3c9a864..7469777fa89 100644 --- a/htdocs/core/lib/admin.lib.php +++ b/htdocs/core/lib/admin.lib.php @@ -838,13 +838,13 @@ function unActivateModule($value, $requiredby=1) } else { - // TODO Replace this afte DolibarrModules is moved as abstract class with a try catch to show module is bugged + // TODO Replace this after DolibarrModules is moved as abstract class with a try catch to show module is bugged $genericMod = new DolibarrModules($db); $genericMod->name=preg_replace('/^mod/i','',$modName); $genericMod->rights_class=strtolower(preg_replace('/^mod/i','',$modName)); $genericMod->const_name='MAIN_MODULE_'.strtoupper(preg_replace('/^mod/i','',$modName)); dol_syslog("modules::unActivateModule Failed to find module file, we use generic function with name " . $modName); - $genericMod->_remove(); + $genericMod->_remove(''); } // Desactivation des modules qui dependent de lui @@ -853,6 +853,7 @@ function unActivateModule($value, $requiredby=1) $countrb=count($objMod->requiredby); for ($i = 0; $i < $countrb; $i++) { + var_dump($objMod->requiredby[$i]); unActivateModule($objMod->requiredby[$i]); } } diff --git a/htdocs/core/modules/DolibarrModules.class.php b/htdocs/core/modules/DolibarrModules.class.php index de2870d7a9f..d61296f0cc1 100644 --- a/htdocs/core/modules/DolibarrModules.class.php +++ b/htdocs/core/modules/DolibarrModules.class.php @@ -32,7 +32,7 @@ * * Parent class for module descriptor class files */ -abstract class DolibarrModules +class DolibarrModules // Can not be abstract, because we need to instantiant it into unActivateModule to be able to disable a module whose files were removed. { /** * @var DoliDb Database handler @@ -194,16 +194,21 @@ abstract class DolibarrModules */ public $core_enabled; + /** * Constructor. Define names, constants, directories, boxes, permissions * * @param DoliDB $db Database handler */ - //public function __construct($db); // We should but can't set this as abstract because this will make dolibarr hang // after migration due to old module not implementing. We must wait PHP is able to make // a try catch on Fatal error to manage this correctly. - + function __construct($db) + { + $this->db=$db; + } + + /** * Enables a module. * Inserts all informations into database