diff --git a/htdocs/core/conf.class.php b/htdocs/core/conf.class.php index d9e5c66d6a1..9d3655e74ea 100644 --- a/htdocs/core/conf.class.php +++ b/htdocs/core/conf.class.php @@ -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 diff --git a/htdocs/includes/modules/DolibarrModules.class.php b/htdocs/includes/modules/DolibarrModules.class.php index ea7f6a31a4e..9e2d566662b 100644 --- a/htdocs/includes/modules/DolibarrModules.class.php +++ b/htdocs/includes/modules/DolibarrModules.class.php @@ -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; + } } ?> diff --git a/htdocs/includes/modules/modBarcode.class.php b/htdocs/includes/modules/modBarcode.class.php index 842462f5a60..af78f47b0f3 100644 --- a/htdocs/includes/modules/modBarcode.class.php +++ b/htdocs/includes/modules/modBarcode.class.php @@ -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�pr�ci� � ce jour) - $this->rights[1][3] = 1; // La permission est-elle une permission par d�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�pr�ci� � ce jour) - $this->rights[2][3] = 0; // La permission est-elle une permission par d�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�pr�ci� � ce jour) - $this->rights[4][3] = 0; // La permission est-elle une permission par d�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�e lors de l'activation du module. Ins�re en base les constantes, boites, permissions du module. - * D�finit �galement les r�pertoires de donn�es � cr�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�e lors de la d�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() diff --git a/htdocs/includes/modules/modECM.class.php b/htdocs/includes/modules/modECM.class.php index b1335b0ffcd..f1e26e25925 100644 --- a/htdocs/includes/modules/modECM.class.php +++ b/htdocs/includes/modules/modECM.class.php @@ -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(); diff --git a/htdocs/includes/modules/modProduit.class.php b/htdocs/includes/modules/modProduit.class.php index 9aba67aaf17..85dafeab3d5 100644 --- a/htdocs/includes/modules/modProduit.class.php +++ b/htdocs/includes/modules/modProduit.class.php @@ -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(); diff --git a/htdocs/includes/modules/modService.class.php b/htdocs/includes/modules/modService.class.php index 3c0c6141ff7..78d44ad9cf9 100644 --- a/htdocs/includes/modules/modService.class.php +++ b/htdocs/includes/modules/modService.class.php @@ -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");