diff --git a/htdocs/includes/modules/DolibarrModules.class.php b/htdocs/includes/modules/DolibarrModules.class.php
index 5b6510b240f..7ac3beb5b6a 100644
--- a/htdocs/includes/modules/DolibarrModules.class.php
+++ b/htdocs/includes/modules/DolibarrModules.class.php
@@ -68,7 +68,7 @@ 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
+ * \param options Options when enabling module ('', 'noboxes')
* \return int 1 if OK, 0 if KO
*/
function _init($array_sql, $options='')
@@ -163,7 +163,7 @@ 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
+ * \param options Options when disabling module ('', 'noboxes')
* \return int 1 if OK, 0 if KO
*/
function _remove($array_sql, $options='')
@@ -173,28 +173,28 @@ class DolibarrModules
$this->db->begin();
- // Remove line in activation module
+ // Remove line in activation module (entry in table llx_dolibarr_modules)
if (! $err) $err+=$this->_dbunactive();
- // Remove activation module line
+ // Remove activation module line (constant MAIN_MODULE_MYMODULE in llx_const)
if (! $err) $err+=$this->_unactive();
- // Remove activation of module's style sheet
+ // Remove activation of module's style sheet (constant MAIN_MODULE_MYMODULE_CSS in llx_const)
if (! $err) $err+=$this->delete_style_sheet();
- // Remove activation of module's new tabs
+ // Remove activation of module's new tabs (MAIN_MODULE_MYMODULE_TABS_XXX in llx_const)
if (! $err) $err+=$this->delete_tabs();
- // Remove activation of module's triggers
+ // Remove activation of module's triggers (MAIN_MODULE_MYMODULE_TRIGGERS in llx_const)
if (! $err) $err+=$this->delete_triggers();
- // Remove list of module's available boxes
+ // Remove list of module's available boxes (entry in llx_boxes)
if (! $err && $options != 'noboxes') $err+=$this->delete_boxes();
- // Remove module's permissions from list of available permissions
+ // Remove module's permissions from list of available permissions (entries in llx_rights_def)
if (! $err) $err+=$this->delete_permissions();
- // Remove module's menus
+ // Remove module's menus (entries in llx_menu)
if (! $err) $err+=$this->delete_menus();
// Remove module's directories
@@ -859,6 +859,7 @@ class DolibarrModules
$sql_del.= " WHERE ".$this->db->decrypt('name')." = '".$this->const_name."'";
$sql_del.= " AND entity IN (0,".$conf->entity.")";
+ dol_syslog("DolibarrModules::insert_permissions sql=".$sql_del);
$resql=$this->db->query($sql_del);
if ($resql)
{
@@ -1201,7 +1202,7 @@ class DolibarrModules
/**
* \brief Insert activation triggers from modules in llx_const
- * \return int Number of errors (0 if ok)
+ * \return int Number of errors (0 if ok)
*/
function insert_triggers()
{
@@ -1230,6 +1231,11 @@ class DolibarrModules
dol_syslog("DolibarrModules::insert_triggers sql=".$sql);
$resql=$this->db->query($sql);
+ if (! $resql)
+ {
+ $this->error=$this->db->lasterror();
+ dol_syslog("DolibarrModules::insert_triggers ".$this->error);
+ }
}
return $err;
}
diff --git a/htdocs/includes/modules/modWebcalendar.class.php b/htdocs/includes/modules/modWebcalendar.class.php
index bd456972170..c4414aae653 100644
--- a/htdocs/includes/modules/modWebcalendar.class.php
+++ b/htdocs/includes/modules/modWebcalendar.class.php
@@ -34,7 +34,7 @@
include_once(DOL_DOCUMENT_ROOT ."/includes/modules/DolibarrModules.class.php");
-/**
+/**
* \class modWebcalendar
* \brief Description and activation class for module Webcalendar
*/
@@ -69,7 +69,7 @@ class modWebcalendar extends DolibarrModules
$this->special = 1;
// Name of png file (without png) used for this module
$this->picto='calendar';
-
+
// Defined if the directory /mymodule/inc/triggers/ contains triggers or not
$this->triggers = 1;
@@ -127,11 +127,11 @@ class modWebcalendar extends DolibarrModules
* The init function add previous constants, boxes and permissions into Dolibarr database.
* It also creates data directories.
*/
- function init()
+ function init($options='')
{
$sql = array();
- return $this->_init($sql);
+ return $this->_init($sql,$options);
}
/**
@@ -139,11 +139,11 @@ class modWebcalendar extends DolibarrModules
* Remove from database constants, boxes and permissions from Dolibarr database.
* Data directories are not deleted.
*/
- 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 0c5ce1dbd81..f87369c3354 100644
--- a/htdocs/install/upgrade2.php
+++ b/htdocs/install/upgrade2.php
@@ -1713,158 +1713,6 @@ function migrate_modeles($db,$langs,$conf)
//print $langs->trans("AlreadyDone");
}
-/*
- * Supprime fichiers obsoletes
- */
-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',
- DOL_DOCUMENT_ROOT.'/includes/menus/barre_left/default.php',
- DOL_DOCUMENT_ROOT.'/includes/menus/barre_top/default.php',
- DOL_DOCUMENT_ROOT.'/includes/modules/modComptabiliteExpert.class.php',
- DOL_DOCUMENT_ROOT.'/includes/triggers/interface_modPhenix_Phenixsynchro.class.php',
- DOL_DOCUMENT_ROOT.'/includes/triggers/interface_modWebcalendar_webcalsynchro.class.php',
- DOL_DOCUMENT_ROOT.'/includes/triggers/interface_modCommande_Ecotax.class.php',
- );
-
- foreach ($filetodeletearray as $filetodelete)
- {
- //print ''.$filetodelete."
\n";
- if (file_exists($filetodelete))
- {
- $result=dol_delete_file($filetodelete);
- }
- if (! $result)
- {
- $langs->load("errors");
- print '
'.$langs->trans("Error").': '.$langs->trans("ErrorFailToDeleteFile",$filetodelete);
- print ' '.$langs->trans("RemoveItManuallyAndPressF5ToContinue").'
';
- }
- }
- return $result;
-}
-
-/*
- * Remove deprecated directories
- */
-function migrate_delete_old_dir($db,$langs,$conf)
-{
- $result=true;
-
- dolibarr_install_syslog("upgrade2::migrate_delete_old_dir");
-
- // List of files to delete
- $filetodeletearray=array(
- DOL_DOCUMENT_ROOT.'/includes/modules/facture/terre',
- DOL_DOCUMENT_ROOT.'/includes/modules/facture/mercure'
- );
-
- foreach ($filetodeletearray as $filetodelete)
- {
- //print ''.$filetodelete."
\n";
- if (file_exists($filetodelete))
- {
- $result=dol_delete_dir_recursive($filetodelete);
- }
- if (! $result)
- {
- $langs->load("errors");
- print ''.$langs->trans("Error").': '.$langs->trans("ErrorFailToDeleteDir",$filetodelete);
- print ' '.$langs->trans("RemoveItManuallyAndPressF5ToContinue").'
';
- }
- }
- return $result;
-}
-
-
-/*
- * Disable/Reenable features modules.
- * We must do this when internal menu of module or permissions has changed
- * or when triggers have moved.
- */
-function migrate_reload_modules($db,$langs,$conf)
-{
- dolibarr_install_syslog("upgrade2::migrate_reload_modules");
-
- if (! empty($conf->global->MAIN_MODULE_AGENDA))
- {
- dolibarr_install_syslog("upgrade2::migrate_reload_modules Reactivate module Agenda");
- require_once(DOL_DOCUMENT_ROOT.'/includes/modules/modAgenda.class.php');
- $mod=new modAgenda($db);
- $mod->remove('noboxes');
- $mod->init('noboxes');
- }
- if (! empty($conf->global->MAIN_MODULE_PHENIX))
- {
- dolibarr_install_syslog("upgrade2::migrate_reload_modules 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_reload_modules 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_reload_modules 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_reload_modules Reactivate module Societe");
- require_once(DOL_DOCUMENT_ROOT.'/includes/modules/modSociete.class.php');
- $mod=new modSociete($db);
- $mod->remove('noboxes');
- $mod->init('noboxes');
- }
- if (! empty($conf->global->MAIN_MODULE_PRODUIT)) // Permission has changed into 2.7
- {
- dolibarr_install_syslog("upgrade2::migrate_reload_modules Reactivate module Produit");
- require_once(DOL_DOCUMENT_ROOT.'/includes/modules/modProduct.class.php');
- $mod=new modProduct($db);
- $mod->init();
- }
- if (! empty($conf->global->MAIN_MODULE_SERVICE)) // Permission has changed into 2.7
- {
- dolibarr_install_syslog("upgrade2::migrate_reload_modules Reactivate module Service");
- require_once(DOL_DOCUMENT_ROOT.'/includes/modules/modService.class.php');
- $mod=new modService($db);
- $mod->init();
- }
- if (! empty($conf->global->MAIN_MODULE_COMMANDE)) // Permission has changed into 2.9
- {
- dolibarr_install_syslog("upgrade2::migrate_reload_modules Reactivate module Commande");
- require_once(DOL_DOCUMENT_ROOT.'/includes/modules/modCommande.class.php');
- $mod=new modCommande($db);
- $mod->init();
- }
- if (! empty($conf->global->MAIN_MODULE_FACTURE)) // Permission has changed into 2.9
- {
- dolibarr_install_syslog("upgrade2::migrate_reload_modules Reactivate module Facture");
- require_once(DOL_DOCUMENT_ROOT.'/includes/modules/modFacture.class.php');
- $mod=new modFacture($db);
- $mod->init();
- }
- if (! empty($conf->global->MAIN_MODULE_FOURNISSEUR)) // Permission has changed into 2.9
- {
- dolibarr_install_syslog("upgrade2::migrate_reload_modules Reactivate module Fournisseur");
- require_once(DOL_DOCUMENT_ROOT.'/includes/modules/modFournisseur.class.php');
- $mod=new modFournisseur($db);
- $mod->init();
- }
-}
/*
* Correspondance des expeditions et des commandes clients dans la table llx_co_exp
@@ -3200,6 +3048,168 @@ function migrate_directories($db,$langs,$conf,$oldname,$newname)
}
+/*
+ * Supprime fichiers obsoletes
+ */
+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',
+ DOL_DOCUMENT_ROOT.'/includes/menus/barre_left/default.php',
+ DOL_DOCUMENT_ROOT.'/includes/menus/barre_top/default.php',
+ DOL_DOCUMENT_ROOT.'/includes/modules/modComptabiliteExpert.class.php',
+ DOL_DOCUMENT_ROOT.'/includes/triggers/interface_modPhenix_Phenixsynchro.class.php',
+ DOL_DOCUMENT_ROOT.'/includes/triggers/interface_modWebcalendar_webcalsynchro.class.php',
+ DOL_DOCUMENT_ROOT.'/includes/triggers/interface_modCommande_Ecotax.class.php',
+ );
+
+ foreach ($filetodeletearray as $filetodelete)
+ {
+ //print ''.$filetodelete."
\n";
+ if (file_exists($filetodelete))
+ {
+ $result=dol_delete_file($filetodelete);
+ }
+ if (! $result)
+ {
+ $langs->load("errors");
+ print ''.$langs->trans("Error").': '.$langs->trans("ErrorFailToDeleteFile",$filetodelete);
+ print ' '.$langs->trans("RemoveItManuallyAndPressF5ToContinue").'
';
+ }
+ }
+ return $result;
+}
+
+/*
+ * Remove deprecated directories
+ */
+function migrate_delete_old_dir($db,$langs,$conf)
+{
+ $result=true;
+
+ dolibarr_install_syslog("upgrade2::migrate_delete_old_dir");
+
+ // List of files to delete
+ $filetodeletearray=array(
+ DOL_DOCUMENT_ROOT.'/includes/modules/facture/terre',
+ DOL_DOCUMENT_ROOT.'/includes/modules/facture/mercure'
+ );
+
+ foreach ($filetodeletearray as $filetodelete)
+ {
+ //print ''.$filetodelete."
\n";
+ if (file_exists($filetodelete))
+ {
+ $result=dol_delete_dir_recursive($filetodelete);
+ }
+ if (! $result)
+ {
+ $langs->load("errors");
+ print ''.$langs->trans("Error").': '.$langs->trans("ErrorFailToDeleteDir",$filetodelete);
+ print ' '.$langs->trans("RemoveItManuallyAndPressF5ToContinue").'
';
+ }
+ }
+ return $result;
+}
+
+
+/*
+ * Disable/Reenable features modules.
+ * We must do this when internal menu of module or permissions has changed
+ * or when triggers have moved.
+ */
+function migrate_reload_modules($db,$langs,$conf)
+{
+ dolibarr_install_syslog("upgrade2::migrate_reload_modules");
+
+ if (! empty($conf->global->MAIN_MODULE_AGENDA))
+ {
+ dolibarr_install_syslog("upgrade2::migrate_reload_modules Reactivate module Agenda");
+ require_once(DOL_DOCUMENT_ROOT.'/includes/modules/modAgenda.class.php');
+ $mod=new modAgenda($db);
+ $mod->remove('noboxes');
+ $mod->init('noboxes');
+ }
+ if (! empty($conf->global->MAIN_MODULE_PHENIX))
+ {
+ dolibarr_install_syslog("upgrade2::migrate_reload_modules Reactivate module Phenix");
+ require_once(DOL_DOCUMENT_ROOT.'/includes/modules/modPhenix.class.php');
+ $mod=new modPhenix($db);
+ $mod->remove('noboxes');
+ $mod->init();
+ }
+ if (! empty($conf->global->MAIN_MODULE_WEBCALENDAR))
+ {
+ dolibarr_install_syslog("upgrade2::migrate_reload_modules Reactivate module Webcalendar");
+ require_once(DOL_DOCUMENT_ROOT.'/includes/modules/modWebcalendar.class.php');
+ $mod=new modWebcalendar($db);
+ $mod->remove('noboxes');
+ $mod->init();
+ }
+ if (! empty($conf->global->MAIN_MODULE_MANTIS))
+ {
+ dolibarr_install_syslog("upgrade2::migrate_reload_modules Reactivate module Mantis");
+ require_once(DOL_DOCUMENT_ROOT.'/includes/modules/modMantis.class.php');
+ $mod=new modMantis($db);
+ $mod->remove('noboxes');
+ $mod->init();
+ }
+ if (! empty($conf->global->MAIN_MODULE_SOCIETE))
+ {
+ dolibarr_install_syslog("upgrade2::migrate_reload_modules Reactivate module Societe");
+ require_once(DOL_DOCUMENT_ROOT.'/includes/modules/modSociete.class.php');
+ $mod=new modSociete($db);
+ $mod->remove('noboxes');
+ $mod->init('noboxes');
+ }
+ if (! empty($conf->global->MAIN_MODULE_PRODUIT)) // Permission has changed into 2.7
+ {
+ dolibarr_install_syslog("upgrade2::migrate_reload_modules Reactivate module Produit");
+ require_once(DOL_DOCUMENT_ROOT.'/includes/modules/modProduct.class.php');
+ $mod=new modProduct($db);
+ //$mod->remove('noboxes');
+ $mod->init();
+ }
+ if (! empty($conf->global->MAIN_MODULE_SERVICE)) // Permission has changed into 2.7
+ {
+ dolibarr_install_syslog("upgrade2::migrate_reload_modules Reactivate module Service");
+ require_once(DOL_DOCUMENT_ROOT.'/includes/modules/modService.class.php');
+ $mod=new modService($db);
+ //$mod->remove('noboxes');
+ $mod->init();
+ }
+ if (! empty($conf->global->MAIN_MODULE_COMMANDE)) // Permission has changed into 2.9
+ {
+ dolibarr_install_syslog("upgrade2::migrate_reload_modules Reactivate module Commande");
+ require_once(DOL_DOCUMENT_ROOT.'/includes/modules/modCommande.class.php');
+ $mod=new modCommande($db);
+ //$mod->remove('noboxes');
+ $mod->init();
+ }
+ if (! empty($conf->global->MAIN_MODULE_FACTURE)) // Permission has changed into 2.9
+ {
+ dolibarr_install_syslog("upgrade2::migrate_reload_modules Reactivate module Facture");
+ require_once(DOL_DOCUMENT_ROOT.'/includes/modules/modFacture.class.php');
+ $mod=new modFacture($db);
+ //$mod->remove('noboxes');
+ $mod->init();
+ }
+ if (! empty($conf->global->MAIN_MODULE_FOURNISSEUR)) // Permission has changed into 2.9
+ {
+ dolibarr_install_syslog("upgrade2::migrate_reload_modules Reactivate module Fournisseur");
+ require_once(DOL_DOCUMENT_ROOT.'/includes/modules/modFournisseur.class.php');
+ $mod=new modFournisseur($db);
+ //$mod->remove('noboxes');
+ $mod->init();
+ }
+}
+
+
/**
* Reload menu if dynamic menus
@@ -3209,29 +3219,29 @@ function migrate_directories($db,$langs,$conf,$oldname,$newname)
*/
function migrate_reload_menu($db,$langs,$conf)
{
- global $conf;
- dolibarr_install_syslog("upgrade2::migrate_reload_menu");
+ global $conf;
+ dolibarr_install_syslog("upgrade2::migrate_reload_menu");
- // Define list of menu handlers to initialize
- $listofmenuhandler=array('auguria'); // We set here only dinamic menu handlers
- foreach ($listofmenuhandler as $key)
- {
+ // Define list of menu handlers to initialize
+ $listofmenuhandler=array('auguria'); // We set here only dinamic menu handlers
+ foreach ($listofmenuhandler as $key)
+ {
print '';
- //print "x".$key;
+ //print "x".$key;
print ' ';
print ''.$langs->trans('Upgrade').': '.$langs->trans('MenuHandler')." ".$key." \n";
- // Load sql ini_menu_handler.sql file
- $dir = DOL_DOCUMENT_ROOT."/includes/menus/";
- $file='init_menu_'.$key.'.sql';
- if (file_exists($dir.$file))
- {
- $result=run_sql($dir.$file,1,'',1);
- }
+ // Load sql ini_menu_handler.sql file
+ $dir = DOL_DOCUMENT_ROOT."/includes/menus/";
+ $file='init_menu_'.$key.'.sql';
+ if (file_exists($dir.$file))
+ {
+ $result=run_sql($dir.$file,1,'',1);
+ }
- print ' |
';
- }
+ print '';
+ }
}
diff --git a/htdocs/lib/admin.lib.php b/htdocs/lib/admin.lib.php
index 1254f2f2f06..2b74e2f6b76 100644
--- a/htdocs/lib/admin.lib.php
+++ b/htdocs/lib/admin.lib.php
@@ -169,6 +169,7 @@ function run_sql($sqlfile,$silent=1,$entity='',$usesavepoint=1)
$table=$reg[1];
if (! isset($listofmaxrowid[$table]))
{
+ //var_dump($db);
$sqlgetrowid='SELECT MAX(rowid) as max from '.$table;
$resql=$db->query($sqlgetrowid);
if ($resql)
@@ -179,6 +180,7 @@ function run_sql($sqlfile,$silent=1,$entity='',$usesavepoint=1)
}
else
{
+ dol_syslog('Admin.lib::run_sql Failed to get max rowid for '.$table.' '.$db->lasterror().' sql='.$sqlgetrowid, LOG_ERR);
if (! $silent) print '| ';
if (! $silent) print ' '.$langs->trans("Failed to get max rowid for ".$table)." | ";
if (! $silent) print '
';
diff --git a/htdocs/lib/databases/pgsql.lib.php b/htdocs/lib/databases/pgsql.lib.php
index 13d8a903dfe..3f9c28c2572 100644
--- a/htdocs/lib/databases/pgsql.lib.php
+++ b/htdocs/lib/databases/pgsql.lib.php
@@ -313,14 +313,18 @@ class DoliDb
}
/**
- * \brief Renvoie la version du serveur
- * \return string Chaine version
+ * \brief Return version of server
+ * \return string String with version
*/
function getVersion()
{
$resql=$this->query('SHOW server_version');
- $liste=$this->fetch_array($resql);
- return $liste['server_version'];
+ if ($resql)
+ {
+ $liste=$this->fetch_array($resql);
+ return $liste['server_version'];
+ }
+ return '';
}
/**
@@ -429,7 +433,7 @@ class DoliDb
/**
* \brief Convert request to PostgreSQL syntax, execute it and return the resultset
* \param query SQL query string
- * \param usesavepoint 0=Default mode, 1=Run a savepoint before and a rollbock to savepoint if error (this allow to have some request with errors inside global transactions).
+ * \param usesavepoint 0=Default mode, 1=Run a savepoint before and a rollback to savepoint if error (this allow to have some request with errors inside global transactions).
* \return resource Resultset of answer
*/
function query($query,$usesavepoint=0)