forked from Wavyzz/dolibarr
New: Ajout du module source dans menus. Ceci permettra aux modules d'ajouter leurs propres entrees aux menus.
This commit is contained in:
@@ -3,7 +3,7 @@
|
||||
* Copyright (C) 2004 Sebastien Di Cintio <sdicintio@ressource-toi.org>
|
||||
* Copyright (C) 2004 Benoit Mortier <benoit.mortier@opensides.be>
|
||||
* Copyright (C) 2004 Eric Seigne <eric.seigne@ryxeo.com>
|
||||
* Copyright (C) 2005-2007 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
* Copyright (C) 2005-2008 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
*
|
||||
* 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
|
||||
@@ -30,11 +30,11 @@
|
||||
|
||||
/**
|
||||
\class DolibarrModules
|
||||
\brief Classe m<EFBFBD>re des classes de description et activation des modules Dolibarr
|
||||
\brief Classe mere des classes de description et activation des modules Dolibarr
|
||||
*/
|
||||
class DolibarrModules
|
||||
{
|
||||
//! Handler d'acc<63>s aux bases
|
||||
//! Database handler
|
||||
var $db;
|
||||
//! Tableau des boites
|
||||
var $boxes;
|
||||
@@ -50,7 +50,7 @@ class DolibarrModules
|
||||
|
||||
/**
|
||||
* \brief Constructeur
|
||||
* \param DB handler d'acc<EFBFBD>s base
|
||||
* \param DB handler d'acces base
|
||||
*/
|
||||
function DolibarrModules($DB)
|
||||
{
|
||||
@@ -60,8 +60,8 @@ class DolibarrModules
|
||||
|
||||
|
||||
/**
|
||||
* \brief Fonction d'activation. Ins<EFBFBD>re en base les constantes et boites du module
|
||||
* \param array_sql tableau de requete sql a ex<EFBFBD>cuter <EFBFBD> l'activation
|
||||
* \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
|
||||
* \return int 1 si ok, 0 si erreur
|
||||
*/
|
||||
function _init($array_sql)
|
||||
@@ -69,22 +69,25 @@ class DolibarrModules
|
||||
global $langs;
|
||||
$err='';
|
||||
|
||||
// Ins<EFBFBD>re une entr<EFBFBD>e dans llx_dolibarr_modules
|
||||
// Insere une entree dans llx_dolibarr_modules
|
||||
$err+=$this->_dbactive();
|
||||
|
||||
// Ins<EFBFBD>re la constante d'activation module
|
||||
// Insere la constante d'activation module
|
||||
$err+=$this->_active();
|
||||
|
||||
// Ins<EFBFBD>re les boites dans llx_boxes_def
|
||||
// Insere les boites dans llx_boxes_def
|
||||
$err+=$this->insert_boxes();
|
||||
|
||||
// Ins<EFBFBD>re les constantes associ<EFBFBD>es au module dans llx_const
|
||||
// Insere les constantes associees au module dans llx_const
|
||||
$err+=$this->insert_const();
|
||||
|
||||
// Ins<EFBFBD>re les permissions associ<EFBFBD>es au module actif dans llx_rights_def
|
||||
// Insere les permissions associees au module actif dans llx_rights_def
|
||||
$err+=$this->insert_permissions();
|
||||
|
||||
// Cr<EFBFBD><EFBFBD> les r<>pertoires
|
||||
// Insere les constantes associees au module dans llx_const
|
||||
$err+=$this->insert_menus();
|
||||
|
||||
// Cree les repertoires
|
||||
if (is_array($this->dirs))
|
||||
{
|
||||
foreach ($this->dirs as $key => $dir)
|
||||
@@ -101,7 +104,7 @@ class DolibarrModules
|
||||
}
|
||||
}
|
||||
|
||||
// Ex<EFBFBD>cute les requetes sql compl<EFBFBD>mentaires
|
||||
// Execute les requetes sql complementaires
|
||||
for ($i = 0 ; $i < sizeof($array_sql) ; $i++)
|
||||
{
|
||||
$sql=$array_sql[$i];
|
||||
@@ -113,7 +116,7 @@ class DolibarrModules
|
||||
}
|
||||
}
|
||||
|
||||
// Cr<EFBFBD><EFBFBD> les documents g<EFBFBD>n<EFBFBD>rables
|
||||
// Cree les documents generables
|
||||
if (is_array($this->docs))
|
||||
{
|
||||
foreach ($this->docs as $key => $doc)
|
||||
@@ -138,15 +141,15 @@ class DolibarrModules
|
||||
}
|
||||
|
||||
/**
|
||||
\brief Fonction de d<EFBFBD>sactivation. Supprime de la base les constantes et boites du module
|
||||
\param array_sql tableau de requete sql a ex<EFBFBD>cuter <EFBFBD> la d<EFBFBD>sactivation
|
||||
\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
|
||||
\return int 1 si ok, 0 si erreur
|
||||
*/
|
||||
function _remove($array_sql)
|
||||
{
|
||||
$err = 0;
|
||||
|
||||
// Supprime entr<EFBFBD>e des modules
|
||||
// Supprime entree des modules
|
||||
$err+=$this->_dbunactive();
|
||||
|
||||
// Supprime la constante d'activation du module
|
||||
@@ -161,7 +164,7 @@ class DolibarrModules
|
||||
// Supprime les documents generables
|
||||
$err+=$this->delete_docs();
|
||||
|
||||
// Ex<EFBFBD>cute les requetes sql compl<EFBFBD>mentaires
|
||||
// Execute les requetes sql complementaires
|
||||
for ($i = 0 ; $i < sizeof($array_sql) ; $i++)
|
||||
{
|
||||
if (!$this->db->query($array_sql[$i]))
|
||||
@@ -178,7 +181,7 @@ class DolibarrModules
|
||||
|
||||
/**
|
||||
\brief Retourne le nom traduit du module si la traduction existe dans admin.lang,
|
||||
sinon le nom d<EFBFBD>fini par d<EFBFBD>faut dans le module.
|
||||
sinon le nom defini par defaut dans le module.
|
||||
\return string Nom du module traduit
|
||||
*/
|
||||
function getName()
|
||||
@@ -193,7 +196,7 @@ class DolibarrModules
|
||||
}
|
||||
else
|
||||
{
|
||||
// Si traduction du nom du module n'existe pas, on prend d<EFBFBD>finition en dur dans module
|
||||
// Si traduction du nom du module n'existe pas, on prend definition en dur dans module
|
||||
return $this->name;
|
||||
}
|
||||
}
|
||||
@@ -201,7 +204,7 @@ class DolibarrModules
|
||||
|
||||
/**
|
||||
\brief Retourne la description traduite du module si la traduction existe dans admin.lang,
|
||||
sinon la description d<EFBFBD>finie par d<EFBFBD>faut dans le module.
|
||||
sinon la description definie par defaut dans le module.
|
||||
\return string Nom du module traduit
|
||||
*/
|
||||
function getDesc()
|
||||
@@ -216,7 +219,7 @@ class DolibarrModules
|
||||
}
|
||||
else
|
||||
{
|
||||
// Si traduction de la description du module n'existe pas, on prend d<EFBFBD>finition en dur dans module
|
||||
// Si traduction de la description du module n'existe pas, on prend definition en dur dans module
|
||||
return $this->description;
|
||||
}
|
||||
}
|
||||
@@ -224,7 +227,7 @@ class DolibarrModules
|
||||
|
||||
/**
|
||||
\brief Retourne la version du module.
|
||||
Pour les modules <EFBFBD> l'<EFBFBD>tat 'experimental', retourne la traduction de 'experimental'
|
||||
Pour les modules a l'etat 'experimental', retourne la traduction de 'experimental'
|
||||
Pour les modules 'dolibarr', retourne la version de Dolibarr
|
||||
Pour les autres modules, retourne la version du module
|
||||
\return string Version du module
|
||||
@@ -290,8 +293,8 @@ class DolibarrModules
|
||||
}
|
||||
|
||||
/**
|
||||
\brief Retourne le libell<EFBFBD> d'un lot de donn<EFBFBD>es exportable
|
||||
\return string Libell<EFBFBD> du lot de donn<EFBFBD>es
|
||||
\brief Retourne le libelle d'un lot de donnees exportable
|
||||
\return string Libelle du lot de donnees
|
||||
*/
|
||||
function getDatasetLabel($r)
|
||||
{
|
||||
@@ -300,19 +303,19 @@ class DolibarrModules
|
||||
$langstring="ExportDataset_".$this->export_code[$r];
|
||||
if ($langs->trans($langstring) == $langstring)
|
||||
{
|
||||
// Traduction non trouv<EFBFBD>e
|
||||
// Traduction non trouvee
|
||||
return $this->export_label[$r];
|
||||
}
|
||||
else
|
||||
{
|
||||
// Traduction trouv<EFBFBD>e
|
||||
// Traduction trouvee
|
||||
return $langs->trans($langstring);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
\brief Ins<EFBFBD>re ligne module
|
||||
\brief Insere ligne module
|
||||
\return int Nombre d'erreurs (0 si ok)
|
||||
*/
|
||||
function _dbactive()
|
||||
@@ -348,7 +351,7 @@ class DolibarrModules
|
||||
|
||||
|
||||
/**
|
||||
\brief Ins<EFBFBD>re constante d'activation module
|
||||
\brief Insere constante d'activation module
|
||||
\return int Nombre d'erreurs (0 si ok)
|
||||
*/
|
||||
function _active()
|
||||
@@ -385,7 +388,7 @@ class DolibarrModules
|
||||
|
||||
|
||||
/**
|
||||
\brief Ins<EFBFBD>re les boites associ<EFBFBD>es au module dans llx_boxes_def
|
||||
\brief Insere les boites associees au module dans llx_boxes_def
|
||||
\return int Nombre d'erreurs (0 si ok)
|
||||
*/
|
||||
function insert_boxes()
|
||||
@@ -441,7 +444,7 @@ class DolibarrModules
|
||||
{
|
||||
$err=0;
|
||||
|
||||
// Cr<EFBFBD><EFBFBD> les documents g<EFBFBD>n<EFBFBD>rables
|
||||
// Cree les documents generables
|
||||
if (is_array($this->docs))
|
||||
{
|
||||
foreach ($this->docs as $key => $doc)
|
||||
@@ -499,7 +502,7 @@ class DolibarrModules
|
||||
}
|
||||
|
||||
/**
|
||||
\brief Ins<EFBFBD>re les constantes associ<EFBFBD>es au module dans llx_const
|
||||
\brief Insere les constantes associees au module dans llx_const
|
||||
\return int Nombre d'erreurs (0 si ok)
|
||||
*/
|
||||
function insert_const()
|
||||
@@ -553,7 +556,7 @@ class DolibarrModules
|
||||
}
|
||||
|
||||
/**
|
||||
\brief Ins<EFBFBD>re les permissions associ<EFBFBD>es au module dans llx_rights_def
|
||||
\brief Insere les permissions associees au module dans llx_rights_def
|
||||
\return int Nombre d'erreurs (0 si ok)
|
||||
*/
|
||||
function insert_permissions()
|
||||
@@ -638,5 +641,60 @@ class DolibarrModules
|
||||
return $err;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
\brief Insere les menus dans llx_menu*
|
||||
\return int Nombre d'erreurs (0 si ok)
|
||||
*/
|
||||
function insert_menus()
|
||||
{
|
||||
require_once(DOL_DOCUMENT_ROOT."/lib/menubase.class.php");
|
||||
|
||||
$err=0;
|
||||
global $user;
|
||||
|
||||
foreach ($this->menu as $key => $value)
|
||||
{
|
||||
$menu = new Menubase($db);
|
||||
$menu->menu_handler='all';
|
||||
$menu->module=$this->name;
|
||||
$menu->fk_menu=$this->menu[$key]['fk_menu'];
|
||||
$menu->type=$this->menu[$key]['type'];
|
||||
$menu->titre=$this->menu[$key]['titre'];
|
||||
$menu->leftmenu=$this->menu[$key]['leftmenu'];
|
||||
$menu->url=$this->menu[$key]['url'];
|
||||
$menu->langs=$this->menu[$key]['langs'];
|
||||
$menu->position=$this->menu[$key]['position'];
|
||||
$menu->perms=$this->menu[$key]['perms'];
|
||||
$menu->target=$this->menu[$key]['target'];
|
||||
$menu->user=$this->menu[$key]['user'];
|
||||
$result=$menu->create($user);
|
||||
if ($result <= 0)
|
||||
{
|
||||
$err++;
|
||||
}
|
||||
}
|
||||
|
||||
return $err;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
\brief Supprime les permissions
|
||||
\return int Nombre d'erreurs (0 si ok)
|
||||
*/
|
||||
function delete_menus()
|
||||
{
|
||||
$err=0;
|
||||
|
||||
$sql = "DELETE FROM ".MAIN_DB_PREFIX."rights_def WHERE module = '".$this->rights_class."';";
|
||||
if (!$this->db->query($sql))
|
||||
{
|
||||
$err++;
|
||||
}
|
||||
|
||||
return $err;
|
||||
}
|
||||
|
||||
}
|
||||
?>
|
||||
|
||||
Reference in New Issue
Block a user