";
// comment are not execute
if ( substr($buffer,0,2) == "--" ) {
//echo "comment $buffer";
continue;
}
// Blank Lines Are Skipped
If ( Strlen($buffer)==0) {
//echo "Blank $buffer";
Continue;
}
if ( strpos(strtolower($buffer),"create function")===0 ) {
echo "found a function";
$flag_function=true;
$sql=$buffer;
continue;
}
if ( strpos(strtolower($buffer),"create or replace function")===0 ) {
echo "found a function";
$flag_function=true;
$sql=$buffer;
continue;
}
// No semi colon -> multiline command
if ( $flag_function== false && strpos($buffer,';') == false ) {
$sql.=$buffer;
continue;
}
if ( $flag_function ) {
if ( strpos(strtolower($buffer), "language plpgsql") === false &&
strpos(strtolower($buffer), "language 'plpgsql'") === false ) {
$sql.=$buffer;
continue;
}
} else {
// cut the semi colon
$buffer=str_replace (';','',$buffer);
}
$sql.=$buffer;
if ( ExecSql($p_cn,$sql,false) == false ) {
Rollback($p_cn);
if ( DEBUG=='false' ) ob_clean();
print "ERROR : $sql";
exit();
}
$sql="";
$flag_function=false;
print "
";
} // while (feof)
fclose($hf);
if ( DEBUG=='false' ) ob_clean();
}
/*! \brief loop to apply all the path to a folder or
* a template
* \param $p_cn database connexion
* \param $p_name database name
*
*/
function apply_patch($p_cn,$p_name)
{
$MaxVersion=33;
for ( $i = 4;$i <= $MaxVersion;$i++)
{
$to=$i+1;
if ( GetVersion($p_cn) <= $i ) {
echo "Patching ".$p_name.
" from the version ".GetVersion($p_cn)." to $to
";
ExecuteScript($p_cn,'sql/patch/upgrade'.$i.'.sql');
if ( DEBUG=='false' ) ob_start();
// specific for version 4
if ( $i == 4 )
{
$sql="select jrn_def_id from jrn_def ";
$Res=ExecSql($p_cn,$sql);
$Max=pg_NumRows($Res);
for ($seq=0;$seq<$Max;$seq++) {
$row=pg_fetch_array($Res,$seq);
$sql=sprintf ("create sequence s_jrn_%d",$row['jrn_def_id']);
ExecSql($p_cn,$sql);
}
}
// specific to version 7
if ( $i == 7 )
{
// now we use sequence instead of computing a max
//
$Res2=ExecSql($p_cn,'select coalesce(max(jr_grpt_id),1) as l from jrn');
$Max2= pg_NumRows($Res2) ;
if ( $Max2 == 1) {
$Row=pg_fetch_array($Res2,0);
var_dump($Row);
$M=$Row['l'];
ExecSql($p_cn,"select setval('s_grpt',$M,true)");
}
}
// specific to version 17
if ( $i == 17 )
{
ExecuteScript($p_cn,'sql/patch/upgrade17.sql');
$max=getDbValue($p_cn,'select last_value from s_jnt_fic_att_value');
AlterSequence($p_cn,'s_jnt_fic_att_value',$max+1);
} // version
// reset sequence in the modele
//--
if ( $i == 30 && $p_name=="mod" )
{
$a_seq=array('s_jrn','s_jrn_op','s_centralized',
's_stock_goods','c_order','s_central');
foreach ($a_seq as $seq ) {
$sql=sprintf("select setval('%s',1,false)",$seq);
$Res=ExecSql($p_cn,$sql);
}
$sql="select jrn_def_id from jrn_def ";
$Res=ExecSql($p_cn,$sql);
$Max=pg_NumRows($Res);
for ($seq=0;$seq<$Max;$seq++) {
$row=pg_fetch_array($Res,$seq);
$sql=sprintf ("select setval('s_jrn_%d',1,false)",$row['jrn_def_id']);
ExecSql($p_cn,$sql);
}
}
if ( DEBUG == 'false') ob_clean();
}
}
}
//----------------------------------------------------------------------
// End functions
//
//----------------------------------------------------------------------
// Verify some PHP parameters
// magic_quotes_gpc = Off
// magic_quotes_runtime = Off
// magic_quotes_sybase = Off
// include_path
?>
Info
Vous utilisez le domaine
Php setting
';
else {
print ("$a has a bad value !!!
");
$flag_php++;
}
}
$module=get_loaded_extensions();
if ( in_array('pgsql',$module) == false )
{
print 'Désolé mais soit vous n\'avez pas installé le package pour postgresql soit php n\'a pas pas été compilé avec les bonnes options
';
$flag_php++;
}
if ( ini_get("max_execution_time") < 60 ) {
print ' max_execution_time should be set to 60 minimum
';
}
if ( ini_get("session.auto_start") == false ) {
print ' session.auto_start must be set to true
';
$flag_php++;
}
if ( ini_get("session.use_trans_sid") == false ) {
print ' avertissement session.use_trans_sid should be set to true
';
}
if ( ereg("..\/include",$inc_path) == 0 and ereg("..\\include",$inc_path) == 0)
{
print ("include_path incorrect !!!".$inc_path."
");
$flag_php++;
}
else
if ( ereg("addon",$inc_path) == 0) {
print ("include_path incorrect !!!".$inc_path."
");
$flag_php++;
}else
print 'include_path : ok ('.$inc_path.')
';
if ( $flag_php==0 ) {
echo 'php.ini est bien configuré
';
} else {
echo ' php mal configuré
';
exit -1;
}
$cn=DbConnect(-2,'template1');
if ($cn == false ) {
print " Vous devez absolument taper dans une console la commande 'createuser -A -d -P phpcompta et vous donnez dany comme mot de passe (voir la documentation)'
Ces commandes créeront l'utilisateur phpcompta avec le droit de créer des bases de donné.
";
exit();
}
?>
Database version
Vous devez absolument utiliser au minimum une version 8 de PostGresql, si votre distribution n'en
offre pas, installez en une en la compilant.
Lisez attentivement la notice sur postgresql.org pour migrer
vos bases de données en 8
Database Setting
Vous devez installer le langage plpgsql pour permettre aux fonctions SQL de fonctionner.
Pour cela, sur la ligne de commande, faites createlang plpgsql template1
Attention le paramètre effective_cache_size est de '.
$a['setting']." au lieu de 1000 ";
$flag++;
}
break;
case 'shared_buffers':
if ( $a['setting'] < 640 ){
print 'Attention le paramètre shared_buffer est de '.
$a['setting']."au lieu de 640
";
$flag++;
}
break;
case 'work_mem':
if ( $a['setting'] < 8192 ){
print 'Attention le paramètre work_mem est de '.
$a['setting']." au lieu de 8192
";
$flag++;
}
break;
}
}
if ( $flag == 0 ) {
echo 'La base de données est bien configurée
';
} else {
echo 'Il y a '.$flag.' paramètre qui sont trop bas
';
}
if ( ! isset($_POST['go']) ) {
?>
".__LINE__." test has failed !!!");
}
if ( ($Res=ExecSql($a,"select * from ac_users") ) == false ) {
exit ("".__LINE__." test has failed !!!
");
} else
print "Connect to database success
";
echo " Congratulation : Test successfull
";
echo " Patching databases
";
$cn=DbConnect();
$Resdossier=ExecSql($cn,"select dos_id, dos_name from ac_dossier");
$MaxDossier=pg_NumRows($Resdossier);
//----------------------------------------------------------------------
// Upgrade the folders
//----------------------------------------------------------------------
for ($e=0;$e < $MaxDossier;$e++) {
$db_row=pg_fetch_array($Resdossier,$e);
echo "Patching ".$db_row['dos_name'].'
';
$db=DbConnect($db_row['dos_id'],'dossier');
apply_patch($db,$db_row['dos_name']);
}
//----------------------------------------------------------------------
// Upgrade the template
//----------------------------------------------------------------------
$Resdossier=ExecSql($cn,"select mod_id, mod_name from modeledef");
$MaxDossier=pg_NumRows($Resdossier);
echo "Upgrading template";
for ($e=0;$e < $MaxDossier;$e++) {
$db_row=pg_fetch_array($Resdossier,$e);
echo "Patching ".$db_row['mod_name']."
";
$db=DbConnect($db_row['mod_id'],'mod');
apply_patch($db,$db_row['mod_name']);
}
//----------------------------------------------------------------------
// Upgrade the account_repository
//----------------------------------------------------------------------
echo "Upgrading Repository";
$cn=DbConnect();
if ( DEBUG == 'false') ob_start();
$MaxVersion=7;
for ($i=4;$i<= $MaxVersion;$i++)
{
if ( GetVersion($cn) <= $i ) {
ExecuteScript($cn,'sql/patch/ac-upgrade'.$i.'.sql');
}
}
if (DEBUG=='false') ob_clean();
echo "Voilà tout est installé ;-)
";
?>