Modifier un TFE
$thesis['title'],
'subtitle' => $thesis['subtitle'] ?? '',
'auteurice' => $thesis['authors'] ?? '',
'mail' => $contactInterne ?? '',
'contact_visible' => $currentContactVisible ?? '',
'synopsis' => $thesis['synopsis'] ?? '',
'tag' => $thesis['keywords'] ?? '',
'année' => $thesis['year'],
'orientation' => $thesis['orientation'],
'ap' => $thesis['ap_program'],
'finality' => $thesis['finality_type'],
'lien' => $thesis['baiu_link'] ?? '',
'contact_public' => $contactPublic ?? false,
'contact_interne' => $contactInterne ?? '',
]);
$oldFn = fn(string $key, string $default = '') =>
isset($editFormData[$key]) && !is_array($editFormData[$key])
? htmlspecialchars((string)$editFormData[$key]) : $default;
$withAutofocusFn = function (string $field, array $attrs = []) use ($autofocusField) {
if ($autofocusField === $field) $attrs['autofocus'] = true;
return $attrs;
};
// ── Shared form variables ──────────────────────────────────────────────────
$mode = 'edit';
$formAction = '/admin/actions/edit.php';
$hiddenFields = ''
. '';
$errorFieldName = $autofocusField ?? null;
$synopsisExtra = '';
$formData = $editFormData;
// Jury data
$juryPromoteur = null;
$juryPromoteurs = [];
$juryPromoteurUlb = null;
$juryPromoteursUlb = [];
$lecteursInternes = [];
$lecteursExternes = [];
foreach ($jury as $jm) {
if ($jm['role'] === 'president') {
continue;
}
if ($jm['role'] === 'promoteur') {
if (($jm['is_ulb'] ?? 0) == 1) {
$juryPromoteursUlb[] = $jm;
} else {
$juryPromoteurs[] = $jm;
}
} elseif ($jm['role'] === 'lecteur') {
if (($jm['is_external'] ?? 0) == 1) {
$lecteursExternes[] = $jm;
} else {
$lecteursInternes[] = $jm;
}
}
}
// Backwards compat: if only one, also set the scalar for simple templates
if (!empty($juryPromoteurs) && $juryPromoteur === null) {
$juryPromoteur = $juryPromoteurs[0]['name'];
}
if (!empty($juryPromoteursUlb) && $juryPromoteurUlb === null) {
$juryPromoteurUlb = $juryPromoteursUlb[0]['name'];
}
$showPromoteurUlb = true;
$promoteurUlbConditional = false;
// Licence / access — always all enabled for admin
$libreEnabled = true;
$interneEnabled = true;
$interditEnabled = true;
$generalitiesHtml = $helpFn('fieldset_generalites');
$defaultAccessTypeId = $currentAccessTypeId ?? 2;
$formData['access_type_id'] = $currentAccessTypeId;
$formData['license_id'] = $currentLicenseId;
$formData['license_custom'] = $currentRaw['license_custom'] ?? '';
$formData['cc2r'] = $currentRaw['cc2r'] ?? false;
// Optional sections
$showContact = false; // Admin: contact visibility controlled by filling 'mail' field in fieldset-tfe-info
$showBackoffice = true;
// Files: edit mode
$filesMode = 'edit';
$currentCover = $currentCover ?? null;
$currentFiles = $currentFiles ?? [];
$currentContextNote = $currentContextNote ?? null;
// Website URL from existing files
$existingWebsiteUrl = '';
$existingWebsiteLabel = '';
foreach ($currentFiles as $f) {
if ($f['file_type'] === 'website') {
$existingWebsiteUrl = $f['file_path'] ?? '';
$existingWebsiteLabel = $f['display_label'] ?? '';
break;
}
}
// Languages — either from flash repopulation or current thesis data
$formData['languages'] = $formData['languages'] ?? $currentLanguages ?? [];
// Compute "other" languages (those not in the predefined checkbox list)
$predefinedLangIds = array_column($languages, 'id');
$otherLangIds = array_diff($currentLanguages ?? [], $predefinedLangIds);
$selectedOtherLanguages = [];
if (!empty($otherLangIds)) {
$allLangs = Database::getInstance()->getAllLanguages();
$allLangMap = [];
foreach ($allLangs as $al) {
$allLangMap[(int)$al['id']] = $al['name'];
}
foreach ($otherLangIds as $lid) {
$lid = (int)$lid;
if (isset($allLangMap[$lid])) {
$selectedOtherLanguages[] = $allLangMap[$lid];
}
}
// Sort alphabetically
sort($selectedOtherLanguages, SORT_NATURAL | SORT_FLAG_CASE);
}
// Tags — either from flash repopulation or current thesis data
$keywordsStr = $thesis['keywords'] ?? '';
$currentTags = $keywordsStr !== '' ? array_map('trim', explode(',', $keywordsStr)) : [];
// If formData has tag[], use that instead
if (!empty($formData['tag']) && is_array($formData['tag'])) {
$currentTags = $formData['tag'];
}
// Formats — either from flash repopulation or current thesis data
$checkedFormats = $formData['formats'] ?? $currentFormats ?? [];
// Populate formData.formats for checkbox-list partial
$formData['formats'] = $checkedFormats;
$checkedFormatsForSiteWeb = $checkedFormats;
include APP_ROOT . '/templates/partials/form/form.php';
?>