array_map('strval', $activeFilters['years'] ?? []), 'ap' => $activeFilters['ap'] ?? [], 'or' => $activeFilters['or'] ?? [], 'fi' => $activeFilters['fi'] ?? [], 'kw' => $activeFilters['kw'] ?? [], ]; // ── Students ──────────────────────────────────────────────────────────────── $studentWorks = []; foreach ($repData['students'] as $s) { if (empty($s['authors'])) continue; foreach (explode(',', $s['authors']) as $name) { $name = trim($name); if ($name === '') continue; $studentWorks[$name][] = (int)$s['id']; } } ksort($studentWorks); // ── Shared helpers ────────────────────────────────────────────────────────── function repToggleUrl(array $sets, string $dim, string $value): string { if (in_array($value, $sets[$dim], true)) { $sets[$dim] = array_values(array_filter($sets[$dim], fn($v) => $v !== $value)); } else { $sets[$dim][] = $value; } $params = []; foreach ($sets['years'] as $v) $params[] = 'fy[]=' . urlencode((string)$v); foreach ($sets['ap'] as $v) $params[] = 'ap[]=' . urlencode($v); foreach ($sets['or'] as $v) $params[] = 'or[]=' . urlencode($v); foreach ($sets['fi'] as $v) $params[] = 'fi[]=' . urlencode($v); foreach ($sets['kw'] as $v) $params[] = 'kw[]=' . urlencode($v); $qs = implode('&', $params); return '/repertoire' . ($qs ? '?' . $qs : ''); } function repFilterEntry( array $item, string $dim, array $activeSets, bool $anyActive, bool $colHasMatch, string $hx, ): void { $val = (string)$item['value']; $isActive = in_array($val, $activeSets[$dim], true); $isFaded = $anyActive && $colHasMatch && !$item['matched'] && !$isActive; $cls = 'rep-entry' . ($isActive ? ' rep-entry--selected' : '') . ($isFaded ? ' rep-entry--faded' : ''); $url = repToggleUrl($activeSets, $dim, $val); ?>
  • 'years', 'dim' => 'years', 'heading' => 'Années'], ['dataKey' => 'ap_programs', 'dim' => 'ap', 'heading' => 'Ateliers Pluridisciplinaires'], ['dataKey' => 'orientations', 'dim' => 'or', 'heading' => 'Orientations'], ['dataKey' => 'finality_types', 'dim' => 'fi', 'heading' => 'Finalité du Master'], ['dataKey' => 'keywords', 'dim' => 'kw', 'heading' => 'Mots-clés'], ]; $colHasMatches = []; foreach ($filterColumns as $col) { $colHasMatches[$col['dim']] = !empty(array_filter( $repData[$col['dataKey']], fn($i) => $i['matched'] )); } ?>

    Étudiantes

    $c['dim'] === $colKey))[0]; ?>