Example #1
0
/**
 *  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;
}
    accessforbidden();
}
$specialtostring = array(0 => 'common', 1 => 'interfaces', 2 => 'other', 3 => 'functional', 4 => 'marketplace');
/*
 * Actions
 */
if ($action == 'set' && $user->admin) {
    $result = activateModule($value);
    if ($result) {
        setEventMessage($result, 'errors');
    }
    header("Location: modules.php?mode=" . $mode);
    exit;
}
if ($action == 'reset' && $user->admin) {
    $result = unActivateModule($value);
    if ($result) {
        setEventMessage($result, 'errors');
    }
    header("Location: modules.php?mode=" . $mode);
    exit;
}
/*
 * View
 */
$form = new Form($db);
$_SESSION["mode"] = $mode;
$help_url = 'EN:First_setup|FR:Premiers_paramétrages|ES:Primeras_configuraciones';
llxHeader('', $langs->trans("Setup"), $help_url);
// Search modules dirs
$modulesdir = array();
Example #3
0
/**
 *  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();
    } else {
        // TODO Cannot instantiate abstract class
        //$genericMod = new DolibarrModul($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 ($requiredby) {
        $countrb = count($objMod->requiredby);
        for ($i = 0; $i < $countrb; $i++) {
            unActivateModule($objMod->requiredby[$i]);
        }
    }
    return $ret;
}