85 lines
2.3 KiB
PHP
85 lines
2.3 KiB
PHP
<?php
|
|
/**
|
|
* SAUVEGARDE AUTO DES RÉPONSES
|
|
* Appelé en AJAX depuis passer_evaluation.php
|
|
*/
|
|
|
|
header('Content-Type: application/json');
|
|
|
|
define('APP_ROOT', dirname(__DIR__));
|
|
require_once __DIR__ . '/config/config.php';
|
|
require_once __DIR__ . '/config/database.php';
|
|
|
|
// session_start(); // Géré par config/session.php
|
|
|
|
// Vérification authentification
|
|
if (!isLoggedIn() || !isEleve()) {
|
|
echo json_encode(['success' => false, 'error' => 'Non authentifié']);
|
|
exit();
|
|
}
|
|
|
|
// $auth = new Auth(); // MIGRÉ vers SessionManager
|
|
$user = currentUser();
|
|
$db = Database::getInstance()->getConnection();
|
|
|
|
// Récupérer les données POST
|
|
$id_tentative = isset($_POST['id_tentative']) ? (int)$_POST['id_tentative'] : 0;
|
|
$id_evaluation = isset($_POST['id_evaluation']) ? (int)$_POST['id_evaluation'] : 0;
|
|
|
|
if ($id_tentative <= 0) {
|
|
echo json_encode(['success' => false, 'error' => 'Tentative invalide']);
|
|
exit();
|
|
}
|
|
|
|
// Vérifier que la tentative appartient bien à l'élève
|
|
$stmt = $db->prepare("
|
|
SELECT * FROM tentatives_eleves
|
|
WHERE id_tentative = ?
|
|
AND id_eleve = ?
|
|
AND statut = 'en_cours'
|
|
");
|
|
$stmt->execute([$id_tentative, $user['id_utilisateur']]);
|
|
$tentative = $stmt->fetch(PDO::FETCH_ASSOC);
|
|
|
|
if (!$tentative) {
|
|
echo json_encode(['success' => false, 'error' => 'Tentative introuvable ou terminée']);
|
|
exit();
|
|
}
|
|
|
|
// Extraire les réponses du POST
|
|
$reponses = [];
|
|
foreach ($_POST as $key => $value) {
|
|
if (strpos($key, 'reponse_') === 0) {
|
|
$id_question = str_replace('reponse_', '', $key);
|
|
$reponses[$id_question] = $value;
|
|
}
|
|
}
|
|
|
|
// Sauvegarder dans la BDD
|
|
try {
|
|
$stmt = $db->prepare("
|
|
UPDATE tentatives_eleves
|
|
SET reponses_json = ?,
|
|
derniere_sauvegarde = NOW()
|
|
WHERE id_tentative = ?
|
|
");
|
|
|
|
$reponses_json = json_encode($reponses, JSON_UNESCAPED_UNICODE);
|
|
$stmt->execute([$reponses_json, $id_tentative]);
|
|
|
|
echo json_encode([
|
|
'success' => true,
|
|
'message' => 'Réponses sauvegardées',
|
|
'nb_reponses' => count($reponses),
|
|
'timestamp' => date('H:i:s')
|
|
]);
|
|
|
|
} catch (Exception $e) {
|
|
error_log("Erreur sauvegarde réponses: " . $e->getMessage());
|
|
echo json_encode([
|
|
'success' => false,
|
|
'error' => 'Erreur lors de la sauvegarde'
|
|
]);
|
|
}
|
|
?>
|