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/aptitude-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;

$type = $_REQUEST['type'];
$time_taken_in_seconds = $_REQUEST['time_taken_in_seconds'];
$jsonDecodeQues = $_REQUEST['param'];
//$decoded = json_decode($jsonDecodeQues);
$testID = $jsonDecodeQues[1]['test_taken_id'];
$examid = $jsonDecodeQues[1]['exam_id'];
$app_status = $jsonDecodeQues[1]['app_status'];

$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 ttqt.correct_answer=ttqat.answer then 1 end) as correctQn, count(case when ttqt.correct_answer!=ttqat.answer and ttqat.answer!=0 then 1 end) as inCorrectQn, 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' ");
			$correctQn = $getTestSummary->correctQn; 
			$inCorrectQn = $getTestSummary->inCorrectQn;
			$unAttemptQn = $getTestSummary->unAttemptQn;
			$answerSelect = ($correctQn+$inCorrectQn);
			
			$wpdb->query("UPDATE $PSY_TEST_GEN_TEST_TAKEN set answer_selected='$answerSelect', correct_answer='$correctQn', wrong_answer='$inCorrectQn', 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 ttqt.correct_answer=ttqat.answer then 1 end) as correctQn, count(case when ttqt.correct_answer!=ttqat.answer and ttqat.answer!=0 then 1 end) as inCorrectQn, 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' ");
			$correctQn = $getTestSummary->correctQn; 
			$inCorrectQn = $getTestSummary->inCorrectQn;
			$unAttemptQn = $getTestSummary->unAttemptQn;
			$answerSelect = ($correctQn+$inCorrectQn);

			$updateTimeTaken = $wpdb->query("UPDATE $PSY_TEST_GEN_TEST_TAKEN set answer_selected='$answerSelect',correct_answer='$correctQn', wrong_answer='$inCorrectQn', 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);