getAvailableYears(); if ($year) { $itemsToLoad = $db->searchTheses(['year' => $year], $itemsPerPage, $offset); $totalItems = $db->countSearchResults(['year' => $year]); } elseif ($isDefaultView) { $latestYear = $db->getLatestPublishedYear(); $itemsToLoad = $db->getLatestYearTheses($itemsPerPage); $totalItems = count($itemsToLoad); // no pagination on default view } else { $itemsToLoad = $db->getPublishedTheses($itemsPerPage, $offset); $totalItems = $db->countPublishedTheses(); } $totalPages = $isDefaultView ? 1 : (int)ceil($totalItems / $itemsPerPage); // Batch-load cover images for theses that have no banner_path $coverMap = []; if (!empty($itemsToLoad)) { $needCover = array_column( array_filter($itemsToLoad, fn($t) => empty($t['banner_path'])), 'id' ); if (!empty($needCover)) { $ph = implode(',', array_fill(0, count($needCover), '?')); $cStmt = $db->getConnection()->prepare(" SELECT thesis_id, file_path FROM thesis_files WHERE file_type = 'cover' AND thesis_id IN ($ph) "); $cStmt->execute($needCover); foreach ($cStmt->fetchAll() as $row) { $coverMap[$row['thesis_id']] = $row['file_path']; } } } } catch (Exception $e) { error_log("Error loading theses: " . $e->getMessage()); $itemsToLoad = []; $totalPages = 0; $availableYears = []; $totalItems = 0; $latestYear = null; $isDefaultView = false; $coverMap = []; } $currentNav = ''; ?> Posterg
Année : ✕ Réinitialiser
Découvrez les TFE de — sélection aléatoire
" class="card-link">
<?= htmlspecialchars($item['title']) ?>

Aucun mémoire trouvé.

1): ?>
« / »