| Current Path : /var/www/cesa.co.za/cesanet/ |
| Current File : /var/www/cesa.co.za/cesanet/v3_feedback_submit.php |
<?php
include("inc_functions.php");
header('Content-Type: application/json');
if (!isset($_SESSION["StudentID"]) || empty($_SESSION["StudentID"]) || $_SESSION["StudentID"] == null) {
echo json_encode(array('success' => false, 'error' => 'Not authenticated'));
exit;
}
if (!CurrentStudent()) {
echo json_encode(array('success' => false, 'error' => 'Only available to current students'));
exit;
}
$apiBaseUrl = getenv('CESA_V3_API_BASE_URL');
if (empty($apiBaseUrl)) {
echo json_encode(array('success' => false, 'error' => 'Missing CESA_V3_API_BASE_URL'));
exit;
}
$apiBaseUrl = rtrim($apiBaseUrl, '/');
$formId = isset($_POST['form_id']) ? trim((string) $_POST['form_id']) : '';
if ($formId === '') {
echo json_encode(array('success' => false, 'error' => 'Missing form_id'));
exit;
}
$formCompleted = isset($_POST['form_completed']) && is_array($_POST['form_completed']) ? $_POST['form_completed'] : array();
// Forward as application/x-www-form-urlencoded to match Symfony request parsing.
$payload = http_build_query(array('form_completed' => $formCompleted), '', '&');
$submitEndpoint = $apiBaseUrl . '/api/external/forms/' . rawurlencode($formId) . '/submit';
$submitResult = Utils::curlRequest(
$submitEndpoint,
'POST',
$payload,
array(
'Accept: application/json',
'Content-Type: application/x-www-form-urlencoded'
),
10,
30
);
if (!empty($submitResult['error'])) {
echo json_encode(array('success' => false, 'error' => (string) $submitResult['error']));
exit;
}
if (intval($submitResult['http_code']) < 200 || intval($submitResult['http_code']) >= 300) {
echo json_encode(array(
'success' => false,
'error' => 'V3 submit HTTP ' . intval($submitResult['http_code']),
'response' => (string) ($submitResult['response'] ?? ''),
));
exit;
}
$decoded = json_decode((string) ($submitResult['response'] ?? ''), true);
if (!is_array($decoded) || empty($decoded['success'])) {
echo json_encode(array('success' => false, 'error' => 'Invalid v3 submit response'));
exit;
}
$assignmentObj = new CCEAssignment($sqlf);
$assignmentId = $assignmentObj->getAssignmentIdByFeedbackFormId(
intval($_SESSION["StudentID"]),
$formId
);
$studentAssignmentObj = new CCEStudentAssignment($sqlf);
if ($assignmentId > 0) {
$studentAssignmentObj->storeFeedbackCompletionForStudent(
intval($_SESSION["StudentID"]),
$assignmentId,
$formId
);
}
echo json_encode(array(
'success' => true,
'form_completed_id' => $decoded['form_completed_id'] ?? null,
));