Le $type $filename n'éxiste pas.
$comment";
exit();
} else {
echo "$type $filename trouvé.
";
}
}
/*
* Vérifie si un fichier est modifiable
*/
function check_writable ($filename, $comment = "", $fatal = FALSE) {
chmod($filename, 0666);
if (is_writable($filename)) {
echo "$filename est modifiable.
";
} else {
echo "
$filename n'est pas modifiable.
$comment";
if ($fatal) exit();
}
}
/**
* Vérifie l'existence de plusieurs fichiers
*/
function check_all_files() {
echo "Vérification de l'arborescence depuis " . getcwd() . "
";
checkfile("../application", "Réimportez l'arborescence.
", "dossier");
checkfile("../system", "Réimportez l'arborescence.
", "dossier");
checkfile("../install", "Réimportez l'arborescence.
", "dossier");
// echo "Existence des polices à la racine du serveur: ";
// $dir_list = split('/', getcwd());
// array_pop($dir_list);
// array_pop($dir_list);
// $fonts_dir = join('/', $dir_list) . '/fonts';
// checkfile($fonts_dir, "recopiez celui de application/third_party/pChart
", "dossier");
$fatal = FALSE;
check_writable("../application/config/club.php", "Vous ne pourrez pas modifier la configuration du club
"
. "Changez les droits sur le serveur
", $fatal);
check_writable("../application/config/facturation.php", "Vous ne pourrez pas changer la configuration de la facturation
"
. "Changez les droits sur le serveur
", $fatal);
check_writable("../assets/images", "Vous ne pourrez pas charger d'images ni générer de diagrammes
"
. "Changez les droits sur le serveur
", $fatal);
check_writable("../uploads", "Vous ne pourrez pas changer le logo
"
. "Changez les droits sur le serveur
", $fatal);
check_writable("../uploads/restore", "Vous ne pourrez pas restaurer les sauvegardes
"
. "Changez les droits sur le serveur
", $fatal);
}
/**
* Lit les paramètres de base de données depuis un fichier de configuration
*/
function read_db_parameters ($filename) {
$res = array();
$txt = file($filename);
foreach ($txt as $line) {
foreach (array('hostname', 'username', 'password', 'database') as $field) {
if (preg_match("/.*($field)(.*)=\s.(.*)(';)/", $line, $matches)) {
$res[$field] = $matches[3];
}
}
}
if (isset($_GET['HOSTNAME'])) $res['hostname'] = $_GET['HOSTNAME'];
if (isset($_GET['USERNAME'])) $res['username'] = $_GET['USERNAME'];
if (isset($_GET['PASSWORD'])) $res['password'] = $_GET['PASSWORD'];
if (isset($_GET['DATABASE'])) $res['database'] = $_GET['DATABASE'];
return $res;
}
echo "Installation de GVV
";
echo "server user_id=" . get_current_user() . "
";
echo "current directory=" . getcwd() . "
";
echo "Verification des fichiers sur le serveur
";
/*
* Verification de l'import de l'arborescence de GVV
*
*/
echo "Verification de l'arborescence
";
check_all_files();
/*
* Verification de la structure de la base de donn�es
*/
echo "Verification de la base de données
";
$configbase = "../application/config/database.php";
$db_params = read_db_parameters ($configbase);
$serveur = $db_params['hostname'];
$nom = $db_params['username'];
$password = $db_params['password'];
$base = $db_params['database'];
/**
*
* Affiche un message en cas d'erreur de base de données fatale
*/
function fatal_db () {
global $serveur, $nom, $password, $base, $configbase;
$msg = "
";
$msg .= "Connexion à la base de données impossible.
";
$msg .= "vos paramètres:";
$msg .= "serveur=$serveur";
$msg .= "nom=$nom";
$msg .= "mot de passe=$password";
$msg .= "base=$base";
$msg .= "modifiez le fichier $configbase ou configurez votre base de données MYSQL";
$msg .= "
";
$msg .= "Exemple sous Linux:
";
$msg .= "mysql -u root -pmot_de_passe" . "
";
$msg .= "show databases;" . "
";
$msg .= "create database $base;" . "
";
$msg .= "use $base;" . "
";
$msg .= "create user $nom@localhost identified by '$password';" . "
";
$msg .= "grant all on $base.* to $nom@localhost;" . "
";
$msg .= "SHOW GRANTS FOR $nom@localhost;" . "
";
die($msg);
}
/**
* Calcul l'URL du site
*/
function site_url () {
$protocol = strpos(strtolower($_SERVER['REQUEST_SCHEME']),'https')
=== FALSE ? 'http' : 'https';
$host = $_SERVER['HTTP_HOST'];
$script = $_SERVER['SCRIPT_NAME'];
$params = $_SERVER['QUERY_STRING'];
$currentUrl = $protocol . '://' . $host . $script . '?' . $params;
$lst = preg_split ("/\//", $script);
// unset($lst[2]);
array_pop($lst);
array_pop($lst);
$script = join ("/", $lst);
$url = $protocol . '://' . $host . $script;
return $url;
}
// Verification connexion BDD
$db = mysqli_connect($serveur, $nom, $password, $base) or fatal_db();
if (!mysqli_set_charset($db, "utf8")) {
printf("Erreur lors du chargement du jeu de caractères utf8 : %s\n", mysql_error());
} else {
printf("Jeu de caractères courant : %s\n", "utf8");
}
//Verification structure BDD
$sql = "SHOW TABLES FROM $base";
$req = mysqli_query($db, $sql) or die('erreur sql !
'.$sql.'
'.mysqli_error($db));
echo "La connection à la base de données est correcte.
";
echo '
Detection des Tables:
';
while ($data = mysqli_fetch_row($req)) {
echo '
';
echo $data[0];
}
function mysql_import($filename, $db) {
$file_content = file($filename);
$query = "";
foreach($file_content as $sql_line){
if(trim($sql_line) != "" && strpos($sql_line, "--") === false){
$query .= $sql_line;
if (substr(rtrim($query), -1) == ';'){
// echo $query . '
';
$result = mysqli_query($db, $query)
or die(mysqli_error($db));
$query = "";
}
}
}
}
if(mysqli_num_rows($req) < 22){
echo '
Structure inexistante';
echo '
Création des tables de la base de données
';
mysql_import("./gvv_structure.sql", $db);
echo '
Initialisation des valeurs par défaut';
mysql_import("./gvv_defaut.sql", $db);
echo '
La base de données à été créée';
} else {
echo "
Les tables de la base existent déjà, aucune action effectuée.
";
}
//Verification utilisateurs
$requete1=("SELECT * FROM users");
$resultat = mysqli_query($db, $requete1);
echo '
Detection des Utilisateurs:
';
while($data = $resultat->fetch_assoc())
{
// on affiche les informations de l'enregistrement en cours
echo ' '.$data['username'].'
';
}
if(mysqli_num_rows($resultat) < 1){
echo '
Aucun utilisateurs detectés';
echo '
Création d utilisateurs:
';
mysql_import("./initial_users.sql", $db);
echo "
Après installation, vous pouvez vous connecter en utilisant
testadmin/password ou testuser/password
";
}
else {
echo "
Les utilisateurs existent déjà, rien à faire.
";
}
//Verification sécurité
if(mysqli_num_rows($resultat) > 2){
}
// Import éventuel de base de test
// http://localhost/gvv2/install/?db=dusk_tests.sql
if (array_key_exists('db', $_GET)) {
echo "
Import de la base " . $_GET['db'] . "
";
mysql_import("./" . $_GET['db'], $db);
}
mysqli_close($db);
echo "le mot de passe de testuser est password.
";
echo "le mot de passe de testadmin est password.
";
echo "N'oubliez pas de les changer
";
echo '
';
$url = site_url();
echo 'vous vouvez maintenant utiliser GVV: ' . $url .'';
echo "
Fin de la procédure d'installation
";
?>