Skip to content
Snippets Groups Projects
Commit 26d102c7 authored by Laurent Destailleur's avatar Laurent Destailleur
Browse files

New: A module can overwrite all default language files by forcing priority on...

New: A module can overwrite all default language files by forcing priority on langs directories on its own lang directory.
parent 1aa3409b
No related branches found
No related tags found
No related merge requests found
......@@ -5,12 +5,12 @@ For users:
- New: Can add information on current user on odt generation
- New: Prefix on third party is not used by default. Hidden option
SOCIETE_USEPREFIX can restore old feature.
- New: Standing orders module use bank account from banks module
- New: Ask password when creating a user from a contact
- New: Standing orders module use bank account from banks module.
- New: Ask password when creating a user from a contact.
For developers:
- New: External modules can add their own menu manager
- New: External modules can remove tabs
- New: External modules can add their own menu manager.
- New: External modules can remove tabs.
- New: A module can overwrite all default language files by forcing
priority on langs directories on its own lang directory.
......
......@@ -88,15 +88,16 @@ class modMyModule extends DolibarrModules
// Dependencies
$this->depends = array(); // List of modules id that must be enabled if this module is enabled
$this->requiredby = array(); // List of modules id to disable if this one is disabled
$this->phpmin = array(4,3); // Minimum version of PHP required by module
$this->need_dolibarr_version = array(2,5); // Minimum version of Dolibarr required by module
$this->phpmin = array(5,0); // Minimum version of PHP required by module
$this->need_dolibarr_version = array(3,0); // Minimum version of Dolibarr required by module
$this->langfiles = array("langfiles@mymodule");
// Constants
// List of particular constants to add when module is enabled (key, 'chaine', value, desc, visible, 'current' or 'allentities', deleteonunactive)
// Example: $this->const=array(0=>array('MYMODULE_MYNEWCONST1','chaine','myvalue','This is a constant to add',1),
// 1=>array('MYMODULE_MYNEWCONST2','chaine','myvalue','This is another constant to add',0) );
// 2=>array('MAIN_MODULE_MYMODULE_NEEDSMARTY','chaine',1,'Constant to say module need smarty',1)
$this->const = array(); // List of particular constants to add when module is enabled (key, 'chaine', value, desc, visible, 0 or 'allentities')
$this->const = array();
// Array to add new pages in new tabs
// Example: $this->tabs = array('objecttype:+tabname1:Title1:@mymodule:/mymodule/mynewtab1.php?id=__ID__', // To add a new tab
......
......@@ -55,8 +55,8 @@ class DolibarrModules
/**
* \brief Constructeur
* \param DB handler d'acces base
* Constructor
* @param DB Database access handler
*/
function DolibarrModules($DB)
{
......@@ -66,10 +66,10 @@ class DolibarrModules
/**
* \brief Fonction d'activation. Insere en base les constantes et boites du module
* \param array_sql Tableau de requete sql a executer a l'activation
* \param options Options when enabling module ('', 'noboxes')
* \return int 1 if OK, 0 if KO
* Fonction d'activation. Insere en base les constantes et boites du module
* @param array_sql Tableau de requete sql a executer a l'activation
* @param options Options when enabling module ('', 'noboxes')
* @return int 1 if OK, 0 if KO
*/
function _init($array_sql, $options='')
{
......@@ -96,7 +96,7 @@ class DolibarrModules
// Insert activation login method
if (! $err) $err+=$this->insert_login_method();
// Insere les constantes associees au module dans llx_const
// Insert constant defined by modules, into llx_const
if (! $err) $err+=$this->insert_const();
// Insere les boites dans llx_boxes_def
......@@ -164,10 +164,10 @@ class DolibarrModules
}
/**
* \brief Fonction de desactivation. Supprime de la base les constantes et boites du module
* \param array_sql tableau de requete sql a executer a la desactivation
* \param options Options when disabling module ('', 'noboxes')
* \return int 1 if OK, 0 if KO
* Fonction de desactivation. Supprime de la base les constantes et boites du module
* @param array_sql tableau de requete sql a executer a la desactivation
* @param options Options when disabling module ('', 'noboxes')
* @return int 1 if OK, 0 if KO
*/
function _remove($array_sql, $options='')
{
......@@ -194,6 +194,9 @@ class DolibarrModules
// Remove activation of module's authentification method (MAIN_MODULE_MYMODULE_LOGIN_METHOD in llx_const)
if (! $err) $err+=$this->delete_login_method();
// Remove constants defined by modules
if (! $err) $err+=$this->delete_const();
// Remove list of module's available boxes (entry in llx_boxes)
if (! $err && $options != 'noboxes') $err+=$this->delete_boxes();
......@@ -418,8 +421,8 @@ class DolibarrModules
/**
* \brief Insert constant to activate module
* \return int Nb of errors (0 if OK)
* Insert constant to activate module
* @return int Nb of errors (0 if OK)
*/
function _active()
{
......@@ -453,8 +456,8 @@ class DolibarrModules
/**
* \brief Remove activation line
* \return int Nb of errors (0 if OK)
* Remove activation line
* @return int Nb of errors (0 if OK)
**/
function _unactive()
{
......@@ -807,8 +810,8 @@ class DolibarrModules
}
/**
* \brief Insert constants defined into $this->const array into table llx_const
* \return int Number of errors (0 if OK)
* Insert constants defined into $this->const array into table llx_const
* @return int Number of errors (0 if OK)
*/
function insert_const()
{
......@@ -823,7 +826,7 @@ class DolibarrModules
$val = $this->const[$key][2];
$note = isset($this->const[$key][3])?$this->const[$key][3]:'';
$visible = isset($this->const[$key][4])?$this->const[$key][4]:0;
$entity = ! empty($this->const[$key][5])?0:$conf->entity;
$entity = (! empty($this->const[$key][5]) && $this->const[$key][5]!='current')?0:$conf->entity;
// Clean
if (empty($visible)) $visible='0';
......@@ -873,6 +876,39 @@ class DolibarrModules
return $err;
}
/**
* Remove constants with tags deleteonunactive
* @return int <0 if KO, 0 if OK
*/
function delete_const()
{
global $conf;
$err=0;
foreach ($this->const as $key => $value)
{
$name = $this->const[$key][0];
$deleteonunactive = (! empty($this->const[$key][6]))?1:0;
if ($deleteonunactive)
{
$sql = "DELETE FROM ".MAIN_DB_PREFIX."const";
$sql.= " WHERE ".$this->db->decrypt('name')." = '".$name."'";
$sql.= " AND entity in (0, ".$conf->entity.")";
dol_syslog("DolibarrModules::delete_const sql=".$sql);
if (! $this->db->query($sql))
{
$this->error=$this->db->lasterror();
dol_syslog("DolibarrModules::delete_const ".$this->error, LOG_ERR);
$err++;
}
}
}
return $err;
}
/**
* \brief Insert permissions definitions related to the module into llx_rights_def
* \param $reinitadminperms If 1, we also grant them to admin user
......@@ -975,8 +1011,8 @@ class DolibarrModules
/**
\brief Supprime les permissions
\return int Nombre d'erreurs (0 si ok)
* \brief Supprime les permissions
* \return int Nombre d'erreurs (0 si ok)
*/
function delete_permissions()
{
......@@ -991,7 +1027,7 @@ class DolibarrModules
if (! $this->db->query($sql))
{
$this->error=$this->db->lasterror();
dol_syslog("DolibarrModules::delete_dirs ".$this->error, LOG_ERR);
dol_syslog("DolibarrModules::delete_permissions ".$this->error, LOG_ERR);
$err++;
}
......@@ -1000,8 +1036,8 @@ class DolibarrModules
/**
* \brief Insere les menus dans llx_menu*
* \return int Nombre d'erreurs (0 si ok)
* \brief Insert menus entries into llx_menu*
* \return int Nb of errors (0 if OK)
*/
function insert_menus()
{
......@@ -1299,8 +1335,8 @@ class DolibarrModules
}
/**
* \brief Insert activation login method from modules in llx_const
* \return int Number of errors (0 if ok)
* Insert activation login method from modules in llx_const
* @return int Number of errors (0 if ok)
*/
function insert_login_method()
{
......@@ -1339,8 +1375,8 @@ class DolibarrModules
}
/**
* \brief Remove activation login method from modules in llx_const
* \return int Nombre d'erreurs (0 si ok)
* Remove activation login method from modules in llx_const
* @return int Nombre d'erreurs (0 si ok)
*/
function delete_login_method()
{
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment