Your IP : 216.73.217.79


Current Path : /var/www/cesa.co.za/cesanet/
Upload File :
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,
));