From c2646d207180b64a07b1c8b23210eb38fa7d7fb6 Mon Sep 17 00:00:00 2001 From: Dany De Bontridder Date: Thu, 3 Sep 2015 18:48:58 +0200 Subject: [PATCH] Task#1173 : create a empty database to restaure in command line --- html/do.php | 13 ++++ include/dossier.inc.php | 166 ++++++++++++++++++++++++---------------- 2 files changed, 114 insertions(+), 65 deletions(-) diff --git a/html/do.php b/html/do.php index a8ceef23b..26044b53e 100644 --- a/html/do.php +++ b/html/do.php @@ -85,6 +85,19 @@ global $g_user, $cn,$g_parameter; $cn = new Database(Dossier::id()); + +/* + * check that the database is not empty + */ +if ( ! $cn->exist_table('version')) { + echo '

'._('Désolé').'

'; + echo _('Ce dossier est vide'); + echo '

'; + echo ''._("Retour à l'accueil").''; + echo '

'; + return; +} + $g_user = new User($cn); $g_parameter=new Own($cn); diff --git a/include/dossier.inc.php b/include/dossier.inc.php index e0f4d63eb..f1d9bd7c8 100644 --- a/include/dossier.inc.php +++ b/include/dossier.inc.php @@ -43,7 +43,9 @@ if ( isset ($_POST['upd']) && isNumber($dossier_id) == 1 && $dossier_id != -1) $dos->save(); } echo '
'; -// check and add an new folder +/* + * check and add an new folder + */ if ( isset ($_POST["DATABASE"]) ) { $repo=new Database(); @@ -62,23 +64,27 @@ if ( isset ($_POST["DATABASE"]) ) $template=HtmlInput::default_value_post("FMOD_ID",-1); if ( $template == -1 || isNumber($template ) == 0) die (_('Parametre invalide')); - - // compute template name - $template_name=domaine.'mod'.$template; - - - $encoding=$repo->get_value("select encoding from pg_database where ". - " datname=$1",array($template_name)); - if ( $encoding != 6 ) + /* + * If template is not empty + */ + if ( $template != 0 ) { - alert(_('Désolé vous devez migrer ce modèle en unicode')); - echo ''; - echo _('le modele ').domaine.'mod'.$_POST["FMOD_ID"]._(" doit être migré en unicode."); - echo _('Pour le passer en unicode, faites-en un backup puis restaurez le fichier reçu').''; - echo HtmlInput::button_anchor('Retour','admin_repo.php?action=dossier_mgt'); - return; - } + // compute template name + $template_name=domaine.'mod'.$template; + + $encoding=$repo->get_value("select encoding from pg_database where ". + " datname=$1",array($template_name)); + if ( $encoding != 6 ) + { + alert(_('Désolé vous devez migrer ce modèle en unicode')); + echo ''; + echo _('le modele ').domaine.'mod'.$_POST["FMOD_ID"]._(" doit être migré en unicode."); + echo _('Pour le passer en unicode, faites-en un backup puis restaurez le fichier reçu').''; + echo HtmlInput::button_anchor('Retour','admin_repo.php?action=dossier_mgt'); + return; + } + } /* * Insert new dossier with description */ @@ -106,63 +112,91 @@ if ( isset ($_POST["DATABASE"]) ) if ( $l_id != 0) { - //-- - // setting the year - //-- - $year=sql_string($_POST['YEAR']); - if ( strlen($year) != 4 || isNumber($year) == 0 || $year > 2100 || $year < 2000 || $year != round($year,0)) + /* + * We don't create and empty database + */ + if ($template != 0 ) { - echo "$year"._(" est une année invalide"); - $Res=$repo->exec_sql("delete from ac_dossier where dos_id=$l_id"); - } - else - { - $Sql=sprintf("CREATE DATABASE %sDOSSIER%d encoding='UTF8' TEMPLATE %sMOD%d", - domaine, - $l_id, - domaine, - sql_string($_POST["FMOD_ID"])); - ob_start(); - if ( $repo->exec_sql($Sql)==false) + //-- + // setting the year + //-- + $year=sql_string($_POST['YEAR']); + if ( strlen($year) != 4 || isNumber($year) == 0 || $year > 2100 || $year < 2000 || $year != round($year,0)) { - echo "[".$Sql."]"; - - //ob_end_clean(); - $repo->exec_sql("delete from ac_dossier where dos_id=$l_id"); - echo "

"._(" Base de donnée ").domaine."mod".$_POST['FMOD_ID']." ". - _("est accèdée, déconnectez-vous d'abord")."

"; - exit; + echo "$year"._(" est une année invalide"); + $Res=$repo->exec_sql("delete from ac_dossier where dos_id=$l_id"); } - ob_flush(); - // Connect to the new database - $cn=new Database($l_id); - //--year -- - $Res=$cn->exec_sql("delete from parm_periode"); - if ( ($year % 4 == 0 && $year % 100 != 0) || $year % 400 == 0 ) - $fev=29; else - $fev=28; - $Res=$cn->exec_sql("delete from user_local_pref where parameter_type='PERIODE'"); - $nb_day=array(31,$fev,31,30,31,30,31,31,30,31,30,31); - $m=1; - foreach ($nb_day as $day) { - $p_start=sprintf("01-%d-%s",$m,$year); - $p_end=sprintf("%d-%d-%s",$day,$m,$year); - $sql=sprintf("insert into parm_periode (p_start,p_end,p_exercice) - values (to_date('%s','DD-MM-YYYY'),to_date('%s','DD-MM-YYYY'),'%s')", - $p_start,$p_end,$year); + $Sql=sprintf("CREATE DATABASE %sDOSSIER%d encoding='UTF8' TEMPLATE %sMOD%d", + domaine, + $l_id, + domaine, + sql_string($_POST["FMOD_ID"])); + ob_start(); + if ( $repo->exec_sql($Sql)==false) + { + echo "[".$Sql."]"; + + //ob_end_clean(); + $repo->exec_sql("delete from ac_dossier where dos_id=$l_id"); + echo "

"._(" Base de donnée ").domaine."mod".$_POST['FMOD_ID']." ". + _("est accèdée, déconnectez-vous d'abord")."

"; + exit; + } + ob_flush(); + // Connect to the new database + $cn=new Database($l_id); + //--year -- + $Res=$cn->exec_sql("delete from parm_periode"); + if ( ($year % 4 == 0 && $year % 100 != 0) || $year % 400 == 0 ) + $fev=29; + else + $fev=28; + $Res=$cn->exec_sql("delete from user_local_pref where parameter_type='PERIODE'"); + $nb_day=array(31,$fev,31,30,31,30,31,31,30,31,30,31); + $m=1; + foreach ($nb_day as $day) + { + $p_start=sprintf("01-%d-%s",$m,$year); + $p_end=sprintf("%d-%d-%s",$day,$m,$year); + $sql=sprintf("insert into parm_periode (p_start,p_end,p_exercice) + values (to_date('%s','DD-MM-YYYY'),to_date('%s','DD-MM-YYYY'),'%s')", + $p_start,$p_end,$year); + $Res=$cn->exec_sql($sql); + $m++; + } + $sql=" insert into jrn_periode(p_id,jrn_def_id,status) ". + "select p_id,jrn_def_id, 'OP'". + " from parm_periode cross join jrn_def"; $Res=$cn->exec_sql($sql); - $m++; + + Dossier::synchro_admin($l_id); + + } - $sql=" insert into jrn_periode(p_id,jrn_def_id,status) ". - "select p_id,jrn_def_id, 'OP'". - " from parm_periode cross join jrn_def"; - $Res=$cn->exec_sql($sql); - - Dossier::synchro_admin($l_id); - + } + else { + /* + * An empty database is asked, it is created + */ + $Sql=sprintf("CREATE DATABASE %sDOSSIER%d encoding='UTF8' ", + domaine, + $l_id, + domaine + ); + ob_start(); + if ( $repo->exec_sql($Sql)==false) + { + echo "[".$Sql."]"; + //ob_end_clean(); + $repo->exec_sql("delete from ac_dossier where dos_id=$l_id"); + echo _("Echec création "); + exit; + } + ob_flush(); + } } // if $l_id != 0 } // $_POST[DATABASE] @@ -275,11 +309,13 @@ if ( $sa == 'list' ) else { $template='"; }// if count = 0 $m_date=date('Y');