".$filesql."
"; $query = file_get_contents($filesql); $array = explode(";\n", $query); for ($i=0; $i < count($array) ; $i++) { $str = $array[$i]; //echo " ".$i." "; if ($str != '' ) { // traitement des commentaires- $array2 = explode("\n", $str); $str3=""; $comment=0; for ($j=0; $j < count($array2) ; $j++) { $str2 = $array2[$j]; //echo $str2." | "; if(substr($str2,0,2)!='--' and substr($str2,0,2)!='/*' and substr($str2,0,1)!='*' ){ $str3 .= $str2; } } if($str3!=''){ // echo " ".$str3." -> "; $res = pg_query($con, $str3); if (!$res) echo ''._("erreur requete").$str3."
"; //else // echo _("executé"); } } //echo $i." lignes traitées
"; } echo $i." lignes traitées
"; } function requete_fichier_global($filesql,$con){ $query = file_get_contents($filesql); $res = pg_query($con, $query); if (!$res) echo '-> '._("erreur requete")."
"; else echo '-> '._("executé")."
"; echo "
"; } function requete($sql,$con){ $res = pg_query($con, $sql); echo substr($sql,0,50); if (!$res) echo ' ->'._("erreur requete").$str3."
"; else echo ' ->'._("executé")."
"; } // version du framework include "../core/om_version.inc.php"; // versions required pour la version du framework -> à voir pour install ? $required_php_version = '5.6.20'; $required_pgsql_version = '9.0'; // etape de création $step = isset( $_GET['step'] ) ? (int) $_GET['step'] : 0; //path absolu if ( ! defined( 'ABSPATH' ) ) { define( 'ABSPATH', dirname( __DIR__ ) . '/' ); } // ====== // textes // ====== // étape 0 : texte d'explication du rôle de l'installateur $msg=""; $msg .= _("Avant de créer les tables du framework, nous avons besoin de certaines informations sur votre base de données. "); $msg .= "

"; $msg .= _("Il va vous falloir réunir les informations suivantes pour continuer. "); $msg .= "
"; $msg .= "- "._("Nom de la base de données"); $msg .= "
"; $msg .= "- "._("Nom du schéma de données"); $msg .= "
"; $msg .= "- "._("Nom d’utilisateur Postgres"); $msg .= "
"; $msg .= "- "._("Mot de passe de l’utilisateur "); $msg .= "
"; $msg .= "- "._("Hôte de base de données"); $msg .= "
"; $msg .= "- "._("Port de la base de données (par défaut 5432)"); $msg .= "
"; $msg .= _("Nous allons utiliser ces informations pour créer le fichier dans dyn : database.inc.php. "); $msg .= "
"; $msg .= _("Si pour une raison ou pour une autre la création automatique du fichier ne fonctionne pas, "); $msg .= "
"; $msg .= _("ne vous inquiétez pas. Sa seule action est d’ajouter les informations de la base de données "); $msg .= "
"; $msg .= _("dans un fichier de configuration. Vous pouvez aussi simplement ouvrir dyn/database.inc-sample.php "); $msg .= "
"; $msg .= _("dans un éditeur de texte, y remplir vos informations et l’enregistrer sous le nom de database.inc.php. "); $msg .= "
"; $msg .= _("Vous devriez normalement avoir reçu ces informations de la part de votre hébergeur. "); $msg .= "
"; $msg .= _("Si vous ne les avez pas, il vous faudra contacter votre hébergeur afin de continuer."); $msg .= "
"; $msg .= "
"; //$msg .= _("Si vous avez besoin d'aide, contactez le "._("forum")." "); $msg .= "
"; $msg .= _("vous avez des explications complémentaires au lien suivant "._("documentation du projet om5_rad")."

"); // etape 1 : saisie des données de la base $msg1 = '
'; $msg1 .= '

'._("Vous devez saisir ci-dessous les détails de connexion à votre base de données. Si vous ne les connaissez pas, contactez votre hébergeur").'

'; $msg1 .= ''; $msg1 .= ''; $msg1 .= '"; $msg1 .= ''; $msg1 .= '"; $msg1 .= ''; $msg1 .= '"; $msg1 .= ''; $msg1 .= '"; $msg1 .= ''; $msg1 .= '"; $msg1 .= ''; $msg1 .= '"; $msg1 .= ''; $msg1 .= '"; $msg1 .= ''; $msg1 .= '"; $msg1 .= ''; $msg1 .= '"; $msg1 .= ''; $msg1 .= '"; $msg1 .= ''; $msg1 .= '"; $msg1 .= ''; $msg1 .= '"; $msg1 .= '
'._("Le nom de la base de données avec laquelle vous souhaitez utiliser le framework")."
'._("Le nom du schema avec lequel vous souhaitez utiliser le framework")."
'._("Nom d’utilisateur postgresql")."
'._("Votre mot de passe de base de données")."
'._("Si localhost ne fonctionne pas, demandez cette information à l’hébergeur de votre site.")."
'._("Si 5432 ne fonctionne pas, demandez cette information à l’hébergeur de votre site.")."
'; $msg1 .= '

'; $msg1 .= '
'; // suivant l étape echo '
'; 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 '

'; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo "

"._("vous pouver aussi utiliser la procédure data/pgsql/install.sql"); 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 "
"; ?>