diff --git a/htdocs/includes/modules/DolibarrModules.class.php b/htdocs/includes/modules/DolibarrModules.class.php index 0ead64110a5..88eb24ee794 100644 --- a/htdocs/includes/modules/DolibarrModules.class.php +++ b/htdocs/includes/modules/DolibarrModules.class.php @@ -1,8 +1,9 @@ * Copyright (C) 2004 Sebastien Di Cintio - * Copyright (C) 2004 Benoit Mortier + * Copyright (C) 2004 Benoit Mortier * Copyright (C) 2004 Eric Seigne + * Copyright (C) 2005 Laurent Destailleur * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -23,256 +24,284 @@ * */ -/*! \file htdocs/includes/modules/DolibarrModules.class.php - \brief Fichier de description et activation des modules Dolibarr +/** \file htdocs/includes/modules/DolibarrModules.class.php + \brief Fichier de description et activation des modules Dolibarr */ -/*! \class DolibarrModules - \brief Classe mère des classes de description et activation des modules Dolibarr +/** \class DolibarrModules + \brief Classe mère des classes de description et activation des modules Dolibarr */ class DolibarrModules { - var $db; // Handler d'accès aux base - var $boxes; // Tableau des boites - var $const; // Tableau des constantes + var $db; // Handler d'accès aux base + var $boxes; // Tableau des boites + var $const; // Tableau des constantes - /*! \brief Constructeur - * \param DB handler d'accès base - */ - function DolibarrModules($DB) - { - $this->db = $DB ; - } - - - /*! \brief Fonction d'activation. Insère en base les constantes et boites du module - * \param array_sql tableau de requete sql a exécuter à l'activation - */ - function _init($array_sql) - { - // Insère les constantes - $err = 0; - $sql_del = "DELETE FROM ".MAIN_DB_PREFIX."const WHERE name = '".$this->const_name."';"; - $this->db->query($sql_del); - - $sql ="INSERT INTO ".MAIN_DB_PREFIX."const (name,value,visible) VALUES - ('".$this->const_name."','1',0);"; - if (!$this->db->query($sql)) - { - $err++; - } - - // Insère les boxes dans llx_boxes_def - foreach ($this->boxes as $key => $value) - { - $titre = $this->boxes[$key][0]; - $file = $this->boxes[$key][1]; - - $sql = "SELECT count(*) FROM ".MAIN_DB_PREFIX."boxes_def WHERE name ='".$titre."'"; - - if ( $this->db->query($sql) ) - { - $row = $this->db->fetch_row($sql); - if ($row[0] == 0) - { - $sql = "INSERT INTO ".MAIN_DB_PREFIX."boxes_def (name, file) VALUES ('".$titre."','".$file."')"; - if (! $this->db->query($sql) ) - { - $err++; - } - } - } - else - { - $err++; - } - } - /* - * Définit les constantes associées - * + /** \brief Constructeur + * \param DB handler d'accès base */ + function DolibarrModules($DB) + { + $this->db = $DB ; + } - foreach ($this->const as $key => $value) - { - $name = $this->const[$key][0]; - $type = $this->const[$key][1]; - $val = $this->const[$key][2]; - $note = $this->const[$key][3]; - $visible= $this->const[$key][4]||'0'; - $sql = "SELECT count(*) FROM ".MAIN_DB_PREFIX."const WHERE name ='".$name."'"; - - if ( $this->db->query($sql) ) - { - $row = $this->db->fetch_row($sql); - - if ($row[0] == 0) - { - // Si non trouve // '$visible' - if (strlen($note)){ - $sql = "INSERT INTO ".MAIN_DB_PREFIX."const (name,type,value,note,visible) VALUES ('$name','$type','$val','$note',0);"; - }elseif (strlen($val)) - { - $sql = "INSERT INTO ".MAIN_DB_PREFIX."const (name,type,value,visible) VALUES ('$name','$type','$val',0);"; - } - else - { - $sql = "INSERT INTO ".MAIN_DB_PREFIX."const (name,type,visible) VALUES ('$name','$type',0);"; - } - - if (! $this->db->query($sql) ) - { - $err++; - } - } - } - else - { - $err++; - } - } - /* - * Définit les permissions associées au module activé - * + /** \brief Fonction d'activation. Insère en base les constantes et boites du module + * \param array_sql tableau de requete sql a exécuter à l'activation */ - if (is_array($this->rights)) - { - foreach ($this->rights as $key => $value) - { - $r_id = $this->rights[$key][0]; - $r_desc = $this->rights[$key][1]; - $r_type = $this->rights[$key][2]; - $r_def = $this->rights[$key][3]; - $r_perms = $this->rights[$key][4]; - $r_subperms = $this->rights[$key][5]; - $r_modul = $this->rights_class; + function _init($array_sql) + { + // Insère les constantes + $err = 0; + $sql_del = "DELETE FROM ".MAIN_DB_PREFIX."const WHERE name = '".$this->const_name."';"; + $this->db->query($sql_del); - if (strlen($r_perms) ) - { - if (strlen($r_subperms) ) - { - $sql = "INSERT INTO ".MAIN_DB_PREFIX."rights_def "; - $sql .= " (id, libelle, module, type, bydefault, perms, subperms)"; - $sql .= " VALUES "; - $sql .= "(".$r_id.",'".$r_desc."','".$r_modul."','".$r_type."',".$r_def.",'".$r_perms."','".$r_subperms."');"; - } - else - { - $sql = "INSERT INTO ".MAIN_DB_PREFIX."rights_def "; - $sql .= " (id, libelle, module, type, bydefault, perms)"; - $sql .= " VALUES "; - $sql .= "(".$r_id.",'".$r_desc."','".$r_modul."','".$r_type."',".$r_def.",'".$r_perms."');"; - } - } - else - { - $sql = "INSERT INTO ".MAIN_DB_PREFIX."rights_def "; - $sql .= " (id, libelle, module, type, bydefault)"; - $sql .= " VALUES "; - $sql .= "(".$r_id.",'".$r_desc."','".$r_modul."','".$r_type."',".$r_def.");"; - } + $sql ="INSERT INTO ".MAIN_DB_PREFIX."const (name,value,visible) VALUES + ('".$this->const_name."','1',0);"; + if (!$this->db->query($sql)) + { + $err++; + } - // print "
DEBUG ERIC: $sql
\n"; - if ( $this->db->query($sql) ) - { - } + // Insère les boxes dans llx_boxes_def + foreach ($this->boxes as $key => $value) + { + $titre = $this->boxes[$key][0]; + $file = $this->boxes[$key][1]; - } - } + $sql = "SELECT count(*) FROM ".MAIN_DB_PREFIX."boxes_def WHERE name ='".$titre."'"; - /* - * Créé les répertoires - * + if ( $this->db->query($sql) ) + { + $row = $this->db->fetch_row($sql); + if ($row[0] == 0) + { + $sql = "INSERT INTO ".MAIN_DB_PREFIX."boxes_def (name, file) VALUES ('".$titre."','".$file."')"; + if (! $this->db->query($sql) ) + { + $err++; + } + } + } + else + { + $err++; + } + } + + // Définit les constantes associées + foreach ($this->const as $key => $value) + { + $name = $this->const[$key][0]; + $type = $this->const[$key][1]; + $val = $this->const[$key][2]; + $note = $this->const[$key][3]; + $visible= $this->const[$key][4]||'0'; + + $sql = "SELECT count(*) FROM ".MAIN_DB_PREFIX."const WHERE name ='".$name."'"; + + if ( $this->db->query($sql) ) + { + $row = $this->db->fetch_row($sql); + + if ($row[0] == 0) + { + // Si non trouve // '$visible' + if (strlen($note)){ + $sql = "INSERT INTO ".MAIN_DB_PREFIX."const (name,type,value,note,visible) VALUES ('$name','$type','$val','$note',0);"; + }elseif (strlen($val)) + { + $sql = "INSERT INTO ".MAIN_DB_PREFIX."const (name,type,value,visible) VALUES ('$name','$type','$val',0);"; + } + else + { + $sql = "INSERT INTO ".MAIN_DB_PREFIX."const (name,type,visible) VALUES ('$name','$type',0);"; + } + + if (! $this->db->query($sql) ) + { + $err++; + } + } + } + else + { + $err++; + } + } + + // Définit les permissions associées au module activ + if (is_array($this->rights)) + { + foreach ($this->rights as $key => $value) + { + $r_id = $this->rights[$key][0]; + $r_desc = $this->rights[$key][1]; + $r_type = $this->rights[$key][2]; + $r_def = $this->rights[$key][3]; + $r_perms = $this->rights[$key][4]; + $r_subperms = $this->rights[$key][5]; + $r_modul = $this->rights_class; + + if (strlen($r_perms) ) + { + if (strlen($r_subperms) ) + { + $sql = "INSERT INTO ".MAIN_DB_PREFIX."rights_def "; + $sql .= " (id, libelle, module, type, bydefault, perms, subperms)"; + $sql .= " VALUES "; + $sql .= "(".$r_id.",'".$r_desc."','".$r_modul."','".$r_type."',".$r_def.",'".$r_perms."','".$r_subperms."');"; + } + else + { + $sql = "INSERT INTO ".MAIN_DB_PREFIX."rights_def "; + $sql .= " (id, libelle, module, type, bydefault, perms)"; + $sql .= " VALUES "; + $sql .= "(".$r_id.",'".$r_desc."','".$r_modul."','".$r_type."',".$r_def.",'".$r_perms."');"; + } + } + else + { + $sql = "INSERT INTO ".MAIN_DB_PREFIX."rights_def "; + $sql .= " (id, libelle, module, type, bydefault)"; + $sql .= " VALUES "; + $sql .= "(".$r_id.",'".$r_desc."','".$r_modul."','".$r_type."',".$r_def.");"; + } + + if ( $this->db->query($sql) ) + { + } + + } + } + + // Créé les répertoires + if (is_array($this->dirs)) + { + foreach ($this->dirs as $key => $value) + { + $dir = $value; + if ($dir && ! file_exists($dir)) + { + umask(0); + if (! @mkdir($dir, 0755)) + { + $this->error = "Erreur: Le répertoire '$dir' n'existe pas et Dolibarr n'a pu le créer."; + dolibarr_syslog("Erreur: impossible de créer $dir"); + + } + } + } + } + + // Exécute les requets sql complémentaires + for ($i = 0 ; $i < sizeof($array_sql) ; $i++) + { + if (! $this->db->query($array_sql[$i])) + { + $err++; + } + } + + if ($err > 0) + { + return 0; + } + else + { + return 1; + } + } + + + /** \brief Fonction de désactivation. Supprime de la base les constantes et boites du module + * \param array_sql tableau de requete sql a exécuter à la désactivation + * \reutnr int 0 si erreur, 1 si ok */ - if (is_array($this->dirs)) - { - foreach ($this->dirs as $key => $value) - { - $dir = $value; - if ($dir && ! file_exists($dir)) - { - umask(0); - if (! @mkdir($dir, 0755)) - { - $this->error = "Erreur: Le répertoire '$dir' n'existe pas et Dolibarr n'a pu le créer."; - dolibarr_syslog("Erreur: impossible de créer $dir"); + function _remove($array_sql) + { + $err = 0; - } - } - } - } - /* - * + $sql = "DELETE FROM ".MAIN_DB_PREFIX."const WHERE name = '".$this->const_name."'"; + + if (!$this->db->query($sql)) + { + $err++; + } + + for ($i = 0 ; $i < sizeof($array_sql) ; $i++) + { + + if (!$this->db->query($array_sql[$i])) + { + $err++; + } + } + + // Supprime les boites + foreach ($this->boxes as $key => $value) + { + $titre = $this->boxes[$key][0]; + $file = $this->boxes[$key][1]; + + $sql = "DELETE FROM ".MAIN_DB_PREFIX."boxes_def WHERE file = '".$file."'"; + if (! $this->db->query($sql) ) + { + $err++; + } + } + + if ($err > 0) + { + return 0; + } + else + { + return 1; + } + } + + + /** \brief Retourne le nom traduit du module si la traduction existe dans admin.lang, + * sinon le nom défini par défaut dans le module. + * \return string Nom du module traduit */ - - for ($i = 0 ; $i < sizeof($array_sql) ; $i++) - { - if (! $this->db->query($array_sql[$i])) - { - $err++; - } - } - - if ($err > 0) - { - return 0; - } - else - { - return 1; - } - } + function getName() + { + global $langs; + if ($langs->trans("Module".$this->numero."Name") != ("Module".$this->numero."Name")) + { + // Si traduction du nom du module existe + return $langs->trans("Module".$this->numero."Name"); + } + else + { + // Si traduction du nom du module n'existe pas, on prend définition en dur dans module + return $this->name; + } + } - /*! \brief Fonction de désactivation. Supprime de la base les constantes et boites du module - * \param array_sql tableau de requete sql a exécuter à la désactivation - */ - function _remove($array_sql) - { - $err = 0; - - $sql = "DELETE FROM ".MAIN_DB_PREFIX."const WHERE name = '".$this->const_name."'"; - - if (!$this->db->query($sql)) - { - $err++; - } - - for ($i = 0 ; $i < sizeof($array_sql) ; $i++) - { - - if (!$this->db->query($array_sql[$i])) - { - $err++; - } - } - - /* - * Boites + /** \brief Retourne la description traduite du module si la traduction existe dans admin.lang, + * sinon la description définie par défaut dans le module. + * \return string Nom du module traduit */ - foreach ($this->boxes as $key => $value) - { - $titre = $this->boxes[$key][0]; - $file = $this->boxes[$key][1]; - - $sql = "DELETE FROM ".MAIN_DB_PREFIX."boxes_def WHERE file = '".$file."'"; - if (! $this->db->query($sql) ) - { - $err++; - } - } - - if ($err > 0) - { - return 0; - } - else - { - return 1; - } - } + function getDesc() + { + global $langs; + if ($langs->trans("Module".$this->numero."Desc") != ("Module".$this->numero."Desc")) + { + // Si traduction de la description du module existe + return $langs->trans("Module".$this->numero."Desc"); + } + else + { + // Si traduction de la description du module n'existe pas, on prend définition en dur dans module + return $this->description; + } + } } ?>