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)