-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsetup.php
More file actions
116 lines (105 loc) · 4.29 KB
/
Copy pathsetup.php
File metadata and controls
116 lines (105 loc) · 4.29 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
<?php
/**
* ============================================================
* LMS - Learning Management System
* UE INF222
* Auteur: BONGKEM HERODIA
* Matricule: 24F2986
* Description: Script d'initialisation de la base de données
* Exécuter une seule fois pour configurer le LMS
* ============================================================
*/
echo "============================================\n";
echo " LMS - Initialisation de la base de données\n";
echo " UE INF222 — BONGKEM HERODIA (24F2986)\n";
echo "============================================\n\n";
try {
// Connexion à MariaDB/MySQL (sans base de données)
$pdo = new PDO("mysql:host=localhost;charset=utf8mb4", "lms_user", "lms_password_24F2986", [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
]);
// Créer la base de données si elle n'existe pas
$pdo->exec("CREATE DATABASE IF NOT EXISTS lms_db DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci");
$pdo->exec("USE lms_db");
echo "[1/5] Base de données 'lms_db' prête.\n";
// Importer le fichier SQL (schéma + tables)
$sqlFile = __DIR__ . '/sql/lms_database.sql';
if (!file_exists($sqlFile)) {
throw new Exception("Fichier SQL introuvable : $sqlFile");
}
$sql = file_get_contents($sqlFile);
// Supprimer les lignes CREATE DATABASE et USE (déjà fait ci-dessus)
$sql = preg_replace('/^CREATE DATABASE.*$/m', '', $sql);
$sql = preg_replace('/^USE\s+`?lms_db`?;?$/mi', '', $sql);
// Exécuter chaque instruction séparément
$statements = array_filter(array_map('trim', explode(';', $sql)));
$tablesCreated = 0;
foreach ($statements as $stmt) {
// Supprimer les commentaires SQL (lignes commençant par --)
$stmt = preg_replace('/^\s*--.*$/m', '', $stmt);
$stmt = trim($stmt);
if (!empty($stmt)) {
try {
$pdo->exec($stmt);
$tablesCreated++;
} catch (PDOException $e) {
// Ignorer les erreurs "table already exists" (42S01)
if (strpos($e->getMessage(), 'already exists') === false) {
echo " Attention: " . $e->getMessage() . "\n";
}
}
}
}
echo "[2/5] Tables créées/importées ($tablesCreated requêtes exécutées).\n";
// Créer les utilisateurs de test avec des mots de passe hashés
echo "[3/5] Création des utilisateurs de test...\n";
$utilisateurs = [
[
'nom' => 'Kamga',
'prenom' => 'Paul',
'email' => 'promoteur@lms.com',
'mdp' => password_hash('promoteur123', PASSWORD_DEFAULT),
'role' => 'promoteur'
],
[
'nom' => 'Mbala',
'prenom' => 'Jean',
'email' => 'enseignant@lms.com',
'mdp' => password_hash('enseignant123', PASSWORD_DEFAULT),
'role' => 'enseignant'
],
[
'nom' => 'Ngo',
'prenom' => 'Marie',
'email' => 'etudiant@lms.com',
'mdp' => password_hash('etudiant123', PASSWORD_DEFAULT),
'role' => 'etudiant'
]
];
foreach ($utilisateurs as $u) {
$stmt = $pdo->prepare("
INSERT IGNORE INTO utilisateurs (nom, prenom, email, mot_de_passe, role)
VALUES (:nom, :prenom, :email, :mdp, :role)
");
$stmt->execute([
':nom' => $u['nom'],
':prenom' => $u['prenom'],
':email' => $u['email'],
':mdp' => $u['mdp'],
':role' => $u['role']
]);
echo " - {$u['prenom']} {$u['nom']} ({$u['email']}) — {$u['role']}\n";
}
echo "\n[5/5] Initialisation terminée !\n\n";
echo "============================================\n";
echo " COMPTES DE TEST CRÉÉS :\n";
echo "--------------------------------------------\n";
echo " Promoteur : promoteur@lms.com / promoteur123\n";
echo " Enseignant : enseignant@lms.com / enseignant123\n";
echo " Étudiant : etudiant@lms.com / etudiant123\n";
echo "============================================\n\n";
echo "Accédez au LMS via : http://localhost/TPINF222/\n";
} catch (PDOException $e) {
echo "ERREUR : " . $e->getMessage() . "\n";
echo "Assurez-vous que MySQL/MariaDB est en cours d'exécution.\n";
}