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 '
';