prepare('DELETE FROM import_errors WHERE batch_id = ?');
$stmt->execute([$batchId]);
$feedback = sprintf('%d ligne(s) d\'erreur purgee(s) pour l\'import #%d.', $stmt->rowCount(), $batchId);
} catch (Throwable $e) {
error_log('[import_history] purge_errors: ' . $e->getMessage());
$feedback = 'Une erreur est survenue lors de la purge.';
$feedbackType = 'error';
}
}
}
}
$page = max(1, filter_input(INPUT_GET, 'page', FILTER_VALIDATE_INT) ?: 1);
$perPage = 25;
$offset = ($page - 1) * $perPage;
$totalBatches = 0;
$batches = [];
try {
$totalBatches = (int)$db->query('SELECT COUNT(*) FROM import_batches')->fetchColumn();
$stmt = $db->prepare(
'SELECT id, filename, imported_at, imported_by, status, rows_total, rows_imported, rows_rejected
FROM import_batches
ORDER BY imported_at DESC
LIMIT :limit OFFSET :offset'
);
$stmt->bindValue(':limit', $perPage, PDO::PARAM_INT);
$stmt->bindValue(':offset', $offset, PDO::PARAM_INT);
$stmt->execute();
$batches = $stmt->fetchAll(PDO::FETCH_ASSOC);
} catch (Throwable $e) {
error_log('[import_history] liste batches: ' . $e->getMessage());
$feedback = 'Impossible de charger l\'historique des imports. Consultez les journaux du serveur.';
$feedbackType = 'error';
}
$errorsByBatch = [];
$detailBatchId = filter_input(INPUT_GET, 'detail', FILTER_VALIDATE_INT);
if ($detailBatchId) {
try {
$stmt = $db->prepare(
'SELECT line_number, message, raw_line
FROM import_errors
WHERE batch_id = ?
ORDER BY line_number ASC
LIMIT 500'
);
$stmt->execute([$detailBatchId]);
$errorsByBatch = $stmt->fetchAll(PDO::FETCH_ASSOC);
} catch (Throwable $e) {
error_log('[import_history] detail erreurs: ' . $e->getMessage());
}
}
$totalPages = max(1, (int)ceil($totalBatches / $perPage));
$user = current_admin_username();
function status_badge(string $status): string
{
$map = [
'success' => 'badge-success',
'partial' => 'badge-warning',
'failed' => 'badge-error',
];
$class = $map[$status] ?? 'badge';
return '' . htmlspecialchars($status, ENT_QUOTES, 'UTF-8') . '';
}
?>
Historique des imports — NetMonster Admin
Historique des imports .ntm
Suivi en lecture seule des imports realises. La purge des erreurs d'un import est possible mais n'affecte jamais les donnees deja validees.
= htmlspecialchars($feedback, ENT_QUOTES, 'UTF-8') ?>
Imports (= $totalBatches ?>)
| # |
Fichier |
Date |
Utilisateur |
Statut |
Lignes totales |
Importees |
Rejetees |
Actions |
| = (int)$batch['id'] ?> |
= htmlspecialchars((string)$batch['filename'], ENT_QUOTES, 'UTF-8') ?> |
= htmlspecialchars((string)$batch['imported_at'], ENT_QUOTES, 'UTF-8') ?> |
= htmlspecialchars((string)$batch['imported_by'], ENT_QUOTES, 'UTF-8') ?> |
= status_badge((string)$batch['status']) ?> |
= (int)$batch['rows_total'] ?> |
= (int)$batch['rows_imported'] ?> |
= (int)$batch['rows_rejected'] ?> |
Voir erreurs
0): ?>
|
| Aucun import pour le moment. |
1): ?>
Erreurs de l'import #= (int)$detailBatchId ?>
Aucune erreur enregistree pour cet import.
| Ligne |
Message |
Contenu brut |
| = (int)$err['line_number'] ?> |
= htmlspecialchars((string)$err['message'], ENT_QUOTES, 'UTF-8') ?> |
= htmlspecialchars((string)$err['raw_line'], ENT_QUOTES, 'UTF-8') ?> |