/** * Disable a module * * @param string $value Nom du module a desactiver * @param int $requiredby 1=Desactive aussi modules dependants * @return string Error message or ''; */ function unActivateModule($value, $requiredby = 1) { global $db, $modules, $conf; // Check parameters if (empty($value)) { return 'ErrorBadParameter'; } $ret = ''; $modName = $value; $modFile = $modName . ".class.php"; // Loop on each directory to fill $modulesdir $modulesdir = dolGetModulesDirs(); // Loop on each modulesdir directories $found = false; foreach ($modulesdir as $dir) { if (file_exists($dir . $modFile)) { $found = @(include_once $dir . $modFile); if ($found) { break; } } } if ($found) { $objMod = new $modName($db); $result = $objMod->remove(); if ($result <= 0) { $ret = $objMod->error; } } else { //print $dir.$modFile; // TODO Replace this after DolibarrModules is moved as abstract class with a try catch to show module we try to disable has not been found or could not be loaded $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(array()); } // Desactivation des modules qui dependent de lui if (!$ret && $requiredby) { $countrb = count($objMod->requiredby); for ($i = 0; $i < $countrb; $i++) { //var_dump($objMod->requiredby[$i]); unActivateModule($objMod->requiredby[$i]); } } return $ret; }
/** * Disable a module * @param value Nom du module a desactiver * @param requiredby 1=Desactive aussi modules dependants * @return string Error message or ''; */ function UnActivate($value,$requiredby=1) { global $db, $modules, $conf; $modName = $value; $ret=''; $modulesdir=array(); // Desactivation du module if ($modName) { $modFile = $modName . ".class.php"; // Loop on each directory $found=false; foreach ($conf->file->dol_document_root as $type => $dirroot) { $modulesdir[] = $dirroot."/includes/modules/"; if ($type == 'alt') { $handle=@opendir($dirroot); if (is_resource($handle)) { while (($file = readdir($handle))!==false) { if (is_dir($dirroot.'/'.$file) && substr($file, 0, 1) <> '.' && substr($file, 0, 3) <> 'CVS' && $file != 'includes') { if (is_dir($dirroot . '/' . $file . '/includes/modules/')) { $modulesdir[] = $dirroot . '/' . $file . '/includes/modules/'; } } } closedir($handle); } } } foreach ($modulesdir as $dir) { if (file_exists($dir.$modFile)) { $found=@include_once($dir.$modFile); if ($found) break; } } if ($found) { $objMod = new $modName($db); $result=$objMod->remove(); } else { $genericMod = new DolibarrModules($db); $genericMod->name=preg_replace('/^mod/i','',$modName); $genericMod->style_sheet=1; $genericMod->rights_class=strtolower(preg_replace('/^mod/i','',$modName)); $genericMod->const_name='MAIN_MODULE_'.strtoupper(preg_replace('/^mod/i','',$modName)); dol_syslog("modules::UnActivate Failed to find module file, we use generic function with name ".$genericMod->name); $genericMod->_remove(); } } // Desactivation des modules qui dependent de lui if ($requiredby) { for ($i = 0; $i < sizeof($objMod->requiredby); $i++) { UnActivate($objMod->requiredby[$i]); } } return $ret; }
/** * Disable a module * * @param string $value Nom du module a desactiver * @param int $requiredby 1=Desactive aussi modules dependants * @return string Error message or ''; */ function unActivateModule($value, $requiredby = 1) { global $db, $modules, $conf; // Check parameters if (empty($value)) { return 'ErrorBadParameter'; } $ret = ''; $modName = $value; $modFile = $modName . ".class.php"; // Loop on each directory to fill $modulesdir $modulesdir = array(); foreach ($conf->file->dol_document_root as $type => $dirroot) { $modulesdir[] = $dirroot . "/core/modules/"; $handle = @opendir(dol_osencode($dirroot)); if (is_resource($handle)) { while (($file = readdir($handle)) !== false) { if (is_dir($dirroot . '/' . $file) && substr($file, 0, 1) != '.' && substr($file, 0, 3) != 'CVS' && $file != 'includes') { if (is_dir($dirroot . '/' . $file . '/core/modules/')) { $modulesdir[] = $dirroot . '/' . $file . '/core/modules/'; } } } closedir($handle); } } // Loop on each directory $found = false; foreach ($modulesdir as $dir) { if (file_exists($dir . $modFile)) { $found = @(include_once $dir . $modFile); if ($found) { break; } } } if ($found) { $objMod = new $modName($db); $result = $objMod->remove(); if ($result <= 0) { $ret = $objMod->error; } } else { // TODO Replace this afte 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(); } // Desactivation des modules qui dependent de lui if (!$ret && $requiredby) { $countrb = count($objMod->requiredby); for ($i = 0; $i < $countrb; $i++) { unActivateModule($objMod->requiredby[$i]); } } return $ret; }