From ff615ca0a151d5890d67a920c823319c158213d8 Mon Sep 17 00:00:00 2001
From: yann64
Date: Fri, 5 Jun 2026 20:01:33 +0200
Subject: [PATCH] Suppression de l'export GEDCOM
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- Routes export.source et export.recherche supprimées
- ExportController : méthodes source() et recherche() supprimées,
imports GedcomExportService/DbCompat/Releve/SourceStatus/DB retirés
- Boutons GEDCOM retirés de sources/show, releves/index et recherche/index
Co-Authored-By: Claude Sonnet 4.6
---
app/Http/Controllers/ExportController.php | 103 +---------------------
resources/views/recherche/index.blade.php | 5 --
resources/views/releves/index.blade.php | 7 +-
resources/views/sources/show.blade.php | 4 -
routes/web.php | 2 -
5 files changed, 3 insertions(+), 118 deletions(-)
diff --git a/app/Http/Controllers/ExportController.php b/app/Http/Controllers/ExportController.php
index 735f89a..f460f8e 100644
--- a/app/Http/Controllers/ExportController.php
+++ b/app/Http/Controllers/ExportController.php
@@ -3,21 +3,11 @@
namespace App\Http\Controllers;
use App\Enums\FieldType;
-use App\Enums\SourceStatus;
-use App\Models\Releve;
use App\Models\Source;
-use App\Services\GedcomExportService;
-use App\Support\DbCompat;
-use Illuminate\Http\Request;
use Illuminate\Http\Response;
-use Illuminate\Support\Facades\DB;
class ExportController extends Controller
{
- public function __construct(
- private readonly GedcomExportService $gedcom,
- ) {}
-
/** Export CSV de tous les relevés d'une source */
public function sourceCsv(Source $source): Response
{
@@ -38,8 +28,8 @@ class ExportController extends Controller
foreach ($source->releves as $releve) {
$row = [];
foreach ($fields as $field) {
- $val = $releve->data[$field->name] ?? null;
- $row[] = $this->formatCsvValue($val, $field->type);
+ $val = $releve->data[$field->name] ?? null;
+ $row[] = $this->formatCsvValue($val, $field->type);
}
fputcsv($handle, $row, ';');
}
@@ -56,95 +46,6 @@ class ExportController extends Controller
]);
}
- /** Export de tous les relevés d'une source */
- public function source(Source $source): Response
- {
- $this->authorize('view', $source);
-
- $gedcomContent = $this->gedcom->exportSource($source);
- $filename = $this->sanitizeFilename($source->nom) . '.ged';
-
- return response($gedcomContent, 200, [
- 'Content-Type' => 'text/plain; charset=UTF-8',
- 'Content-Disposition' => "attachment; filename=\"{$filename}\"",
- ]);
- }
-
- /** Export depuis les résultats de recherche (avec les mêmes filtres) */
- public function recherche(Request $request): Response
- {
- $user = auth()->user();
-
- $query = Releve::with(['source.sourceType', 'createur'])
- ->whereHas('source', function ($q) use ($user, $request) {
- if (! $user->isSectionManager()) {
- $assignedIds = $user->sourcesAssignees()->pluck('sources.id');
- $q->where(function ($sq) use ($assignedIds) {
- $sq->where('status', SourceStatus::Termine)
- ->orWhereIn('id', $assignedIds);
- });
- }
- if ($request->filled('source_type_id')) {
- $q->where('source_type_id', $request->integer('source_type_id'));
- }
- }); // $request déjà dans le use()
-
- if ($request->filled('q')) {
- $q = trim($request->get('q'));
- $like = DbCompat::like();
- $fts = DbCompat::ftsRaw();
-
- $query->where(function ($wq) use ($q, $like, $fts) {
- $wq->where('nom', $like, "%{$q}%")
- ->orWhere('prenom', $like, "%{$q}%")
- ->orWhere('date_evenement', $like, "%{$q}%");
- if ($fts) {
- $wq->orWhereRaw($fts, [$q]);
- }
- });
- }
-
- if ($request->filled('lieu_id')) {
- $rows = DB::select("
- WITH RECURSIVE descendants AS (
- SELECT id, nom FROM lieux WHERE id = ?
- UNION ALL
- SELECT l.id, l.nom FROM lieux l
- INNER JOIN descendants d ON l.lieu_parent_id = d.id
- )
- SELECT DISTINCT nom FROM descendants WHERE nom IS NOT NULL
- ", [$request->integer('lieu_id')]);
-
- $noms = collect($rows)->pluck('nom')->filter();
- if ($noms->isNotEmpty()) {
- $pattern = $noms->map(fn ($n) => preg_quote($n, '/'))->join('|');
- $query->whereRaw(DbCompat::jsonRegexRaw('data'), [$pattern]);
- }
- }
-
- if ($request->filled('annee_debut')) {
- $query->whereRaw('date_evenement >= ?', [$request->integer('annee_debut') . '-01-01']);
- }
- if ($request->filled('annee_fin')) {
- $query->whereRaw('date_evenement <= ?', [$request->integer('annee_fin') . '-12-31']);
- }
-
- $releves = $query->orderByRaw(DbCompat::nullsLast('nom'))->get();
-
- if ($releves->isEmpty()) {
- return back()->with('error', 'Aucun relevé à exporter.');
- }
-
- $titre = $request->filled('q') ? 'Recherche_' . $request->get('q') : 'Export';
- $gedcomContent = $this->gedcom->exportReleves($releves, $titre);
- $filename = $this->sanitizeFilename($titre) . '.ged';
-
- return response($gedcomContent, 200, [
- 'Content-Type' => 'text/plain; charset=UTF-8',
- 'Content-Disposition' => "attachment; filename=\"{$filename}\"",
- ]);
- }
-
private function formatCsvValue(mixed $val, FieldType $type): string
{
if ($val === null || $val === '') {
diff --git a/resources/views/recherche/index.blade.php b/resources/views/recherche/index.blade.php
index 03c0b71..54ceb05 100644
--- a/resources/views/recherche/index.blade.php
+++ b/resources/views/recherche/index.blade.php
@@ -108,11 +108,6 @@
@else
{{ number_format($total) }} relevé{{ $total > 1 ? 's' : '' }} trouvé{{ $total > 1 ? 's' : '' }}
@if(request('q')) pour « {{ request('q') }} » @endif
- —
-
- ↓ Exporter en GEDCOM
-
@endif
diff --git a/resources/views/releves/index.blade.php b/resources/views/releves/index.blade.php
index 0a362b1..dbf09e8 100644
--- a/resources/views/releves/index.blade.php
+++ b/resources/views/releves/index.blade.php
@@ -10,12 +10,7 @@
← Source
-
- ↓ GEDCOM
-
- @can('create', [App\Models\Releve::class, $source])
+@can('create', [App\Models\Releve::class, $source])
+ Nouveau relevé
diff --git a/resources/views/sources/show.blade.php b/resources/views/sources/show.blade.php
index e9d083e..b50dbeb 100644
--- a/resources/views/sources/show.blade.php
+++ b/resources/views/sources/show.blade.php
@@ -140,10 +140,6 @@
class="px-3 py-1.5 bg-white dark:bg-gray-700 border border-gray-300 dark:border-gray-600 text-gray-700 dark:text-gray-300 text-xs rounded-md hover:bg-gray-50 dark:hover:bg-gray-600">
↓ CSV
-
- ↓ GEDCOM
-
@endif
@can('create', [App\Models\Releve::class, $source])
group(function () {
Route::get('recherche', [RechercheController::class, 'index'])->name('recherche');
Route::get('carte', [CarteController::class, 'index'])->name('carte');
Route::get('carte/data', [CarteController::class, 'data'])->name('carte.data');
- Route::get('export/source/{source}', [ExportController::class, 'source'])->name('export.source');
Route::get('export/source/{source}/csv', [ExportController::class, 'sourceCsv'])->name('export.source.csv');
- Route::get('export/recherche', [ExportController::class, 'recherche'])->name('export.recherche');
Route::get('notifications', [NotificationController::class, 'index'])->name('notifications.index');
Route::post('notifications/{id}/read', [NotificationController::class, 'markAsRead'])->name('notifications.read');