I'm going to post here some code solutions for the pending-purgatory bug based on my guesses of what actual platform Literotica is built on. If you need help there are several authors, to my knowledge, who are willing and able...
-- Add index for faster stuck submission queries
CREATE INDEX IF NOT EXISTS idx_submissions_stuck_check
ON submissions(last_action, status, days_pending, submitted_at);
-- Add tracking column for moderation queue state
ALTER TABLE submissions
ADD COLUMN IF NOT EXISTS moderation_flag_reset_at TIMESTAMP NULL,
ADD COLUMN IF NOT EXISTS original_submission_id INT NULL;
/**
* Cleanup job for existing stuck submissions
* Run via cron daily
*/
public function cleanupStuckSubmissions($dryRun = true) {
$sql = "
SELECT s.id, s.story_id, s.user_id, s.submitted_at,
DATEDIFF(NOW(), s.submitted_at) as days_stuck
FROM submissions s
WHERE s.last_action = 'resubmit'
AND s.status = 'pending'
AND s.days_pending > 2
AND s.submitted_at < DATE_SUB(NOW(), INTERVAL 7 DAY)
";
$result = $this->db->query($sql);
$fixed = [];
while ($row = $result->fetch_assoc()) {
$fixed[] = $row;
if (!$dryRun) {
$this->repairStuckSubmission($row['id'], $row['story_id']);
}
}
return $fixed;
}
private function repairStuckSubmission($submissionId, $storyId) {
$fixSql = "
UPDATE submissions
SET status = 'submitted',
resubmit_count = 0,
status_id = NULL,
last_action = 'manual_fix',
moderation_flag_reset_at = NOW()
WHERE id = ?
";