prepare('SELECT * FROM questionnaire WHERE questionnaireID = :id'); $qn->execute([':id' => $qnID]); $questionnaire = $qn->fetch(PDO::FETCH_ASSOC); if (!$questionnaire) { qdb_discard($tmpDb, $lockFp); json_error('NOT_FOUND', 'Questionnaire not found', 404); } $ctx = qdb_export_questionnaire_context($pdo, $qnID); $questions = $ctx['questions']; $resultColumns = $ctx['resultColumns']; $optionTextMap = $ctx['optionTextMap']; if ($allVersions) { $rows = qdb_export_all_versions_rows($pdo, $qnID, $questions, $resultColumns, $optionTextMap, $tokenRec); qdb_discard($tmpDb, $lockFp); $safeName = qdb_export_safe_basename($questionnaire['name']); $filename = $safeName . '_all_versions_' . date('Y-m-d') . '.csv'; header('Content-Type: text/csv; charset=UTF-8'); header('Content-Disposition: attachment; filename="' . $filename . '"'); echo qdb_export_rows_to_csv_string($rows, qdb_export_all_versions_csv_fallback_header($resultColumns)); exit; } $rows = qdb_export_current_rows($pdo, $qnID, $questions, $resultColumns, $optionTextMap, $tokenRec); qdb_discard($tmpDb, $lockFp); $safeName = qdb_export_safe_basename($questionnaire['name']); $filename = $safeName . '_v' . $questionnaire['version'] . '.csv'; header('Content-Type: text/csv; charset=UTF-8'); header('Content-Disposition: attachment; filename="' . $filename . '"'); echo qdb_export_rows_to_csv_string($rows, qdb_export_current_csv_fallback_header($resultColumns));