| Current Path : /var/www/cesa.co.za/cceconvenors/ |
| Current File : /var/www/cesa.co.za/cceconvenors/markexam.php |
<?php
//ini_set('display_errors', 1);
//error_reporting(E_ALL);
session_start(); // Initialize Session data
ob_start(); // Turn on output buffering
$Questionnaire_ID = intval($_REQUEST["qid"]);
$sExamMarkingPassword = "convenorsRgr8";
if (isset($_POST["ExamSessionPwd"]) && ($_POST["ExamSessionPwd"] == $sExamMarkingPassword))
$_SESSION["ExamSessionPwd"] = md5($sExamMarkingPassword);
?>
<?php include "ewcfg7.php" ?>
<?php include "ewmysql7.php" ?>
<?php include "phpfn7.php" ?>
<?php include "CCEAssignmentsinfo.php" ?>
<?php include "userfn7.php" ?>
<?php
if (!isset($_SESSION[EW_SESSION_STATUS]) || ($_SESSION[EW_SESSION_STATUS] != "login")) {
header("Location: " . "http" . ($_SERVER["HTTPS"] == "on" ? "s" : "") . "://" . $_SERVER["HTTP_HOST"] . "/cceconvenors/login.php");
die();
}
$StudentID = intval($_REQUEST["st"]);
$conni = mysqli_connect(EW_CONN_HOST, EW_CONN_USER, EW_CONN_PASS, EW_CONN_DB);
$sql = "SELECT CCEExams.*, CCEStudents.FirstName, CCEStudents.Surname, CCEExamTiming.CCEExamTimingID,
CCEExamTiming.TimeStarted, CCEExamTiming.NewEndTime
FROM CCEExams
INNER JOIN CCEExamTiming ON (CCEExams.Questionnaire_ID=CCEExamTiming.Questionnaire_ID)
INNER JOIN CCEStudents ON (CCEExamTiming.CCEStudentID=CCEStudents.CCEStudentID)
WHERE CCEExams.Questionnaire_ID='" . $Questionnaire_ID . "' AND CCEStudents.CCEStudentID=" . $StudentID . " "
. "AND CCEExamTiming.CCEExamTimingID = " . $_REQUEST['CCEExamTimingID'];
$rec = mysqli_query($conni, $sql);
if ($row = mysqli_fetch_assoc($rec)) {
extract($row);
if (!empty($NewEndTime))
$CloseDate = $NewEndTime;
} else {
die();
}
mysqli_free_result($rec);
$bUserCanMark = CCEConvenorAuth::canMarkExam($MarkerUser, $Questionnaire_ID);
$bUserCanMark = true;
if (!$bUserCanMark) {
?>
<script language="javascript">
alert("You are not authorized to mark this exam.");
window.location.href = "http" . ($_SERVER["HTTPS"] == "on" ? "s" : "") . "://" . $_SERVER["HTTP_HOST"] . "/cceconvenors/exams.php?qid=" . $Questionnaire_ID;
</script>
<?php
// header("Location: " . "http" . ($_SERVER["HTTPS"] == "on" ? "s" : "") . "://" . $_SERVER["HTTP_HOST"] . "/cceconvenors/exams.php?qid=" . $Questionnaire_ID);
// die();
}
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the past
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); // Always modified
header("Cache-Control: private, no-store, no-cache, must-revalidate"); // HTTP/1.1
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache"); // HTTP/1.0
?>
<?php include "header.php" ?>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
<script src="https://code.jquery.com/jquery-3.3.1.min.js" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>
<link rel="stylesheet" href="/autosuggest/css/autosuggest_inquisitor.css" type="text/css" media="screen" charset="utf-8" />
<script type="text/javascript" src="/autosuggest/js/bsn.AutoSuggest_c_2.0.js"></script>
<style>
img {
max-width: 98%;
margin: auto;
}
</style>
<div class="container">
<div class="row">
<div class="col-lg-12">
<h1><?php echo htmlspecialchars($Questionnaire_Name); ?></h1>
</div></div>
<div class="row">
<div class="col-lg-10">
<h2><?php echo $FirstName . " " . $Surname; ?></h2>
</div>
<div class="col-lg-2"><a href="exams.php?qid=<?php echo $Questionnaire_ID; ?>"><b><< Return to Exam List</b></a>
</div>
</div>
<?php
$sql = "SELECT CCEExamQuestions.* FROM CCEExamQuestions
WHERE CCEExamQuestions.Questionnaire_ID='" . $Questionnaire_ID . "' AND InUse = 1
ORDER BY Section_ID, Display_Order, Question_ID";
$recQ = mysqli_query($conni, $sql);
if (isset($_POST["qid"]) && !isset($_POST["ExamSessionPwd"])) {
while ($rowQ = mysqli_fetch_assoc($recQ)) {
extract($rowQ);
if (isset($_POST["Marks_" . $Question_ID]) && strlen($_POST["Marks_" . $Question_ID]) > 0 && floatval($_POST["Marks_" . $Question_ID]) > -1) {
$sql = "REPLACE INTO CCEExamMarks (CCEStudentID, Questionnaire_ID, Question_ID, Question_Score,
DateMarked, MarkedBy, Archived, ExamTimingID)
VALUES (" . $StudentID . ", " . $Questionnaire_ID . ", " . $Question_ID . ",
" . floatval($_POST["Marks_" . $Question_ID]) . ", NOW(),
'" . $_SESSION[EW_SESSION_USER_NAME] . "',0, " . $CCEExamTimingID . ")";
} else {
$sql = "DELETE FROM CCEExamMarks WHERE CCEStudentID=" . $StudentID . "
AND Questionnaire_ID=" . $Questionnaire_ID . " AND Question_ID=" . $Question_ID . "
AND Archived=0";
}
echo $sql . '<br />';
mysqli_query($conni, $sql);
} //while
?>
<div class="alert alert-success">The marks have been allocated. You can <a href="exams.php?qid=<?php echo $Questionnaire_ID; ?>"><b><u>return to the exam list</u></b></a> now, or edit the marks below.</div>
<?php
mysqli_data_seek($recQ, 0);
}
$sql = "SELECT SUM(Question_Score) AS ExamScore FROM CCEExamMarks "
. "WHERE CCEStudentID=" . $StudentID . " AND Questionnaire_ID=" . $Questionnaire_ID . " AND Archived=0 "
. "AND ExamTimingID = " . $_REQUEST['CCEExamTimingID'];
// echo $sql;
$rec = mysqli_query($conni, $sql);
if ($row = mysqli_fetch_assoc($rec)) {
if (is_numeric($row["ExamScore"])) {
?>
<div class="alert alert-info">Current score: <?php echo $row["ExamScore"]; ?> / <?php echo $Score; ?> = <?php echo round($row["ExamScore"] / $Score * 100); ?>%</div>
<?php
}
}
if (!isset($_SESSION["ExamSessionPwd"]) || ($_SESSION["ExamSessionPwd"] != md5($sExamMarkingPassword))) {
?>
<p>Your marking session has timed out, please enter the <?php echo date("Y"); ?> exam marking password below:</p>
<form method="post" action="markexam.php">
<input type="hidden" name="qid" value="<?php echo $Questionnaire_ID; ?>">
<input type="hidden" name="st" value="<?php echo $StudentID; ?>">
<input type="hidden" name="CCEExamTimingID" value="<?php echo $_REQUEST['CCEExamTimingID']; ?>">
<input type="password" name="ExamSessionPwd">
<input type="submit" value="Start Marking">
</form>
<?php
} else {
?>
<form name="form1" method="post" action="markexam.php" enctype="multipart/form-data" id="SaveForm">
<input type="hidden" name="qid" value="<?php echo $Questionnaire_ID; ?>">
<input type="hidden" name="st" value="<?php echo $StudentID; ?>">
<input type="hidden" name="CCEExamTimingID" value="<?php echo $_REQUEST['CCEExamTimingID']; ?>">
<?php
$countMarks = 0;
while ($rowQ = mysqli_fetch_assoc($recQ)) {
extract($rowQ);
$QuestionTitle = "Question " . $QuestionTitle . " (" . $NumMarks . " mark" . ($NumMarks > 1 ? "s" : "") . ") ID: "
. $Question_ID;
$IsOptional = true;
?>
<div class="card">
<div class="card-header"><?php echo $QuestionTitle; ?>
<?php
if ($Answer_Type == "a" || $Answer_Type == "s" || $Answer_Type == "m") {
?>
<div class="float-right"><a href="#" data-toggle="modal" data-target="#Model<?php echo $Question_ID; ?>">Model Answer</a></div>
<div class="modal" tabindex="-1" role="dialog" id="Model<?php echo $Question_ID; ?>">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-body">
<p><?php echo nl2br($Model_Answer); ?></p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
</div>
</div>
</div>
</div>
<?php
}
?>
</div>
<div class="card-body">
<div class="row">
<div class="col-lg-4"><p><?php echo nl2br($Question); ?></p>
</div>
<div class="col-lg-6" id="Question_<?php echo $Question_ID; ?>_cell">
<?php
$iMarks = 0;
$sQuestion_Score = "";
$sql = "SELECT CCEExamAnswers.*, CCEExamStudentAnswers.Answer_Text AS StudentAnswer,
CCEExamMarks.Question_Score, CCEExamStudentAnswers.Respondee_ID, cea2.Answer AS MultipleChoiceStudentAnswer
FROM CCEExamAnswers
LEFT JOIN CCEExamStudentAnswers ON
(CCEExamAnswers.Question_ID=CCEExamStudentAnswers.Question_ID
AND CCEExamAnswers.Answer_ID=CCEExamStudentAnswers.Answer_ID
AND CCEExamStudentAnswers.Respondee_ID=" . $StudentID . "
AND CCEExamStudentAnswers.ExamTimingID = " . $_REQUEST['CCEExamTimingID'] . ")
LEFT JOIN CCEExamMarks ON
(CCEExamAnswers.Question_ID=CCEExamMarks.Question_ID
AND CCEExamMarks.CCEStudentID=" . $StudentID . "
AND CCEExamMarks.Archived=0
AND CCEExamMarks.ExamTimingID = " . $_REQUEST['CCEExamTimingID'] . ")
LEFT OUTER JOIN CCEExamAnswers cea2 ON CCEExamStudentAnswers.Answer_text = cea2.Answer_ID
WHERE CCEExamAnswers.Question_ID='" . $Question_ID . "' "
. " AND (CCEExamStudentAnswers.ExamTimingID = " . $_REQUEST['CCEExamTimingID'] . " OR CCEExamMarks.Question_ID IS NOT NULL)"
. " ORDER BY CCEExamStudentAnswers.Respondee_ID DESC LIMIT 0,1";
// echo 'Please ignore debug info: ' . $sql . '<br />';
$recA = mysqli_query($conni, $sql);
if ($rowA = mysqli_fetch_assoc($recA)) {
extract($rowA);
// var_dump($rowA);
// echo '<br />';
if ($Answer_Type == "m") {
$StudentAnswer = $rowA["MultipleChoiceStudentAnswer"];
} else {
$StudentAnswer = $rowA["StudentAnswer"];
}
if (empty($rowA["Respondee_ID"])) {
echo "<i>No answer given</i>";
$iMarks = 0;
$sQuestion_Score = "0";
} elseif (empty($rowA["Answer"])) {
if (strlen($StudentAnswer) == 0) {
echo "<i>No answer given</i>";
$iMarks = 0;
$sQuestion_Score == $rowA["Question_Score"];
} else {
echo nl2br($StudentAnswer);
$iMarks = floatval($rowA["Answer_Score"] + 0);
$sQuestion_Score = floatval($rowA["Question_Score"] + 0);
}
} else {
echo nl2br($StudentAnswer);
$iMarks = floatval($rowA["Answer_Score"] + 0);
$sQuestion_Score = floatval($rowA["Question_Score"] + 0);
}
} else {
$iMarks = 0;
$sQuestion_Score = "0";
echo "<i>No answer given</i>";
}
mysqli_free_result($recA);
?>
</div>
<div class="col-lg-2">
<?php
if ($Answer_Type != "m" && $Answer_Type != "s") {
?>
<input type="number" step="0.5" name="Marks_<?php echo $Question_ID; ?>" value="<?php echo $sQuestion_Score; ?>" min="0" max="<?php echo $NumMarks; ?>" lang="en">
<?php
} else {
?>
<input type="hidden" name="Marks_<?php echo $Question_ID; ?>" value="<?php echo $iMarks; ?>">
<?php
echo ($iMarks + 0);
}
$countMarks += (int) $sQuestion_Score;
// echo '<br />Counting: ' . $countMarks . '<br />';
?>
</div>
</div>
</div>
</div>
<?php
} //while questions
mysqli_free_result($recQ);
?>
<div class="row">
<div class="col-12 d-flex justify-content-center">
<input name="button" type="submit" class="btn btn-success btn-lg" id="buttonSubmit" value="Save Marks">
</div></div>
</form>
<?php
}
?>
</div>
<?php include "footer.php" ?>