From f65f1d3ba7f7e3e635893416f6a3c11712eaa9cd Mon Sep 17 00:00:00 2001 From: Regis Houssin Date: Wed, 29 Apr 2009 21:29:26 +0000 Subject: [PATCH] Add: define the constant directory if requested example : $this->dirs[$r][0] = "output"; $this->dirs[$r][1] = "/logs"; $this->dirs[$r][2] = 1; // create the constante in llx_const --- htdocs/core/conf.class.php | 2 +- .../modules/DolibarrModules.class.php | 86 +++++++++++++++++-- htdocs/includes/modules/modSociete.class.php | 1 + htdocs/includes/modules/modSyslog.class.php | 1 + 4 files changed, 81 insertions(+), 9 deletions(-) diff --git a/htdocs/core/conf.class.php b/htdocs/core/conf.class.php index e78675a907e..21c39a04d72 100644 --- a/htdocs/core/conf.class.php +++ b/htdocs/core/conf.class.php @@ -151,7 +151,7 @@ class Conf $rootfordata = DOL_DATA_ROOT; // If multicompany module is enabled, we redefine the root of data - if (! empty($this->global->MULTICOMPANY) && ! empty($this->entity)) $rootfordata.='/'.$this->entity; + if (! empty($this->global->MAIN_MODULE_MULTICOMPANY) && ! empty($this->entity)) $rootfordata.='/'.$this->entity; // Define default dir_output and dir_temp for directories of modules foreach($this->modules as $module) diff --git a/htdocs/includes/modules/DolibarrModules.class.php b/htdocs/includes/modules/DolibarrModules.class.php index 28b3d69093d..7fe537f4c54 100644 --- a/htdocs/includes/modules/DolibarrModules.class.php +++ b/htdocs/includes/modules/DolibarrModules.class.php @@ -169,6 +169,9 @@ class DolibarrModules // 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++) @@ -965,27 +968,94 @@ class DolibarrModules { foreach ($this->dirs as $key => $value) { - $name = $this->const_name."_DIR_".strtoupper($this->dirs[$key][0]); - $dir = $this->dirs[$key][1]; + $name = $this->const_name."_DIR_".strtoupper($this->dirs[$key][0]); + $dir = $this->dirs[$key][1]; + $const = $this->dirs[$key][2]; // Define directory full path - if (empty($conf->entity)) $dir = DOL_DATA_ROOT.'/'.$dir; - else $dir = DOL_DATA_ROOT."/".$conf->entity.'/'.$dir; + if (empty($conf->entity)) $fulldir = DOL_DATA_ROOT.$dir; + else $fulldir = DOL_DATA_ROOT."/".$conf->entity.$dir; // Create dir if it does not exists - if ($dir && ! file_exists($dir)) + if ($fulldir && ! file_exists($fulldir)) { - if (create_exdir($dir) < 0) + if (create_exdir($fulldir) < 0) { - $this->error = $langs->trans("ErrorCanNotCreateDir",$dir); + $this->error = $langs->trans("ErrorCanNotCreateDir",$fulldir); dol_syslog("DolibarrModules::_init ".$this->error, LOG_ERR); $err++; } } + // define the constant if requested + if (isset($const) && $const) + { + $result = $this->insert_dirs($name,$dir); + if ($result) $err++; + } } } return $err; } - + + /** + * \brief Insert directories in llx_const + * \return int Number of errors (0 if OK) + */ + function insert_dirs($name,$dir) + { + global $conf; + + $err=0; + + $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); + } + } + 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/modSociete.class.php b/htdocs/includes/modules/modSociete.class.php index fd2dc1a882f..a46bbf95ebd 100644 --- a/htdocs/includes/modules/modSociete.class.php +++ b/htdocs/includes/modules/modSociete.class.php @@ -80,6 +80,7 @@ class modSociete extends DolibarrModules $r++; $this->dirs[$r][0] = "logos"; $this->dirs[$r][1] = "/societe/logos"; + $this->dirs[$r][2] = 1; // Dependances $this->depends = array(); diff --git a/htdocs/includes/modules/modSyslog.class.php b/htdocs/includes/modules/modSyslog.class.php index 1642d2b3d47..e82539c7110 100644 --- a/htdocs/includes/modules/modSyslog.class.php +++ b/htdocs/includes/modules/modSyslog.class.php @@ -62,6 +62,7 @@ class modSyslog extends DolibarrModules $this->dirs[$r][0] = "output"; $this->dirs[$r][1] = "/logs"; + $this->dirs[$r][2] = 1; // Config pages $this->config_page_url = array("syslog.php");