diff --git a/htdocs/admin/modules.php b/htdocs/admin/modules.php
index 5f292511960..bd26c463a7f 100644
--- a/htdocs/admin/modules.php
+++ b/htdocs/admin/modules.php
@@ -412,8 +412,6 @@ foreach ($orders as $key => $value)
print nl2br($objMod->getDesc());
print "\n
";
print $objMod->getVersion();
-// print " | \n ";
-// print $objMod->getDbVersion();
print " | \n ";
if (! empty($conf->global->$const_name))
diff --git a/htdocs/includes/modules/DolibarrModules.class.php b/htdocs/includes/modules/DolibarrModules.class.php
index 2fb5c3bfb43..23eb8831a81 100644
--- a/htdocs/includes/modules/DolibarrModules.class.php
+++ b/htdocs/includes/modules/DolibarrModules.class.php
@@ -67,9 +67,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
- * \return int 1 if OK, 0 if KO
+ * \param options Options when enabling module
+ * \return int 1 if OK, 0 if KO
*/
- function _init($array_sql)
+ function _init($array_sql, $options='')
{
global $langs;
$err=0;
@@ -92,7 +93,7 @@ class DolibarrModules
if (! $err) $err+=$this->insert_const();
// Insere les boites dans llx_boxes_def
- if (! $err) $err+=$this->insert_boxes();
+ if (! $err && $options != 'noboxes') $err+=$this->insert_boxes();
// Insere les permissions associees au module actif dans llx_rights_def
if (! $err) $err+=$this->insert_permissions();
@@ -134,7 +135,7 @@ class DolibarrModules
}
}
- // Renvoi valeur de retour
+ // Return code
if (! $err)
{
$this->db->commit();
@@ -150,45 +151,60 @@ 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
* \return int 1 if OK, 0 if KO
*/
- function _remove($array_sql)
+ function _remove($array_sql, $options='')
{
- $err = 0;
+ global $langs;
+ $err=0;
+ $this->db->begin();
+
// Remove line in activation module
- $err+=$this->_dbunactive();
+ if (! $err) $err+=$this->_dbunactive();
// Remove activation module line
- $err+=$this->_unactive();
+ if (! $err) $err+=$this->_unactive();
- // Supprime les boites de la liste des boites disponibles
- $err+=$this->delete_style_sheet();
+ // Remove activation of module's style sheet
+ if (! $err) $err+=$this->delete_style_sheet();
- // Supprime les liens de pages en onglets issus de modules
- $err+=$this->delete_tabs();
+ // Remove activation of module's new tabs
+ if (! $err) $err+=$this->delete_tabs();
- // Supprime les boites de la liste des boites disponibles
- $err+=$this->delete_boxes();
+ // Remove list of module's available boxes
+ if (! $err && $options != 'noboxes') $err+=$this->delete_boxes();
- // Supprime les droits de la liste des droits disponibles
- $err+=$this->delete_permissions();
+ // Remove module's permissions from list of available permissions
+ if (! $err) $err+=$this->delete_permissions();
- // Supprime les menus apportes par le module
- $err+=$this->delete_menus();
+ // Remove modules's menus
+ if (! $err) $err+=$this->delete_menus();
- // Execute les requetes sql complementaires
+ // Run complementary sql requests
for ($i = 0 ; $i < sizeof($array_sql) ; $i++)
{
- if (!$this->db->query($array_sql[$i]))
- {
- $err++;
- }
+ if (! $err)
+ {
+ if (!$this->db->query($array_sql[$i]))
+ {
+ $err++;
+ }
+ }
}
- // Renvoi valeur de retour
- if ($err > 0) return 0;
- return 1;
+ // Return code
+ if (! $err)
+ {
+ $this->db->commit();
+ return 1;
+ }
+ else
+ {
+ $this->db->rollback();
+ return 0;
+ }
}
@@ -259,8 +275,9 @@ class DolibarrModules
/**
- * \brief Retourne la version en base du module.
- * \return string Version du module
+ * \brief Return version of module stored in database table.
+ * \return string Version of module
+ * \remarks This function is not used but is kept in code because it can be used later.
*/
function getDbVersion()
{
@@ -269,7 +286,8 @@ class DolibarrModules
$sql ="SELECT active_version FROM ".MAIN_DB_PREFIX."dolibarr_modules";
$sql .= " WHERE numero=".$this->numero." AND active = 1";
-
+
+ dol_syslog("DolibarrModules::getDbVersion sql=".$sql);
$resql = $this->db->query($sql);
if ($resql)
{
@@ -326,8 +344,9 @@ class DolibarrModules
/**
- * \brief Insert line in module table
- * \return int Nombre d'erreurs (0 si ok)
+ * \brief Insert line in dolibarr_modules table.
+ * \return int Nb of errors (0 if OK)
+ * \remarks Storage is made for information only, table is not required for Dolibarr usage.
*/
function _dbactive()
{
@@ -339,7 +358,7 @@ class DolibarrModules
$sql = "INSERT INTO ".MAIN_DB_PREFIX."dolibarr_modules (numero,active,active_date,active_version)";
$sql.= " VALUES (";
- $sql.= $this->numero.",1,".$this->db->idate(mktime()).",'".$this->version."')";
+ $sql.= $this->numero.",1,".$this->db->idate(gmmktime()).",'".$this->version."')";
dol_syslog("DolibarrModules::_dbactive sql=".$sql, LOG_DEBUG);
$this->db->query($sql);
@@ -348,15 +367,16 @@ class DolibarrModules
/**
- * \brief Remove line in module table
+ * \brief Remove line in dolibarr_modules table
* \return int Nb of errors (0 if OK)
+ * \remarks Storage is made for information only, table is not required for Dolibarr usage.
*/
function _dbunactive()
{
$err = 0;
$sql = "DELETE FROM ".MAIN_DB_PREFIX."dolibarr_modules WHERE numero=".$this->numero;
- dol_syslog("DolibarrModules::_dbactive sql=".$sql, LOG_DEBUG);
+ dol_syslog("DolibarrModules::_dbunactive sql=".$sql, LOG_DEBUG);
$this->db->query($sql);
return $err;
@@ -375,8 +395,8 @@ class DolibarrModules
dol_syslog("DolibarrModules::_active sql=".$sql, LOG_DEBUG);
$this->db->query($sql);
- $sql = "INSERT INTO ".MAIN_DB_PREFIX."const (name,value,visible) VALUES
- ('".$this->const_name."','1',0)";
+ $sql = "INSERT INTO ".MAIN_DB_PREFIX."const (name,value,visible) VALUES";
+ $sql.= " ('".$this->const_name."','1',0)";
dol_syslog("DolibarrModules::_active sql=".$sql, LOG_DEBUG);
if (!$this->db->query($sql))
{
@@ -493,7 +513,7 @@ class DolibarrModules
$sql.= " VALUES ('".addslashes($file)."',";
$sql.= $note?"'".addslashes($note)."'":"null";
$sql.= ")";
- //print $sql;
+ dol_syslog("DolibarrModules::insert_boxes sql=".$sql);
if (! $this->db->query($sql))
{
$err++;
@@ -876,8 +896,8 @@ class DolibarrModules
/**
- \brief Supprime les permissions
- \return int Nombre d'erreurs (0 si ok)
+ * \brief Remove menus entries
+ * \return int Nombre d'erreurs (0 si ok)
*/
function delete_menus()
{
diff --git a/htdocs/includes/modules/modAgenda.class.php b/htdocs/includes/modules/modAgenda.class.php
index e0e04e30f1b..cb676c1100b 100644
--- a/htdocs/includes/modules/modAgenda.class.php
+++ b/htdocs/includes/modules/modAgenda.class.php
@@ -159,23 +159,28 @@ class modAgenda extends DolibarrModules
/**
* \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.
+ * \param options Options when enabling module
*/
- function init()
+ function init($options='')
{
- $sql = array();
+ // Prevent pb of modules not correctly disabled
+ //$this->remove($options);
+
+ $sql = array();
- return $this->_init($sql);
+ return $this->_init($sql,$options);
}
/**
- * \brief Fonction appelee lors de la desactivation d'un module.
- * Supprime de la base les constantes, boites et permissions du module.
+ * \brief Fonction appelee lors de la desactivation d'un module.
+ * Supprime de la base les constantes, boites et permissions du module.
+ * \param options Options when disabling module
*/
- function remove()
+ function remove($options='')
{
$sql = array();
- return $this->_remove($sql);
+ return $this->_remove($sql,$options);
}
}
diff --git a/htdocs/includes/modules/modSociete.class.php b/htdocs/includes/modules/modSociete.class.php
index 6ea9899edcf..d821a7b2904 100644
--- a/htdocs/includes/modules/modSociete.class.php
+++ b/htdocs/includes/modules/modSociete.class.php
@@ -211,33 +211,33 @@ class modSociete extends DolibarrModules
/**
- * \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.
+ * \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.
+ * \param options Options when enabling module
*/
- function init()
+ function init($options='')
{
global $conf;
-
- // Permissions
- $this->remove();
-
- // Dir
$this->dirs[0] = $conf->societe->dir_output;
+
+ // Prevent pb of modules not correctly disabled
+ //$this->remove($options);
$sql = array();
- return $this->_init($sql);
+ return $this->_init($sql,$options);
}
/**
- * \brief Fonction appelee lors de la desactivation d'un module.
- * Supprime de la base les constantes, boites et permissions du module.
+ * \brief Fonction appelee lors de la desactivation d'un module.
+ * Supprime de la base les constantes, boites et permissions du module.
+ * \param options Options when disabling module
*/
- function remove()
+ function remove($options='')
{
$sql = array();
- return $this->_remove($sql);
+ return $this->_remove($sql,$options);
}
}
?>
diff --git a/htdocs/install/upgrade2.php b/htdocs/install/upgrade2.php
index ed3e8d4c5c8..51291ad4eb6 100644
--- a/htdocs/install/upgrade2.php
+++ b/htdocs/install/upgrade2.php
@@ -235,6 +235,7 @@ function migrate_paiements($db,$langs,$conf)
$sql .= " WHERE p.fk_facture > 0";
$resql = $db->query($sql);
+ dolibarr_install_syslog("upgrade2::migrate_paiements sql=".$sql);
if ($resql)
{
$i = 0;
@@ -318,6 +319,7 @@ function migrate_paiements_orphelins_1($db,$langs,$conf)
$sql.= " AND (p.fk_facture = 0 OR p.fk_facture IS NULL)";
$resql = $db->query($sql);
+ dolibarr_install_syslog("upgrade2::migrate_paiements_orphelins_1 sql=".$sql);
$row = array();
if ($resql)
{
@@ -426,6 +428,7 @@ function migrate_paiements_orphelins_2($db,$langs,$conf)
$sql.= " AND (p.fk_facture = 0 OR p.fk_facture IS NULL)";
$resql = $db->query($sql);
+ dolibarr_install_syslog("upgrade2::migrate_paiements_orphelins_2 sql=".$sql);
$row = array();
if ($resql)
{
@@ -548,6 +551,7 @@ function migrate_contracts_det($db,$langs,$conf)
$sql.= " WHERE cd.rowid IS NULL AND p.rowid IS NOT NULL";
$resql = $db->query($sql);
+ dolibarr_install_syslog("upgrade2::migrate_contracts_det sql=".$sql);
if ($resql)
{
$i = 0;
@@ -635,7 +639,7 @@ function migrate_links_transfert($db,$langs,$conf)
$sql.= " AND bu.fk_bank IS NULL";
$resql = $db->query($sql);
- dolibarr_install_syslog("migrate_links_transfert sql=".$sql);
+ dolibarr_install_syslog("upgrade2::migrate_links_transfert sql=".$sql);
if ($resql)
{
$i = 0;
@@ -706,6 +710,7 @@ function migrate_contracts_date1($db,$langs,$conf)
print ''.$langs->trans('MigrationContractsEmptyDatesUpdate')." \n";
$sql="update llx_contrat set date_contrat=tms where date_contrat is null";
+ dolibarr_install_syslog("upgrade2::migrate_contracts_date1 sql=".$sql);
$resql = $db->query($sql);
if (! $resql) dol_print_error($db);
if ($db->affected_rows($resql) > 0)
@@ -714,6 +719,7 @@ function migrate_contracts_date1($db,$langs,$conf)
print $langs->trans('MigrationContractsEmptyDatesNothingToUpdate')." \n";
$sql="update llx_contrat set datec=tms where datec is null";
+ dolibarr_install_syslog("upgrade2::migrate_contracts_date1 sql=".$sql);
$resql = $db->query($sql);
if (! $resql) dol_print_error($db);
if ($db->affected_rows($resql) > 0)
@@ -743,7 +749,8 @@ function migrate_contracts_date2($db,$langs,$conf)
$sql.= " WHERE c.rowid=cd.fk_contrat AND cd.date_ouverture IS NOT NULL";
$sql.= " GROUP BY c.rowid, c.date_contrat";
$resql = $db->query($sql);
-
+
+ dolibarr_install_syslog("upgrade2::migrate_contracts_date2 sql=".$sql);
if ($resql)
{
$i = 0;
@@ -800,6 +807,7 @@ function migrate_contracts_date3($db,$langs,$conf)
print ''.$langs->trans('MigrationContractsIncoherentCreationDateUpdate')." \n";
$sql="update llx_contrat set datec=date_contrat where datec is null or datec > date_contrat";
+ dolibarr_install_syslog("upgrade2::migrate_contracts_date3 sql=".$sql);
$resql = $db->query($sql);
if (! $resql) dol_print_error($db);
if ($db->affected_rows() > 0)
@@ -823,6 +831,7 @@ function migrate_contracts_open($db,$langs,$conf)
$sql = "SELECT c.rowid as cref FROM llx_contrat as c, llx_contratdet as cd";
$sql.= " WHERE cd.statut = 4 AND c.statut=2 AND c.rowid=cd.fk_contrat";
+ dolibarr_install_syslog("upgrade2::migrate_contracts_open sql=".$sql);
$resql = $db->query($sql);
if (! $resql) dol_print_error($db);
if ($db->affected_rows() > 0) {
@@ -882,6 +891,8 @@ function migrate_paiementfourn_facturefourn($db,$langs,$conf)
$select_sql = 'SELECT rowid, fk_facture_fourn, amount ';
$select_sql .= ' FROM '.MAIN_DB_PREFIX.'paiementfourn ';
$select_sql .= ' WHERE fk_facture_fourn IS NOT NULL';
+
+ dolibarr_install_syslog("upgrade2::migrate_paiementfourn_facturefourn sql=".$sql);
$select_resql = $db->query($select_sql);
if ($select_resql)
{
@@ -962,8 +973,6 @@ function migrate_price_facture($db,$langs,$conf)
{
$db->begin();
- dolibarr_install_syslog("upgrade2: Upgrade data for invoice");
-
print ' | ';
print ' ';
@@ -976,6 +985,8 @@ function migrate_price_facture($db,$langs,$conf)
$sql.= " WHERE fd.fk_facture = f.rowid";
$sql.= " AND (((fd.total_ttc = 0 AND fd.remise_percent != 100) or fd.total_ttc IS NULL) or f.total_ttc IS NULL)";
//print $sql;
+
+ dolibarr_install_syslog("upgrade2::migrate_price_facture sql=".$sql);
$resql=$db->query($sql);
if ($resql)
{
@@ -1072,8 +1083,6 @@ function migrate_price_propal($db,$langs,$conf)
{
$db->begin();
- dolibarr_install_syslog("upgrade2: Upgrade data for propal");
-
print ' |
';
print ' ';
@@ -1085,6 +1094,8 @@ function migrate_price_propal($db,$langs,$conf)
$sql.= " FROM ".MAIN_DB_PREFIX."propaldet as pd, ".MAIN_DB_PREFIX."propal as p";
$sql.= " WHERE pd.fk_propal = p.rowid";
$sql.= " AND ((pd.total_ttc = 0 AND pd.remise_percent != 100) or pd.total_ttc IS NULL)";
+
+ dolibarr_install_syslog("upgrade2::migrate_price_propal sql=".$sql);
$resql=$db->query($sql);
if ($resql)
{
@@ -1177,8 +1188,6 @@ function migrate_price_contrat($db,$langs,$conf)
{
$db->begin();
- dolibarr_install_syslog("upgrade2: Upgrade data for contracts");
-
print ' |
';
print ' ';
@@ -1190,6 +1199,8 @@ function migrate_price_contrat($db,$langs,$conf)
$sql.= " FROM ".MAIN_DB_PREFIX."contratdet as cd, ".MAIN_DB_PREFIX."contrat as c";
$sql.= " WHERE cd.fk_contrat = c.rowid";
$sql.= " AND ((cd.total_ttc = 0 AND cd.remise_percent != 100 AND cd.subprice > 0) or cd.total_ttc IS NULL)";
+
+ dolibarr_install_syslog("upgrade2::migrate_price_contrat sql=".$sql);
$resql=$db->query($sql);
if ($resql)
{
@@ -1282,8 +1293,6 @@ function migrate_price_commande($db,$langs,$conf)
{
$db->begin();
- dolibarr_install_syslog("upgrade2: Upgrade data for order");
-
print ' |
';
print ' ';
@@ -1295,6 +1304,8 @@ function migrate_price_commande($db,$langs,$conf)
$sql.= " FROM ".MAIN_DB_PREFIX."commandedet as cd, ".MAIN_DB_PREFIX."commande as c";
$sql.= " WHERE cd.fk_commande = c.rowid";
$sql.= " AND ((cd.total_ttc = 0 AND cd.remise_percent != 100) or cd.total_ttc IS NULL)";
+
+ dolibarr_install_syslog("upgrade2::migrate_price_commande sql=".$sql);
$resql=$db->query($sql);
if ($resql)
{
@@ -1393,8 +1404,6 @@ function migrate_price_commande_fournisseur($db,$langs,$conf)
{
$db->begin();
- dolibarr_install_syslog("upgrade2: Upgrade data for supplier order");
-
print ' |
';
print ' ';
@@ -1406,6 +1415,8 @@ function migrate_price_commande_fournisseur($db,$langs,$conf)
$sql.= " FROM ".MAIN_DB_PREFIX."commande_fournisseurdet as cd, ".MAIN_DB_PREFIX."commande_fournisseur as c";
$sql.= " WHERE cd.fk_commande = c.rowid";
$sql.= " AND ((cd.total_ttc = 0 AND cd.remise_percent != 100) or cd.total_ttc IS NULL)";
+
+ dolibarr_install_syslog("upgrade2::migrate_price_commande_fournisseur sql=".$sql);
$resql=$db->query($sql);
if ($resql)
{
@@ -1505,6 +1516,8 @@ function migrate_modeles($db,$langs,$conf)
//print ' ';
//print ''.$langs->trans('UpdateModelsTable')." \n";
+ dolibarr_install_syslog("upgrade2::migrate_modeles");
+
if ($conf->facture->enabled)
{
include_once(DOL_DOCUMENT_ROOT.'/includes/modules/facture/modules_facture.php');
@@ -1557,6 +1570,8 @@ function migrate_delete_old_files($db,$langs,$conf)
{
$result=true;
+ dolibarr_install_syslog("upgrade2::migrate_delete_old_files");
+
// List of files to delete
$filetodeletearray=array(
DOL_DOCUMENT_ROOT.'/includes/triggers/interface_demo.class.php',
@@ -1586,35 +1601,44 @@ function migrate_delete_old_files($db,$langs,$conf)
*/
function migrate_module_menus($db,$langs,$conf)
{
+ dolibarr_install_syslog("upgrade2::migrate_module_menus");
+
if (! empty($conf->global->MAIN_MODULE_AGENDA))
{
+ dolibarr_install_syslog("upgrade2::migrate_module_menus Reactivate module Agenda");
require_once(DOL_DOCUMENT_ROOT.'/includes/modules/modAgenda.class.php');
$mod=new modAgenda($db);
- $mod->init();
+ $mod->remove('noboxes');
+ $mod->init('noboxes');
}
if (! empty($conf->global->MAIN_MODULE_PHENIX))
{
+ dolibarr_install_syslog("upgrade2::migrate_module_menus Reactivate module Phenix");
require_once(DOL_DOCUMENT_ROOT.'/includes/modules/modPhenix.class.php');
$mod=new modPhenix($db);
$mod->init();
}
if (! empty($conf->global->MAIN_MODULE_WEBCALENDAR))
{
+ dolibarr_install_syslog("upgrade2::migrate_module_menus Reactivate module Webcalendar");
require_once(DOL_DOCUMENT_ROOT.'/includes/modules/modWebcalendar.class.php');
$mod=new modWebcalendar($db);
$mod->init();
}
if (! empty($conf->global->MAIN_MODULE_MANTIS))
{
+ dolibarr_install_syslog("upgrade2::migrate_module_menus Reactivate module Mantis");
require_once(DOL_DOCUMENT_ROOT.'/includes/modules/modMantis.class.php');
$mod=new modMantis($db);
$mod->init();
}
if (! empty($conf->global->MAIN_MODULE_SOCIETE))
{
+ dolibarr_install_syslog("upgrade2::migrate_module_menus Reactivate module Societe");
require_once(DOL_DOCUMENT_ROOT.'/includes/modules/modSociete.class.php');
$mod=new modSociete($db);
- $mod->init();
+ $mod->remove('noboxes');
+ $mod->init('noboxes');
}
}
@@ -1623,6 +1647,8 @@ function migrate_module_menus($db,$langs,$conf)
*/
function migrate_commande_expedition($db,$langs,$conf)
{
+ dolibarr_install_syslog("upgrade2::migrate_commande_expedition");
+
print ' |
';
print ' ';
@@ -1695,6 +1721,8 @@ function migrate_commande_expedition($db,$langs,$conf)
*/
function migrate_commande_livraison($db,$langs,$conf)
{
+ dolibarr_install_syslog("upgrade2::migrate_commande_livraison");
+
print ' |
';
print ' ';
@@ -1781,6 +1809,8 @@ function migrate_commande_livraison($db,$langs,$conf)
*/
function migrate_detail_livraison($db,$langs,$conf)
{
+ dolibarr_install_syslog("upgrade2::migrate_detail_livraison");
+
print ' |
';
print ' ';
@@ -1898,6 +1928,8 @@ function migrate_detail_livraison($db,$langs,$conf)
*/
function migrate_stocks($db,$langs,$conf)
{
+ dolibarr_install_syslog("upgrade2::migrate_stocks");
+
print ' |
';
print ' ';
|