Пример #1
0
/**
 *  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;
}
Пример #2
0
/*
 * Actions
 */

if (isset($_GET["action"]) && $_GET["action"] == 'set' && $user->admin)
{
    $result=Activate($_GET["value"]);
    $mesg='';
    if ($result) $mesg=$result;
    Header("Location: modules.php?mode=".$mode."&mesg=".urlencode($mesg));
	exit;
}

if (isset($_GET["action"]) && $_GET["action"] == 'reset' && $user->admin)
{
    $result=UnActivate($_GET["value"]);
    $mesg='';
    if ($result) $mesg=$result;
    Header("Location: modules.php?mode=".$mode."&mesg=".urlencode($mesg));
	exit;
}


/*
 * View
 */

$_SESSION["mode"]=$mode;

$help_url='EN:First_setup|FR:Premiers_paramétrages|ES:Primeras_configuraciones';
llxHeader('',$langs->trans("Setup"),$help_url);