HEX
Server: Apache/2.4.58 (Ubuntu)
System: Linux ip-172-31-18-78 6.17.0-1017-aws #17~24.04.1-Ubuntu SMP Tue May 26 21:09:53 UTC 2026 aarch64
User: ubuntu (1000)
PHP: 8.2.31
Disabled: NONE
Upload Files
File: /var/www/selfanalyse/self-strength-test/test_save.php
<?php
include_once '../wp-config.php';

# test taken msg
include_once '../wp-content/plugins/psychometrics/api/psy_mail_sms_functions.php';

global $wpdb;
$PSY_EXAMS = $wpdb->prefix . PSY_EXAMS;
$PSY_USERS_DETAILS = $wpdb->prefix . PSY_USERS_DETAILS;
$PSY_SP_QUESTION = $wpdb->prefix . PSY_SP_QUESTION;
$PSY_TEST_GEN_TEST_TAKEN = $wpdb->prefix . PSY_TEST_GEN_TEST_TAKEN;
$PSY_TEST_GEN_TEST_TAKEN_QUESTION_ANSWER = $wpdb->prefix . PSY_TEST_GEN_TEST_TAKEN_QUESTION_ANSWER;

# get cuurent user
global $current_user;
$user_id = $current_user->ID;

$json = file_get_contents('php://input');
$response = json_decode($json);

$type = $response->type;
$time_taken_in_seconds = $response->time_taken_in_seconds;
$jsonDecodeQues = $response->param;
$firstArray = current((array)$response->param);
$testID = $firstArray->test_taken_id;

$statusArray = array();
$checkTestExist = $wpdb->get_var("SELECT count(*) from $PSY_TEST_GEN_TEST_TAKEN_QUESTION_ANSWER where test_taken_id='$testID'");

# student name
$user_name = $wpdb->get_var("SELECT first_name FROM $PSY_USERS_DETAILS where user_id='$user_id'");

# get exam name
$examName = $wpdb->get_var("SELECT e.category_name FROM $PSY_TEST_GEN_TEST_TAKEN as t INNER JOIN $PSY_EXAMS as e on e.exam_category_id=t.exam_category_id WHERE t.test_taken_id='$testID'");

if ($checkTestExist > 0) {
	foreach ($jsonDecodeQues as $quesAr) {
		$q_no = $quesAr->q_no;
		$question_id = $quesAr->question_id;
		$test_taken_id = $quesAr->test_taken_id;
		$subject_id = $quesAr->subject_id;
		$module_id = $quesAr->module_id;
		$answer = $quesAr->answer;
		$entered_time = $quesAr->entered_time;
		$time_taken = $quesAr->time_taken;
		$tag_status = $quesAr->tag_status;

		if ($entered_time == '0') {
			$e_time = 'NULL';
			$subquery = "ques_start_time=$e_time";
		} else {
			$e_time = $entered_time;
			$subquery = "ques_start_time='$e_time'";
		}
		if ($time_taken == '0') {
			$t_time = 'NULL';
			$subquery2 = "ques_end_time=$t_time";
		} else {
			$t_time = $time_taken;
			$subquery2 = "ques_end_time='$t_time'";
		}

		$updateTestQuestion = $wpdb->query("UPDATE $PSY_TEST_GEN_TEST_TAKEN_QUESTION_ANSWER set answer='$answer', ques_status='$tag_status',  $subquery, $subquery2 where test_taken_id='$test_taken_id' and test_question_id='$question_id'");
	}

	if ($type == 'complete') {

		$curDate = date('Y-m-d H:i:s');
		$getTestSummary = $wpdb->get_row("SELECT count(case when ttqat.!=0 then 1 end) as answerSelect, count(case when ttqat.answer=0 then 1 end) as unAttemptQn from $PSY_TEST_GEN_TEST_TAKEN_QUESTION_ANSWER as ttqat Inner join $PSY_SP_QUESTION as ttqt on ttqt.question_id = ttqat.test_question_id where ttqat.test_taken_id='$testID' ");
		$unAttemptQn = $getTestSummary->unAttemptQn;
		$answerSelect = $getTestSummary->answerSelect;

		$wpdb->query("UPDATE $PSY_TEST_GEN_TEST_TAKEN set answer_selected='$answerSelect', unattempt_answer='$unAttemptQn', time_taken_in_seconds='$time_taken_in_seconds', status='Y', finish_date='$curDate' where test_taken_id='$testID'");

		$get_subject = $wpdb->get_results("SELECT count(test_question_id) as total_mark,subject_id from $PSY_TEST_GEN_TEST_TAKEN_QUESTION_ANSWER where test_taken_id='$testID' group by subject_id");

		# send msg on test completion
		$examNamenew = str_replace('Test','',$examName);
		sendTestakenSms('9873224446', $user_name, $examNamenew);
	} else if ($type != 'complete') {

		$getTestSummary = $wpdb->get_row("SELECT count(case when ttqat.!=0 then 1 end) as answerSelect, count(case when ttqat.answer=0 then 1 end) as unAttemptQn from $PSY_TEST_GEN_TEST_TAKEN_QUESTION_ANSWER as ttqat Inner join $PSY_SP_QUESTION as ttqt on ttqt.question_id = ttqat.test_question_id where ttqat.test_taken_id='$testID' ");
		$unAttemptQn = $getTestSummary->unAttemptQn;
		$answerSelect = $getTestSummary->answerSelect;

		$updateTimeTaken = $wpdb->query("UPDATE $PSY_TEST_GEN_TEST_TAKEN set answer_selected='$answerSelect', unattempt_answer='$unAttemptQn', time_taken_in_seconds='$time_taken_in_seconds',status='N' where test_taken_id='$testID'");
	}

	$statusArray[] = array('type_test' => $type, 'status' => 'success', 'test_taken_id' => $testID);
} else {
	$statusArray[] = array('type_test' => $type, 'status' => 'fail', 'test_taken_id' => $testID);
}
echo json_encode($statusArray);