check()) { http_response_code(429); header('Retry-After: ' . $rateLimit->getResetTime()); echo '

Trop de requêtes

Réessayez dans ' . $rateLimit->getResetTime() . ' secondes.

'; exit; } $rateLimit->sendHeaders(); if (rand(1, 100) === 1) $rateLimit->cleanup(); // Collect search/filter params $searchParams = []; if (!empty($_GET['query'])) $searchParams['query'] = trim($_GET['query']); if (!empty($_GET['year'])) $searchParams['year'] = intval($_GET['year']); if (!empty($_GET['orientation'])) $searchParams['orientation'] = $_GET['orientation']; if (!empty($_GET['ap_program'])) $searchParams['ap_program'] = $_GET['ap_program']; if (!empty($_GET['keyword'])) $searchParams['keyword'] = $_GET['keyword']; $hasSearch = !empty($searchParams); $page = isset($_GET['page']) ? intval($_GET['page']) : 1; $itemsPerPage = 30; $validationError = null; try { $db = Database::getInstance(); $offset = ($page - 1) * $itemsPerPage; if ($hasSearch) { $results = $db->searchTheses($searchParams, $itemsPerPage, $offset); $totalItems = $db->countSearchResults($searchParams); $totalPages = ceil($totalItems / $itemsPerPage); } else { $results = []; $totalItems = 0; $totalPages = 0; } $years = $db->getAvailableYears(); $orientations = $db->getAllOrientations(); $apPrograms = $db->getAllAPPrograms(); $keywords = $db->getUsedTags(); // Fetch id+authors only — lean query bypassing the fat v_theses_public view $students = $db->getPublishedAuthors(); } catch (InvalidArgumentException $e) { $validationError = $e->getMessage(); $results = []; $totalItems = 0; $totalPages = 0; $years = []; $orientations = []; $apPrograms = []; $keywords = []; $students = []; } catch (Exception $e) { error_log("Search error: " . $e->getMessage()); $validationError = "Une erreur est survenue."; $results = []; $totalItems = 0; $totalPages = 0; $years = []; $orientations = []; $apPrograms = []; $keywords = []; $students = []; } $currentNav = 'repertoire'; $searchBarValue = $_GET['query'] ?? ''; ?> Répertoire – Posterg
Année
Orientation
AP
Réinitialiser

résultat 1 ? 's' : '' ?>

1): ?>

Aucun résultat pour cette recherche.

Années

Catégories

Orientation Ateliers Pluridisciplinaires

Étudiantes

$id): ?>

Mots-clés