@extends('layouts.app') @section('title', __('site.search_results.title')) @section('content') @php $locale = app()->getLocale(); $isRtl = $locale === 'ar'; // Fonction pour déterminer la route d'affichage function getRouteForModel($model) { if ($model instanceof \App\Models\News) { return route('news.show', $model->slug); } elseif ($model instanceof \App\Models\TropheeSportif) { return route('trophees.show', $model->slug); } elseif ($model instanceof \App\Models\Guide) { if($model->type_contenu === 'builder' && $model->builder_id) { return route('front.builder', ['id' => $model->builder_id]); } elseif($model->type_contenu === 'lien' && filter_var($model->lien, FILTER_VALIDATE_URL)) { return $model->lien; } elseif($model->type_contenu === 'lien') { return url($model->lien); } else { return route('guide.redirect', $model->id_G); } } elseif ($model instanceof \App\Models\Federation) { return route('federation.public.list', $model->id); } elseif ($model instanceof \App\Models\DescGouvr) { return route('detail_gouver', $model->id_desc); } elseif ($model instanceof \App\Models\Builder) { return route('front.builder', $model->id_builder); } elseif ($model instanceof \App\Models\BuilderContenu) { return route('front.builder', $model->id_builder_cont); } elseif ($model instanceof \App\Models\Concours) { return route('concours.show', $model->id); } elseif ($model instanceof \App\Models\Auberge) { return route('auberge.show', $model->id); } return '#'; } // Fonction pour obtenir le titre localisé // Fonction pour obtenir le titre localisé function getLocalizedTitle($model) { $locale = app()->getLocale(); if (method_exists($model, 'getLocalizedTitle')) { return $model->getLocalizedTitle(); } // Logique par défaut pour chaque modèle if ($model instanceof \App\Models\News) { return $model->title; } elseif ($model instanceof \App\Models\TropheeSportif) { return trans_field($model, 'title'); } elseif ($model instanceof \App\Models\Guide) { return trans_field($model, 'titre'); } elseif ($model instanceof \App\Models\Federation) { $field = 'nom_' . $locale; return $model->$field ?? $model->nom_ar; } elseif ($model instanceof \App\Models\DescGouvr) { // Pour DescGouvr, on peut utiliser le nom du gouvernorat if ($model->gouvernorat) { $field = 'nom_' . $locale; return $model->gouvernorat->$field ?? $model->gouvernorat->nom_ar; } return __('site.result.desc_gouvr'); } elseif ($model instanceof \App\Models\Builder) { $field = 'titre_' . $locale; return $model->$field ?? $model->titre_ar; } elseif ($model instanceof \App\Models\BuilderContenu) { $field = 'titre_' . $locale; $title = $model->$field ?? $model->titre_ar ?? ''; // Si le titre est vide, essayez d'extraire un titre du contenu if (empty($title)) { $textField = 'text_' . $locale; $content = $model->$textField ?? ''; // Extraire le premier paragraphe ou titre if (preg_match('/]*>(.*?)<\/h[1-6]>/i', $content, $matches)) { $title = strip_tags($matches[1]); } elseif (preg_match('/]*>(.*?)<\/p>/i', $content, $matches)) { $title = Str::limit(strip_tags($matches[1]), 50); } } return !empty($title) ? $title : __('site.result.builder'); } elseif ($model instanceof \App\Models\Concours) { $field = 'titre_' . $locale; return $model->$field ?? $model->titre_ar; } elseif ($model instanceof \App\Models\Auberge) { $field = 'nom_' . $locale; return $model->$field ?? $model->nom_ar; } return $model->title ?? $model->name ?? __('site.result.no_title'); } // Fonction pour obtenir la description localisée function getLocalizedDescription($model) { $locale = app()->getLocale(); if (method_exists($model, 'getLocalizedDescription')) { return $model->getLocalizedDescription(); } // Logique par défaut if ($model instanceof \App\Models\News) { return Str::limit(strip_tags($model->content ?? ''), 150); } elseif ($model instanceof \App\Models\TropheeSportif) { $field = 'content_' . $locale; return Str::limit(strip_tags($model->$field ?? ''), 150); } elseif ($model instanceof \App\Models\Guide) { return __('site.result.guide'); } elseif ($model instanceof \App\Models\Federation) { return $model->email ?? __('site.result.federation'); } elseif ($model instanceof \App\Models\DescGouvr) { $field = 'desc1_' . $locale; return Str::limit(strip_tags($model->$field ?? ''), 150); } elseif ($model instanceof \App\Models\Builder) { return __('site.result.builder'); } elseif ($model instanceof \App\Models\BuilderContenu) { $field = 'text_' . $locale; $content = $model->$field ?? ''; // Nettoyer le contenu HTML $content = cleanHtmlContent($content); // Si le contenu nettoyé est vide, vérifier les autres champs if (empty($content)) { // Essayer d'extraire le titre ou autre information utile $titleField = 'titre_' . $locale; $title = $model->$titleField ?? $model->titre_ar ?? ''; if (!empty($title)) { return Str::limit(strip_tags($title), 150); } } return Str::limit($content, 150); } elseif ($model instanceof \App\Models\Concours) { return __('site.result.concours'); } elseif ($model instanceof \App\Models\Auberge) { $field = 'description_' . $locale; return Str::limit(strip_tags($model->$field ?? ''), 150); } return ''; } // Fonction pour nettoyer le contenu HTML function cleanHtmlContent($html) { if (empty($html)) { return ''; } // D'abord, supprimer les balises @endsection