2
0
forked from Wavyzz/dolibarr

New: Possibilit d'imposer la version minimale de la base dans les scripts de migration ou .sql.

Pour cela il faut mettre devant l'ordre sql, la sequence --Vx.x pour executer l'ordre SQL uniquement si base en version x.x ou superieur.
This commit is contained in:
Laurent Destailleur
2006-06-17 00:58:51 +00:00
parent 4889b4193e
commit 3566ef2692
7 changed files with 99 additions and 17 deletions

View File

@@ -112,8 +112,10 @@ if ($_POST["action"] == "set")
if ($ok)
{
$version=$db->getVersion();
print '<tr><td>';
print $langs->trans("DatabaseVersion").'</td><td>'.$version.'</td></tr>';
$versionarray=$db->getVersionArray();
print '<tr><td>'.$langs->trans("DatabaseVersion").'</td>';
print '<td align="right">'.$version.'</td></tr>';
//print '<td align="right">'.join('.',$versionarray).'</td></tr>';
}
/**************************************************************************************
@@ -213,12 +215,17 @@ if ($_POST["action"] == "set")
$buf = fgets($fp, 4096);
// Cas special de lignes autorisees pour certaines versions uniquement
if (eregi('^-- V([0-9]+)',$buf,$reg))
if (eregi('^-- V([0-9\.]+)',$buf,$reg))
{
if ($reg[1] && $reg[1] <= $version)
$versioncommande=split('\.',$reg[1]);
//print var_dump($versioncommande);
//print var_dump($versionarray);
if (sizeof($versioncommande) && sizeof($versionarray)
&& versioncompare($versioncommande,$versionarray) <= 0)
{
$buf=eregi_replace('^-- V([0-9]+)','',$buf);
//print $buf.'<br>';
// Version qualified, delete SQL comments
$buf=eregi_replace('^-- V([0-9\.]+)','',$buf);
//print "Ligne $i qualifi<66>e par version: ".$buf.'<br>';
}
}

View File

@@ -26,6 +26,9 @@
\version $Revision$
*/
require_once('../translate.class.php');
// Forcage du parametrage PHP magic_quots_gpc (Sinon il faudrait a chaque POST, conditionner
// la lecture de variable par stripslashes selon etat de get_magic_quotes).
// En mode off (recommande il faut juste faire addslashes au moment d'un insert/update.
@@ -45,9 +48,8 @@ if (get_magic_quotes_gpc())
$docurl = '<a href="doc/dolibarr-install.html">documentation</a>';
$conffile = "../conf/conf.php";
// Defini objet langs
require_once('../translate.class.php');
// Defini objet langs
$langs = new Translate('../langs');
$langs->setDefaultLang('auto');
$langs->setPhpLang();
@@ -103,6 +105,7 @@ function pFooter($nonext=0,$setuplang='')
print '</html>';
}
function dolibarr_syslog($message)
{
// Les fonctions syslog ne sont pas toujours install豠ou autoris褳 chez les h补rgeurs
@@ -117,4 +120,27 @@ function dolibarr_syslog($message)
// }
}
}
/**
\brief Compare 2 versions
\param versionarray1 Tableau de version (vermajeur,vermineur,autre)
\param versionarray2 Tableau de version (vermajeur,vermineur,autre)
\return int <0 si versionarray1<versionarray2, 0 si =, >0 si versionarray1>versionarray2
*/
function versioncompare($versionarray1,$versionarray2)
{
$ret=0;
$i=0;
while ($i < max(sizeof($versionarray1),sizeof($versionarray1)))
{
$operande1=isset($versionarray1[$i])?$versionarray1[$i]:0;
$operande2=isset($versionarray2[$i])?$versionarray2[$i]:0;
if ($operande1 < $operande2) { $ret = -1; break; }
if ($operande1 > $operande2) { $ret = 1; break; }
$i++;
}
return $ret;
}
?>

View File

