Add thesis status column for two-phase commit lifecycle tracking

This commit is contained in:
Pontoporeia
2026-06-11 12:09:43 +02:00
parent 11a6f6a9f2
commit f4a3e26901
5 changed files with 47 additions and 7 deletions
+12 -3
View File
@@ -93,13 +93,14 @@ class ThesisCreateController
* recapitulatif.php?id=<n>. On validation or DB failure, throws an Exception
* (caller must flash the message and redirect back to the form).
*
* Execution order:
* Two-phase execution:
* 1. Validate + sanitise POST fields
* 2. Find/create author record
* 3. INSERT thesis row + link author (inside transaction)
* 3. INSERT thesis row (status='draft') + link author (inside transaction)
* 4. Link jury, languages, formats, tags (inside transaction)
* 5. COMMIT
* 5. COMMIT (thesis visible only as draft)
* 6. Handle file uploads: cover, thesis files (outside transaction)
* 7. UPDATE status to 'active' (confirms file operations succeeded)
*
* @param array $post Sanitised $_POST array.
* @param array $files $_FILES array.
@@ -226,6 +227,14 @@ class ThesisCreateController
// ── 6. Website URL — stored as thesis_files row ──────────────────────
$this->handleWebsiteUrl($thesisId, $post);
// ── 7. Two-phase commit: mark submission complete ──────────────────
// The thesis was committed as status='draft' before file operations.
// Now that all files are safely in place, promote to 'active'.
// If any file operation had thrown, the draft would remain orphaned
// for the periodic cleanup job (just cleanup-drafts).
$this->db->setThesisStatus($thesisId, 'active');
error_log("[ThesisCreate] ACTIVE — thesis_id=$thesisId | all file operations succeeded");
return $thesisId;
}