Fix edit form: is_published reset, contact decoupling, note label, author name case

- Fix #1: Add is_published to getThesisRawFields() SELECT so the publish
  checkbox stays checked when editing an already-published TFE.
- Fix #2: Rename 'Note contextuelle' → 'Note contextuelle relative à
  soutenance' in all templates and StudentEmail.
- Fix #3: Update findOrCreateAuthor to also UPDATE the author name when
  a record is found by name (fixes inability to capitalise names).
- Fix #4/#5: Decouple contact_interne (private author email) from
  contact_visible (public contact on TFE page). Add migration 037 to
  add contact_visible TEXT column to theses table and rebuild
  v_theses_full view. Update all controllers, templates, and DB methods
  to treat them independently.
- Fix #6: Investigated libre→interne restriction — no code barrier
  found; likely resolved by is_published fix.
This commit is contained in:
Pontoporeia
2026-06-10 00:17:00 +02:00
parent 3d524226a1
commit 3016c199bd
15 changed files with 164 additions and 37 deletions
+8 -5
View File
@@ -1037,8 +1037,8 @@ class Database
$cleanEmail = null; // don't steal another author's email
}
}
$updateStmt = $this->pdo->prepare('UPDATE authors SET email = ?, show_contact = ? WHERE id = ?');
$updateStmt->execute([$cleanEmail, $showContact ? 1 : 0, $author['id']]);
$updateStmt = $this->pdo->prepare('UPDATE authors SET name = ?, email = ?, show_contact = ? WHERE id = ?');
$updateStmt->execute([$name, $cleanEmail, $showContact ? 1 : 0, $author['id']]);
return $author['id'];
}
@@ -2007,7 +2007,7 @@ class Database
public function getThesisRawFields(int $thesisId): ?array
{
$stmt = $this->pdo->prepare(
'SELECT license_id, license_custom, access_type_id, context_note, remarks, jury_points, exemplaire_baiu, exemplaire_erg, cc2r FROM theses WHERE id = ? LIMIT 1'
'SELECT license_id, license_custom, access_type_id, context_note, contact_visible, remarks, jury_points, exemplaire_baiu, exemplaire_erg, cc2r, is_published FROM theses WHERE id = ? LIMIT 1'
);
$stmt->execute([$thesisId]);
$row = $stmt->fetch();
@@ -2140,6 +2140,7 @@ class Database
finality_id = ?,
synopsis = ?,
context_note = ?,
contact_visible = ?,
baiu_link = ?,
license_id = ?,
license_custom = ?,
@@ -2170,6 +2171,7 @@ class Database
$finality,
$data['synopsis'],
!empty($data['context_note']) ? $data['context_note'] : null,
!empty($data['contact_visible']) ? $data['contact_visible'] : null,
!empty($data['baiu_link']) ? $data['baiu_link'] : null,
$license,
!empty($data['license_custom']) ? $data['license_custom'] : null,
@@ -2215,7 +2217,7 @@ class Database
INSERT INTO theses (
identifier, title, subtitle, year,
orientation_id, ap_program_id, finality_id,
synopsis, context_note,
synopsis, context_note, contact_visible,
baiu_link, license_id, license_custom,
access_type_id,
objet,
@@ -2224,7 +2226,7 @@ class Database
exemplaire_baiu, exemplaire_erg,
cc2r,
submitted_at
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, 0, ?, ?, ?, ?, ?, CURRENT_TIMESTAMP)
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, 0, ?, ?, ?, ?, ?, CURRENT_TIMESTAMP)
');
$validObjet = ['tfe', 'thèse', 'frart'];
@@ -2246,6 +2248,7 @@ class Database
$finality ? (int)$finality : null,
$data['synopsis'],
!empty($data['context_note']) ? $data['context_note'] : null,
!empty($data['contact_visible']) ? $data['contact_visible'] : null,
!empty($data['baiu_link']) ? $data['baiu_link'] : null,
$license ? (int)$license : null,
!empty($data['license_custom']) ? $data['license_custom'] : null,