New: parametre de config des repertoires dans les proprietes de la classe du module

avec un rpertoire parent en fonction de l'entit
This commit is contained in:
Regis Houssin 2009-04-28 13:04:35 +00:00
parent fa30d8ca48
commit 46ff461816
6 changed files with 147 additions and 42 deletions

View File

@ -104,6 +104,13 @@ class Conf
$this->tabs_modules[$params[0]][]=$value;
//print 'xxx'.$params[0].'-'.$value;
}
// If this is constant for module directories
if (eregi('^MAIN_MODULE_([A-Z_]+)_DIR_([A-Z_]+)$',$key,$reg) && $value)
{
$module=strtolower($reg[1]);
$dir_name="dir_".strtolower($reg[2]);
$this->$module->$dir_name = DOL_DATA_ROOT."/entity_".$this->entity."/".$value;
}
// If this is a module constant
if (eregi('^MAIN_MODULE_([A-Z]+)$',$key,$reg) && $value)
{
@ -211,18 +218,11 @@ class Conf
$this->adherent->dir_output=DOL_DATA_ROOT."/adherent";
$this->adherent->dir_tmp=DOL_DATA_ROOT."/adherent/temp";
// Module produit
$this->produit->dir_output=DOL_DATA_ROOT."/produit";
$this->produit->dir_temp =DOL_DATA_ROOT."/produit/temp";
$this->produit->MultiPricesEnabled=defined("PRODUIT_MULTIPRICES")?PRODUIT_MULTIPRICES:0;
// Module service
$this->service->dir_output=DOL_DATA_ROOT."/produit";
$this->service->dir_temp =DOL_DATA_ROOT."/produit/temp";
// Module droipret
$this->droitpret->cat=defined('DROITPRET_CAT')?DROITPRET_CAT:'';
$this->droitpret->cat=defined('DROITPRET_MAIL')?DROITPRET_MAIL:'';
$this->droitpret->dir_temp=DOL_DATA_ROOT."/droitpret/temp";
// Module contrat
$this->contrat->dir_output=DOL_DATA_ROOT."/contracts";
// Module prelevement
@ -280,15 +280,11 @@ class Conf
$this->ldap->dir_temp=DOL_DATA_ROOT."/ldap/temp";
// Module FCKeditor
$this->fckeditor->dir_output=DOL_DATA_ROOT."/fckeditor";
// Module ECM
$this->ecm->dir_output=DOL_DATA_ROOT."/ecm";
// Module emailing
$this->mailings->dir_temp=DOL_DATA_ROOT."/mailings/temp";
// Module oscommerce 1
$this->boutique->livre->enabled=defined("BOUTIQUE_LIVRE")?BOUTIQUE_LIVRE:0;
$this->boutique->album->enabled=defined("BOUTIQUE_ALBUM")?BOUTIQUE_ALBUM:0;
// Module Barcode
$this->barcode->dir_temp=DOL_DATA_ROOT."/barcode/temp";
/*
* Modification de quelques variable de conf en fonction des Constantes

View File

@ -101,6 +101,9 @@ class DolibarrModules
// Insere les constantes associees au module dans llx_const
if (! $err) $err+=$this->insert_menus();
// Insert module's directories into llx_const and create dir
if (! $err) $err+=$this->insert_dirs();
// Execute les requetes sql complementaires
for ($i = 0 ; $i < sizeof($array_sql) ; $i++)
@ -120,22 +123,6 @@ class DolibarrModules
}
}
// Cree les repertoires
if (is_array($this->dirs))
{
foreach ($this->dirs as $key => $dir)
{
if ($dir && ! file_exists($dir))
{
if (create_exdir($dir) < 0)
{
$this->error = $langs->trans("ErrorCanNotCreateDir",$dir);
dol_syslog("DolibarrModules::_init ".$this->error, LOG_ERR);
}
}
}
}
// Return code
if (! $err)
{
@ -180,8 +167,11 @@ class DolibarrModules
// Remove module's permissions from list of available permissions
if (! $err) $err+=$this->delete_permissions();
// Remove modules's menus
// Remove module's menus
if (! $err) $err+=$this->delete_menus();
// Remove module's directories
if (! $err) $err+=$this->delete_dirs();
// Run complementary sql requests
for ($i = 0 ; $i < sizeof($array_sql) ; $i++)
@ -963,6 +953,91 @@ class DolibarrModules
return $err;
}
/**
* \brief Insere et cree les répertoires output et temp
* \return int Nombre d'erreurs (0 si ok)
*/
function insert_dirs()
{
global $conf;
$err=0;
if (is_array($this->dirs))
{
foreach ($this->dirs as $key => $value)
{
$name = $this->const_name."_DIR_".strtoupper($this->dirs[$key][0]);
$dir = $this->dirs[$key][1];
$sql = "SELECT count(*)";
$sql.= " FROM ".MAIN_DB_PREFIX."const";
$sql.= " WHERE name ='".$name."'";
$sql.= " AND entity = ".$conf->entity;
$result=$this->db->query($sql);
if ($result)
{
$row = $this->db->fetch_row($result);
if ($row[0] == 0)
{
$sql = "INSERT INTO ".MAIN_DB_PREFIX."const (name,type,value,note,visible,entity)";
$sql.= " VALUES ('".$name."','chaine','".$dir."','Directory for module ".$this->name."','0',".$conf->entity.")";
dol_syslog("DolibarrModules::insert_dir_output sql=".$sql);
$resql=$this->db->query($sql);
if ($resql)
{
// On defini l'entite
$dir = DOL_DATA_ROOT."/entity_".$conf->entity."/".$dir;
if ($dir && ! file_exists($dir))
{
if (create_exdir($dir) < 0)
{
$this->error = $langs->trans("ErrorCanNotCreateDir",$dir);
dol_syslog("DolibarrModules::_init ".$this->error, LOG_ERR);
}
}
}
}
else
{
$err++;
}
}
}
}
return $err;
}
/**
* \brief Remove directory entries
* \return int Nombre d'erreurs (0 si ok)
*/
function delete_dirs()
{
global $conf;
$err=0;
$sql = "DELETE FROM ".MAIN_DB_PREFIX."const";
$sql.= " WHERE name like '".$this->const_name."_DIR_%'";
$sql.= " AND entity = ".$conf->entity;
dol_syslog("DolibarrModules::delete_tabs sql=".$sql);
if (! $this->db->query($sql))
{
$err++;
}
return $err;
}
}
?>

