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

avec un répertoire 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; $this->tabs_modules[$params[0]][]=$value;
//print 'xxx'.$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 this is a module constant
if (eregi('^MAIN_MODULE_([A-Z]+)$',$key,$reg) && $value) 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_output=DOL_DATA_ROOT."/adherent";
$this->adherent->dir_tmp=DOL_DATA_ROOT."/adherent/temp"; $this->adherent->dir_tmp=DOL_DATA_ROOT."/adherent/temp";
// Module produit // 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; $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 // Module droipret
$this->droitpret->cat=defined('DROITPRET_CAT')?DROITPRET_CAT:''; $this->droitpret->cat=defined('DROITPRET_CAT')?DROITPRET_CAT:'';
$this->droitpret->cat=defined('DROITPRET_MAIL')?DROITPRET_MAIL:''; $this->droitpret->cat=defined('DROITPRET_MAIL')?DROITPRET_MAIL:'';
$this->droitpret->dir_temp=DOL_DATA_ROOT."/droitpret/temp"; $this->droitpret->dir_temp=DOL_DATA_ROOT."/droitpret/temp";
// Module contrat // Module contrat
$this->contrat->dir_output=DOL_DATA_ROOT."/contracts"; $this->contrat->dir_output=DOL_DATA_ROOT."/contracts";
// Module prelevement // Module prelevement
@ -280,15 +280,11 @@ class Conf
$this->ldap->dir_temp=DOL_DATA_ROOT."/ldap/temp"; $this->ldap->dir_temp=DOL_DATA_ROOT."/ldap/temp";
// Module FCKeditor // Module FCKeditor
$this->fckeditor->dir_output=DOL_DATA_ROOT."/fckeditor"; $this->fckeditor->dir_output=DOL_DATA_ROOT."/fckeditor";
// Module ECM
$this->ecm->dir_output=DOL_DATA_ROOT."/ecm";
// Module emailing // Module emailing
$this->mailings->dir_temp=DOL_DATA_ROOT."/mailings/temp"; $this->mailings->dir_temp=DOL_DATA_ROOT."/mailings/temp";
// Module oscommerce 1 // Module oscommerce 1
$this->boutique->livre->enabled=defined("BOUTIQUE_LIVRE")?BOUTIQUE_LIVRE:0; $this->boutique->livre->enabled=defined("BOUTIQUE_LIVRE")?BOUTIQUE_LIVRE:0;
$this->boutique->album->enabled=defined("BOUTIQUE_ALBUM")?BOUTIQUE_ALBUM: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 * Modification de quelques variable de conf en fonction des Constantes

View File

@ -102,6 +102,9 @@ class DolibarrModules
// Insere les constantes associees au module dans llx_const // Insere les constantes associees au module dans llx_const
if (! $err) $err+=$this->insert_menus(); 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 // Execute les requetes sql complementaires
for ($i = 0 ; $i < sizeof($array_sql) ; $i++) 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 // Return code
if (! $err) if (! $err)
{ {
@ -180,9 +167,12 @@ class DolibarrModules
// Remove module's permissions from list of available permissions // Remove module's permissions from list of available permissions
if (! $err) $err+=$this->delete_permissions(); if (! $err) $err+=$this->delete_permissions();
// Remove modules's menus // Remove module's menus
if (! $err) $err+=$this->delete_menus(); if (! $err) $err+=$this->delete_menus();
// Remove module's directories
if (! $err) $err+=$this->delete_dirs();
// Run complementary sql requests // Run complementary sql requests
for ($i = 0 ; $i < sizeof($array_sql) ; $i++) for ($i = 0 ; $i < sizeof($array_sql) ; $i++)
{ {
@ -964,5 +954,90 @@ class DolibarrModules
return $err; 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->special = 2;
$this->picto='barcode'; $this->picto='barcode';
// Dir // Data directories to create when module is enabled
$this->dirs = array(); $this->dirs = array();
$r=0;
// D<>pendances $this->dirs[$r][0] = "output";
$this->dirs[$r][1] = "/barcode";
$r++;
$this->dirs[$r][0] = "temp";
$this->dirs[$r][1] = "/barcode/temp";
// Dependances
$this->depends = array("modProduit"); $this->depends = array("modProduit");
$this->requiredby = array(); $this->requiredby = array();
@ -80,28 +88,28 @@ class modBarcode extends DolibarrModules
$this->rights[1][0] = 300; // id de la permission $this->rights[1][0] = 300; // id de la permission
$this->rights[1][1] = 'Lire les codes barres'; // libelle 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][2] = 'r'; // type de la permission (deprecie a ce jour)
$this->rights[1][3] = 1; // La permission est-elle une permission par d<EFBFBD>faut $this->rights[1][3] = 1; // La permission est-elle une permission par defaut
$this->rights[1][4] = 'lire'; $this->rights[1][4] = 'lire';
$this->rights[2][0] = 301; // id de la permission $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][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][2] = 'w'; // type de la permission (deprecie a ce jour)
$this->rights[2][3] = 0; // La permission est-elle une permission par d<EFBFBD>faut $this->rights[2][3] = 0; // La permission est-elle une permission par defaut
$this->rights[2][4] = 'creer'; $this->rights[2][4] = 'creer';
$this->rights[4][0] = 302; // id de la permission $this->rights[4][0] = 302; // id de la permission
$this->rights[4][1] = 'Supprimer les codes barres'; // libelle 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][2] = 'd'; // type de la permission (deprecie a ce jour)
$this->rights[4][3] = 0; // La permission est-elle une permission par d<EFBFBD>faut $this->rights[4][3] = 0; // La permission est-elle une permission par defaut
$this->rights[4][4] = 'supprimer'; $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. * \brief Fonction appelee lors de l'activation du module. Insere 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. * Definit egalement les repertoires de donnees a creer pour ce module.
*/ */
function init() 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. * Supprime de la base les constantes, boites et permissions du module.
*/ */
function remove() function remove()

View File

@ -67,7 +67,14 @@ class modECM extends DolibarrModules
// Data directories to create when module is enabled // Data directories to create when module is enabled
$this->dirs = array(); $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 // Config pages. Put here list of php page names stored in admmin directory used to setup module
$this->config_page_url = array(); $this->config_page_url = array();

View File

@ -65,8 +65,16 @@ class modProduit extends DolibarrModules
$this->special = 0; $this->special = 0;
$this->picto='product'; $this->picto='product';
// Dir // Data directories to create when module is enabled
$this->dirs = array(); $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 // Dependencies
$this->depends = array(); $this->depends = array();

View File

@ -64,7 +64,18 @@ class modService extends DolibarrModules
$this->special = 0; $this->special = 0;
$this->picto='service'; $this->picto='service';
// D<>pendances // 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";
// Dependances
$this->depends = array("modProduit"); $this->depends = array("modProduit");
$this->requiredby = array("modContrat"); $this->requiredby = array("modContrat");