示例#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;
}
示例#2
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;
}
示例#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();
        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;
}