View File

@ -58,10 +58,18 @@ class modBarcode extends DolibarrModules
$this->special = 2;
$this->picto='barcode';
// Dir
// Data directories to create when module is enabled
$this->dirs = array();
$r=0;
$this->dirs[$r][0] = "output";
$this->dirs[$r][1] = "/barcode";
$r++;
$this->dirs[$r][0] = "temp";
$this->dirs[$r][1] = "/barcode/temp";
// D<>pendances
// Dependances
$this->depends = array("modProduit");
$this->requiredby = array();
@ -80,28 +88,28 @@ class modBarcode extends DolibarrModules
$this->rights[1][0] = 300; // id de la permission
$this->rights[1][1] = 'Lire les codes barres'; // libelle de la permission
$this->rights[1][2] = 'r'; // type de la permission (d<EFBFBD>pr<EFBFBD>ci<EFBFBD> <20> ce jour)
$this->rights[1][3] = 1; // La permission est-elle une permission par d<EFBFBD>faut
$this->rights[1][2] = 'r'; // type de la permission (deprecie a ce jour)
$this->rights[1][3] = 1; // La permission est-elle une permission par defaut
$this->rights[1][4] = 'lire';
$this->rights[2][0] = 301; // id de la permission
$this->rights[2][1] = 'Creer/modifier les codes barres'; // libelle de la permission
$this->rights[2][2] = 'w'; // type de la permission (d<EFBFBD>pr<EFBFBD>ci<EFBFBD> <20> ce jour)
$this->rights[2][3] = 0; // La permission est-elle une permission par d<EFBFBD>faut
$this->rights[2][2] = 'w'; // type de la permission (deprecie a ce jour)
$this->rights[2][3] = 0; // La permission est-elle une permission par defaut
$this->rights[2][4] = 'creer';
$this->rights[4][0] = 302; // id de la permission
$this->rights[4][1] = 'Supprimer les codes barres'; // libelle de la permission
$this->rights[4][2] = 'd'; // type de la permission (d<EFBFBD>pr<EFBFBD>ci<EFBFBD> <20> ce jour)
$this->rights[4][3] = 0; // La permission est-elle une permission par d<EFBFBD>faut
$this->rights[4][2] = 'd'; // type de la permission (deprecie a ce jour)
$this->rights[4][3] = 0; // La permission est-elle une permission par defaut
$this->rights[4][4] = 'supprimer';
}
/**
* \brief Fonction appel<EFBFBD>e lors de l'activation du module. Ins<EFBFBD>re en base les constantes, boites, permissions du module.
* D<EFBFBD>finit <EFBFBD>galement les r<EFBFBD>pertoires de donn<EFBFBD>es <EFBFBD> cr<EFBFBD>er pour ce module.
* \brief Fonction appelee lors de l'activation du module. Insere en base les constantes, boites, permissions du module.
* Definit egalement les repertoires de donnees a creer pour ce module.
*/
function init()
{
@ -114,7 +122,7 @@ class modBarcode extends DolibarrModules
}
/**
* \brief Fonction appel<EFBFBD>e lors de la d<EFBFBD>sactivation d'un module.
* \brief Fonction appelee lors de la desactivation d'un module.
* Supprime de la base les constantes, boites et permissions du module.
*/
function remove()

View File

@ -67,7 +67,14 @@ class modECM extends DolibarrModules
// Data directories to create when module is enabled
$this->dirs = array();
$this->dirs[0] = DOL_DATA_ROOT."/ecm";
$r=0;
$this->dirs[$r][0] = "output";
$this->dirs[$r][1] = "/ecm";
$r++;
$this->dirs[$r][0] = "temp";
$this->dirs[$r][1] = "/ecm/temp";
// Config pages. Put here list of php page names stored in admmin directory used to setup module
$this->config_page_url = array();

View File

@ -65,8 +65,16 @@ class modProduit extends DolibarrModules
$this->special = 0;
$this->picto='product';
// Dir
// Data directories to create when module is enabled
$this->dirs = array();
$r=0;
$this->dirs[$r][0] = "output";
$this->dirs[$r][1] = "/produit";
$r++;
$this->dirs[$r][0] = "temp";
$this->dirs[$r][1] = "/produit/temp";
// Dependencies
$this->depends = array();

View File

@ -63,8 +63,19 @@ class modService extends DolibarrModules
$this->const_name = 'MAIN_MODULE_'.strtoupper($this->name);
$this->special = 0;
$this->picto='service';
// Data directories to create when module is enabled
$this->dirs = array();
$r=0;
$this->dirs[$r][0] = "output";
$this->dirs[$r][1] = "/service";
$r++;
$this->dirs[$r][0] = "temp";
$this->dirs[$r][1] = "/service/temp";
// D<>pendances
// Dependances
$this->depends = array("modProduit");
$this->requiredby = array("modContrat");