@@ -103,7 +103,6 @@ if (! isset($_GET["action"]) || $_GET["action"] == "upgrade")
{
if($db->database_selected == 1)
{
dolibarr_syslog("Connexion r<>ussie <20> la base : $dolibarr_main_db_name");
}
else
@@ -112,6 +111,17 @@ if (! isset($_GET["action"]) || $_GET["action"] == "upgrade")
}
}
// Affiche version
if ($ok)
{
$version=$db->getVersion();
$versionarray=$db->getVersionArray();
print '<tr><td>'.$langs->trans("DatabaseVersion").'</td>';
print '<td align="right">'.$version.'</td></tr>';
//print '<td align="right">'.join('.',$versionarray).'</td></tr>';
}
/***************************************************************************************
*
@@ -141,9 +151,27 @@ if (! isset($_GET["action"]) || $_GET["action"] == "upgrade")
while (!feof ($fp))
{
$buf = fgets($fp, 4096);
$buf = ereg_replace('--(.*)','',$buf); // Delete SQL comments
// Cas special de lignes autorisees pour certaines versions uniquement
if (eregi('^-- V([0-9\.]+)',$buf,$reg))
{
$versioncommande=split('\.',$reg[1]);
//print var_dump($versioncommande);
//print var_dump($versionarray);
if (sizeof($versioncommande) && sizeof($versionarray)
&& versioncompare($versioncommande,$versionarray) <= 0)
{
// Version qualified, delete SQL comments
$buf=eregi_replace('^-- V([0-9\.]+)','',$buf);
//print "Ligne $i qualifi<66>e par version: ".$buf.'<br>';
}
}
// Ajout ligne si non commentaire
if (! eregi('^--',$buf)) $buffer .= $buf;
// print $buf.'<br>';
$buffer .= $buf;
if (eregi(';',$buffer))
{
// Found new request

View File

@@ -57,7 +57,7 @@ function versiontostring($versionarray)
\brief Compare 2 versions
\param versionarray1 Tableau de version (vermajeur,vermineur,autre)
\param versionarray2 Tableau de version (vermajeur,vermineur,autre)
\return int <0 si versionarray1>versionarray2, 0 si =, >0 si versionarray1>versionarray2
\return int <0 si versionarray1<versionarray2, 0 si =, >0 si versionarray1>versionarray2
*/
function versioncompare($versionarray1,$versionarray2)
{

View File

@@ -206,6 +206,16 @@ class DoliDb
}
/**
\brief Renvoie la version du serveur dans un tableau
\return array Tableau de chaque niveau de version
*/
function getVersionArray()
{
return split('\.',$this->getVersion());
}
/**
\brief Renvoie l'id de la connection
\return string Id connection

View File

@@ -179,6 +179,17 @@ class DoliDb
}
/**
\brief Renvoie la version du serveur dans un tableau
\return array Tableau de chaque niveau de version
*/
function getVersionArray()
{
return split('\.',$this->getVersion());
}
/**
\brief Renvoie l'id de la connection
\return string Id connection

View File

@@ -1,7 +1,7 @@
-- $Revision$
--
-- Attention <20> l ordre des requetes
-- ce fichier doit <20>tre charg<72> sur une version 2.0.0
-- Attention <20> l ordre des requetes.
-- Ce fichier doit <20>tre charg<72> sur une version 2.0.0
-- sans AUCUNE erreur ni warning
--
@@ -290,7 +290,7 @@ alter table llx_accountingsystem_det rename to llx_accountingaccount;
insert into llx_rights_def (id, libelle, module, type, bydefault, subperms, perms) values (262,'Consulter tous les clients','commercial','r',1,'voir','client');
insert into llx_user_rights(fk_user,fk_id) select distinct fk_user, '262' from llx_user_rights where fk_id = 261;
-- V4.1 insert into llx_user_rights(fk_user,fk_id) select distinct fk_user, '262' from llx_user_rights where fk_id = 261;
update llx_rights_def set subperms='creer' where subperms='supprimer' AND module='user' AND perms='self' AND id=255;
alter table llx_commandedet add column rang integer DEFAULT 0;