2
0
forked from Wavyzz/dolibarr

Fix: Solve errors in migrate with postgresql

This commit is contained in:
Laurent Destailleur
2010-08-01 21:42:57 +00:00
parent 4e58a9e8c4
commit 23e503b3f0
5 changed files with 212 additions and 190 deletions

View File

@@ -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)
{
@@ -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;
}

View File

@@ -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);
}
}

View File

@@ -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 '<b>'.$filetodelete."</b><br>\n";
if (file_exists($filetodelete))
{
$result=dol_delete_file($filetodelete);
}
if (! $result)
{
$langs->load("errors");
print '<div class="error">'.$langs->trans("Error").': '.$langs->trans("ErrorFailToDeleteFile",$filetodelete);
print ' '.$langs->trans("RemoveItManuallyAndPressF5ToContinue").'</div>';
}
}
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 '<b>'.$filetodelete."</b><br>\n";
if (file_exists($filetodelete))
{
$result=dol_delete_dir_recursive($filetodelete);
}
if (! $result)
{
$langs->load("errors");
print '<div class="error">'.$langs->trans("Error").': '.$langs->trans("ErrorFailToDeleteDir",$filetodelete);
print ' '.$langs->trans("RemoveItManuallyAndPressF5ToContinue").'</div>';
}
}
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 '<b>'.$filetodelete."</b><br>\n";
if (file_exists($filetodelete))
{
$result=dol_delete_file($filetodelete);
}
if (! $result)
{
$langs->load("errors");
print '<div class="error">'.$langs->trans("Error").': '.$langs->trans("ErrorFailToDeleteFile",$filetodelete);
print ' '.$langs->trans("RemoveItManuallyAndPressF5ToContinue").'</div>';
}
}
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 '<b>'.$filetodelete."</b><br>\n";
if (file_exists($filetodelete))
{
$result=dol_delete_dir_recursive($filetodelete);
}
if (! $result)
{
$langs->load("errors");
print '<div class="error">'.$langs->trans("Error").': '.$langs->trans("ErrorFailToDeleteDir",$filetodelete);
print ' '.$langs->trans("RemoveItManuallyAndPressF5ToContinue").'</div>';
}
}
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

View File

@@ -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 '<tr><td valign="top" colspan="2">';
if (! $silent) print '<div class="error">'.$langs->trans("Failed to get max rowid for ".$table)."</div></td>";
if (! $silent) print '</tr>';

View File

@@ -313,15 +313,19 @@ 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');
if ($resql)
{
$liste=$this->fetch_array($resql);
return $liste['server_version'];
}
return '';
}
/**
* \brief Renvoie la version du serveur sous forme de nombre
@@ -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)