';
switch ( $step ) {
case 0: // presentation
echo "
"._("Bienvenue sur l'installateur d'openFramework")." ".$version." ";
echo "";
// existence du fichier database.inc.php
if ( file_exists( ABSPATH . 'dyn/database.inc.php' ) ) {
$config_file = file( ABSPATH . 'dyn/database.inc.php' );
die(
sprintf(
_( 'Le fichier dyn / database.inc.php existe déjà.
Si vous voulez utiliser ce programme pour changer la configuration dans ce fichier,
veuillez le supprimer.
Vous pouvez aussi essayer de lancer l’installation maintenant avec le fichier actuel.'),
'
database.inc.-sample.php
'
)
);
}
echo $msg;
echo "
"._("Cliquez sur ce lien pour configurer le fichier database.inc.php")."
";
break;
case 1: // saisie des informations
echo $msg1;
break;
case 2: // test de connexion et sauvegarde du database.inc.php
// variables champs a voir
define( 'DBNAME', trim( $_POST['dbname'] ));
define( 'SCHEMA', trim( $_POST['schema'] ));
define( 'UNAME', trim( $_POST['uname'] ));
define( 'PWD', trim( $_POST['pwd'] ));
define( 'DBHOST', trim( $_POST['dbhost'] ));
define( 'DBPORT', trim( $_POST['dbport'] ));
// test champs vides
$tryagain_link = '
'._( 're essayer' ).'';
if ( empty( DBNAME ) ) {
die( _( 'Erreur: "nom de la base" ne peut pas être vide.' ) . $tryagain_link );
}
if ( empty( SCHEMA ) ) {
die( _( 'Erreur: "schema" ne peut pas être vide.' ) . $tryagain_link );
}
if ( empty( UNAME ) ) {
die( _( 'Erreur: "identifiant" ne peut pas être vide.' ) . $tryagain_link );
}
if ( empty( PWD ) ) {
die( _( 'Erreur: "mot de passe" ne peut pas être vide.' ) . $tryagain_link );
}
if ( empty( DBHOST ) ) {
die( _( 'Erreur: "adresse de la base de données" ne peut pas être vide.' ) . $tryagain_link );
}
if ( empty( DBPORT ) ) {
die( _( 'Erreur: "port de la base de données" ne peut pas être vide.' ) . $tryagain_link );
}
// test de connexion
$con = pg_connect("host=".DBHOST.
" port=".DBPORT." dbname=".DBNAME.
" user=".UNAME." password=".PWD);
if (!$con) {
echo _("Vous avez une erreur de connexion à la base de données ")."
";
echo _("Cela signifie soit que l’identifiant ou le mot de passe dans votre fichier database.inc.php n’est pas correct, soit que nous ne pouvons pas contacter le serveur de base de données à l’adresse ").
$dbhost." ".$dbport." "._(" Cela peut signifier que votre serveur de base de données est tombé.")."
";
echo _("Confirmez-vous utiliser le bon identifiant et le bon mot de passe ?")."
";
echo _("Confirmez-vous avoir saisi le bon nom d’hôte (hostname) ?")."
";
echo _("Confirmez-vous que le serveur de la base de données fonctionne ?")."
";
echo _("Si vous n’êtes pas sûr de connaître ces termes, vous devriez probablement contacter votre hébergeur. Si vous avez toujours besoin d’aide, vous pouvez toujours vous rendre sur le forum").""._("forum")."
";
echo $tryagain_link;
}else{
echo _("la connexion est ok")."
";
// variable database
$database = "";
// test d ecriture
// a voir écriture de dyn si dyn n'existe pas
// ***
// ABSPATH = /var/www/html/om5_rad/
// echo ABSPATH."
";
if ( ! is_writable( ABSPATH."dyn/" ) ){
echo _("Vous n'avez pas accès en écriture au répertoire dyn")."
";
echo _("Veuillez recopier dans le repertoire dyn les données dans le fichier database.inc.php")."
";
echo '';
}else{
//file_put_contents('exemple.txt', $database);
$path_to_file = '../dyn/database.inc.php';
$inf = fopen($path_to_file, "w");
fwrite($inf, $database);
fclose($inf);
echo _("Vous avez accès en écriture et le fichier a été copié en repertoire dyn avec les données suivantes");
echo '';
// archive des constantes
echo '
";
}
}
break;
case 3:
define( 'DBNAME', trim( $_POST['dbname'] ));
define( 'SCHEMA', trim( $_POST['schema'] ));
define( 'UNAME', trim( $_POST['uname'] ));
define( 'PWD', trim( $_POST['pwd'] ));
define( 'DBHOST', trim( $_POST['dbhost'] ));
define( 'DBPORT', trim( $_POST['dbport'] ));
$con = pg_connect("host=".DBHOST.
" port=".DBPORT." dbname=".DBNAME.
" user=".UNAME." password=".PWD);
if (!$con) {
echo _("Vous avez une erreur de connexion à la base de données ")."
";
}else{
// les requetes d'install
requete("SET client_encoding = 'UTF8';",$con);
requete("SET search_path = ".SCHEMA.", public, pg_catalog;",$con);
requete("CREATE EXTENSION IF NOT EXISTS postgis;",$con);
requete("DROP SCHEMA IF EXISTS ".SCHEMA." CASCADE;",$con);
requete("CREATE SCHEMA ".SCHEMA, $con);
// les fichiers du framework
requete_fichier(ABSPATH."/core/data/pgsql/init.sql",$con);
requete_fichier(ABSPATH."/core/data/pgsql/init_permissions.sql",$con);
requete_fichier(ABSPATH."/core/data/pgsql/init_parametrage.sql",$con);
// init_gen_plus.sql : table om_forms et om_tables_parametre
requete_fichier(ABSPATH."/data/pgsql/init_gen_plus.sql",$con);
// init_gen.sql :
// vues sur information_schema pour le schema (récupération de la variable SCHEMA
// qui n'est pas valorisée dans /data/pgsql/init_gen.sql
echo "
"._("Ajout des vues et des droits du projet om5_rad ")."";
requete("CREATE OR REPLACE VIEW om_tables AS
SELECT tables.table_name, table_schema, table_type,
obj_description((table_schema||'.'||tables.table_name)::regclass::oid) as comment,
parametres->>'libelle' as libelle,
parametres->>'col1' as col1,
parametres->>'col2' as col2,
parametres->>'col3' as col3,
parametres->>'affichage' as affichage,
parametres->>'nombre_colonne' as nombre_colonne,
parametres->>'recherche' as recherche
FROM information_schema.tables
left join ".SCHEMA.".om_tables_parametre on tables.table_name=om_tables_parametre.table_name
where table_type = 'BASE TABLE' and table_schema = '".SCHEMA."'",$con);
requete("CREATE OR REPLACE VIEW om_champs AS
SELECT concat(columns.table_name,'.',columns.column_name) as column_name, columns.table_name,
table_schema,data_type,is_nullable,character_maximum_length,
column_default,
col_description((table_schema||'.'||columns.table_name)::regclass::oid, ordinal_position) as comment
FROM information_schema.columns
where table_schema = '".SCHEMA."'",$con);
requete("CREATE OR REPLACE VIEW om_contraintes AS
SELECT tc.constraint_name,
tc.table_name,kcu.column_name, ccu.table_name AS foreign_table_name, ccu.column_name AS foreign_column_name
FROM information_schema.table_constraints AS tc
JOIN information_schema.key_column_usage AS kcu USING (constraint_schema, constraint_name)
JOIN information_schema.constraint_column_usage AS ccu USING (constraint_schema, constraint_name)
WHERE constraint_type = 'FOREIGN KEY' AND tc.table_schema = '".SCHEMA."'",$con);
requete("CREATE OR REPLACE VIEW om_vues AS
SELECT table_name, table_schema, view_definition FROM information_schema.views
where table_schema='".SCHEMA."'",$con);
requete("CREATE OR REPLACE VIEW om_proc AS
SELECT proname, prosrc from pg_proc inner join pg_namespace on pg_namespace.oid=pg_proc.pronamespace
where nspname='".SCHEMA."'",$con);
requete("CREATE OR REPLACE VIEW om_triggers AS
SELECT trigger_name, trigger_schema, event_manipulation, event_object_table,
action_order, action_condition, action_statement, action_orientation, action_timing
from information_schema.triggers
where trigger_schema ='".SCHEMA."'",$con);
// om_droits -> dans om_gen_plus.sql
//requete("INSERT INTO ".SCHEMA.".om_droit (om_droit, libelle, om_profil) VALUES (nextval('".SCHEMA.".om_droit_seq'), 'om_tables', 1)",$con);
//requete("INSERT INTO ".SCHEMA.".om_droit (om_droit, libelle, om_profil) VALUES (nextval('".SCHEMA.".om_droit_seq'), 'om_champs', 1)",$con);
//requete("INSERT INTO ".SCHEMA.".om_droit (om_droit, libelle, om_profil) VALUES (nextval('".SCHEMA.".om_droit_seq'), 'om_contraintes', 1)",$con);
//requete("INSERT INTO ".SCHEMA.".om_droit (om_droit, libelle, om_profil) VALUES (nextval('".SCHEMA.".om_droit_seq'), 'om_vues', 1)",$con);
//requete("INSERT INTO ".SCHEMA.".om_droit (om_droit, libelle, om_profil) VALUES (nextval('".SCHEMA.".om_droit_seq'), 'om_triggers', 1)",$con);
//requete("INSERT INTO ".SCHEMA.".om_droit (om_droit, libelle, om_profil) VALUES (nextval('".SCHEMA.".om_droit_seq'), 'om_proc', 1)",$con);
}
/* Fermeture de la connection */
pg_close($con);
echo _("Terminé")."
";
echo "
"._("Cliquez sur ce lien pour lancer le framework")."
";
break;
}
echo "