コード例 #1
0
 function JQ_NextQuestion()
 {
     global $JLMS_DB, $my;
     $JLMS_CONFIG =& JLMSFactory::getConfig();
     $ret_str = '';
     $quiz_id = intval(mosGetParam($_REQUEST, 'quiz', 0));
     $inside_lp = intval(mosGetParam($_REQUEST, 'inside_lp', 0));
     $QA = new JLMS_quiz_API($quiz_id, $inside_lp);
     if (!$QA->quiz_valid()) {
         return '';
     }
     $toolbar_no_a = $QA->quiz_Get_NoAtToolbar();
     //-----------------
     $resume_id = intval(mosGetParam($_REQUEST, 'resume_id', 0));
     if ($resume_id) {
         $stu_quiz_id = $resume_id;
     } else {
         $stu_quiz_id = intval(mosGetParam($_REQUEST, 'stu_quiz_id', 0));
     }
     //-----------------
     $last_question = intval(mosGetParam($_REQUEST, 'last_question', 0));
     //echo $last_question; die;
     if ($last_question || $last_question == -1) {
         if ($last_question > 0) {
             $quest_id = $last_question;
             $query = "SELECT c_score FROM #__lms_quiz_r_student_question WHERE c_question_id = '" . $quest_id . "' AND c_stu_quiz_id = '" . $stu_quiz_id . "'";
             $JLMS_DB->setQuery($query);
             $resume_quest_score = $JLMS_DB->LoadResult();
         } else {
             // TODO: resume will not work for entirely GQP/QP quizzes; last quetion should be found in student_quiz_pool instead of quiz_question table !!!
             // 03Nov2009: this section is executed if learner have started the quiz but haven't answered any question. So, we need to gat 1st quiz question here and show it.
             //				but we can't get it from quiz_t_question table, because our quizzes are QP\GQP-based
             // 03Nov2009: commented by DEN. will make $quest_id = -1; here and will extract 1st question after generating QP questions list
             //
             // TODO: if quiz resume -> resume all learner questions from student_quiz_pool
             /*$query = "SELECT c_id FROM #__lms_quiz_t_question WHERE c_quiz_id = '".$quiz_id."' and published = 1 ORDER BY ordering desc LIMIT 1";
             		$JLMS_DB->setQuery($query);
             		$quest_id = $JLMS_DB->LoadResult();*/
             $quest_id = -1;
         }
     } else {
         $quest_id = intval(mosGetParam($_REQUEST, 'quest_id', 0));
     }
     //-----------------
     $unique_id = mosGetParam($_REQUEST, 'unique_id', '');
     if ($unique_id) {
         $user_unique_id = $unique_id;
     } else {
         $user_unique_id = strval(mosGetParam($_REQUEST, 'user_unique_id', ''));
     }
     $temp_quest_id = $quest_id;
     // deprecated ????
     //-----------------
     //$answer = strval( mosGetParam( $_REQUEST, 'answer', '' ) );
     $answer = strval(isset($_REQUEST['answer']) ? $_REQUEST['answer'] : '');
     $answer = get_magic_quotes_gpc() ? stripslashes($answer) : $answer;
     $QA->set('stu_quiz_id', $stu_quiz_id);
     $QA->set('user_unique_id', $user_unique_id);
     $QA->quiz_ProcessStartData();
     if ($QA->start_valid() && $quest_id) {
         $quiz = $QA->quiz_data;
         // temporary for compatibility
         $quiz_params = new JLMSParameters($QA->get_qvar('params'));
         if ($QA->time_is_up()) {
             return JLMS_quiz_ajax_class::JQ_TimeIsUp($quiz);
         }
         # commented 25 April 2007 by DEN
         # We could remove this unnecesary query and find all neede information about question in $q_data;
         /* // get question type
         		/$query = "SELECT c_type from #__lms_quiz_t_question WHERE c_id = '".$quest_id."'";
         		$JLMS_DB->SetQuery( $query );
         		$qtype = $JLMS_DB->LoadResult();*/
         /* insert results to the Database */
         $q_data = $QA->quiz_Get_QuestionList();
         // 25 April 2007 (DEN) We need this var here (Early it was declared after 'switch')
         /* * * * * * * (TIP) 25 April 2007 (DEN)
          * In $q_data array question_type NEVER will be 20 (pool question)
          * because in function 'quiz_Get_QuestionList()' of 'JLMS_quiz_API' class
          * we've changed 20 type to the actual type of pool question
          */
         if ($quest_id == -1) {
             if (isset($q_data[0]) && isset($q_data[0]->c_id) && $q_data[0]->c_id) {
                 $quest_id = $q_data[0]->c_id;
             } else {
                 return '';
             }
         }
         $is_quest_exists = false;
         $qtype = 0;
         $c_pool_quest = 0;
         foreach ($q_data as $qd) {
             if ($qd->c_id == $quest_id) {
                 $is_quest_exists = true;
                 $qtype = $qd->c_type;
                 $c_pool_quest = $qd->c_pool;
                 $c_pool_quest_gqp = $qd->c_pool_gqp;
                 $quest_params = new JLMSParameters($qd->params);
                 break;
             }
         }
         if (!$is_quest_exists) {
             return '';
         }
         /* 25 April 2007 (DEN)
          * These vars are using for compatibility with Question Pool
          * (We should get answer-data for pool question, but record to DB answers for current question)
          *
          * - If current question type is 20 (question is added from pool), then we should process answers
          *   for question from pool; but id for answers we should use current
          */
         $proc_qtype = $qtype;
         $proc_quest_id = $quest_id;
         //if ($qtype == 20) {
         if ($c_pool_quest) {
             /* 24 April 2007 (pool question)
              * We must change vars $qtype and $quest_id to the actual vars (hmmm...? )
              */
             /*$query = "SELECT * FROM #__lms_quiz_t_question WHERE c_id = $c_pool_quest";
             		$JLMS_DB->setQuery($query);
             		$pool_quest = $JLMS_DB->LoadObject();
             		if (is_object($pool_quest)) {
             			$proc_qtype = $pool_quest->c_type;//$qtype;
             			$proc_quest_id = $pool_quest->c_id;//$quest_id;
             		} else {
             			return '';
             		}*/
             $proc_quest_id = $c_pool_quest;
         }
         if ($c_pool_quest_gqp) {
             $proc_quest_id = $c_pool_quest_gqp;
         }
         $is_correct = 0;
         $is_no_attempts = 0;
         if (!$resume_id) {
             //echo $proc_qtype; die;
             switch ($proc_qtype) {
                 case 1:
                 case 3:
                 case 12:
                     $query = "SELECT a.c_point, b.c_id, a.c_attempts FROM #__lms_quiz_t_question as a, #__lms_quiz_t_choice as b WHERE a.c_id = '" . $proc_quest_id . "' and b.c_question_id = a.c_id and b.c_right = '1'";
                     $JLMS_DB->SetQuery($query);
                     $ddd = $JLMS_DB->LoadObjectList();
                     $c_quest_score = 0;
                     $c_all_attempts = 1;
                     $is_avail = 1;
                     if (count($ddd)) {
                         if ($ddd[0]->c_id == $answer) {
                             $c_quest_score = $ddd[0]->c_point;
                             $is_correct = 1;
                         }
                         if (isset($ddd[0]->c_attempts)) {
                             $c_all_attempts = $ddd[0]->c_attempts;
                         }
                     }
                     $c_quest_cur_attempt = 0;
                     $query = "SELECT c_id, c_attempts FROM #__lms_quiz_r_student_question WHERE c_stu_quiz_id = '" . $stu_quiz_id . "' and c_question_id = '" . $quest_id . "'";
                     $JLMS_DB->SetQuery($query);
                     $c_tmp = $JLMS_DB->LoadObjectList();
                     if (count($c_tmp)) {
                         $c_quest_cur_attempt = $c_tmp[0]->c_attempts;
                         if ($ddd[0]->c_attempts > 0 && $c_quest_cur_attempt >= $c_all_attempts && $c_all_attempts) {
                             $ret_str .= "\t" . '<task>no_attempts</task>' . "\n";
                             $toolbar_code = JLMS_ShowToolbar($toolbar_no_a);
                             $toolbar_code = str_replace('"components/com_joomla_lms', '"' . $JLMS_CONFIG->get('live_site') . '/components/com_joomla_lms', $toolbar_code);
                             $ret_str .= "\t" . '<quiz_menu><![CDATA[' . $toolbar_code . ']]></quiz_menu>' . "\n";
                             $is_avail = 0;
                             $is_no_attempts = 1;
                         }
                         if ($is_avail) {
                             $query = "DELETE FROM #__lms_quiz_r_student_question WHERE c_stu_quiz_id = '" . $stu_quiz_id . "' and c_question_id = '" . $quest_id . "'";
                             $JLMS_DB->SetQuery($query);
                             $JLMS_DB->query();
                             $query = "DELETE FROM #__lms_quiz_r_student_choice WHERE c_sq_id = '" . $c_tmp[0]->c_id . "'";
                             $JLMS_DB->SetQuery($query);
                             $JLMS_DB->query();
                         }
                     }
                     if ($quest_params->get('survey_question')) {
                         $is_correct = 1;
                     }
                     if ($is_avail) {
                         $correct = JLMS_quiz_ajax_class::correct_answer($is_correct);
                         if (isset($resume_quest_score) && $resume_quest_score) {
                             $c_quest_score = $resume_quest_score;
                         }
                         $query = "INSERT INTO #__lms_quiz_r_student_question (c_stu_quiz_id, c_question_id, c_score, c_attempts, c_correct)" . "\n VALUES('" . $stu_quiz_id . "', '" . $quest_id . "', '" . $c_quest_score . "', '" . ($c_quest_cur_attempt + 1) . "', '" . $correct . "')";
                         $JLMS_DB->SetQuery($query);
                         $JLMS_DB->query();
                         $c_sq_id = $JLMS_DB->insertid();
                         $query = "INSERT INTO #__lms_quiz_r_student_choice (c_sq_id, c_choice_id)" . "\n VALUES('" . $c_sq_id . "', '" . $answer . "')";
                         $JLMS_DB->SetQuery($query);
                         $JLMS_DB->query();
                     }
                     break;
                 case 2:
                 case 13:
                     $query = "SELECT a.c_point, a.c_attempts FROM #__lms_quiz_t_question as a WHERE a.c_id = '" . $proc_quest_id . "'";
                     $JLMS_DB->SetQuery($query);
                     $ddd = $JLMS_DB->LoadObjectList();
                     $query = "SELECT b.c_id FROM #__lms_quiz_t_question as a, #__lms_quiz_t_choice as b WHERE a.c_id = '" . $proc_quest_id . "' and b.c_question_id = a.c_id and b.c_right = '1'";
                     $JLMS_DB->SetQuery($query);
                     $ddd2 = $JLMS_DB->LoadObjectList();
                     $query = "SELECT b.c_id FROM #__lms_quiz_t_question as a, #__lms_quiz_t_choice as b WHERE a.c_id = '" . $proc_quest_id . "' and b.c_question_id = a.c_id and b.c_right <> '1'";
                     $JLMS_DB->SetQuery($query);
                     $ddd3 = $JLMS_DB->LoadObjectList();
                     $c_quest_score = 0;
                     $c_all_attempts = 1;
                     $is_avail = 1;
                     $ans_array = explode(',', $answer);
                     if (count($ddd2) && count($ddd)) {
                         $c_quest_score = $ddd[0]->c_point;
                         $is_correct = 1;
                         foreach ($ddd2 as $right_row) {
                             if (!in_array($right_row->c_id, $ans_array)) {
                                 $c_quest_score = 0;
                                 $is_correct = 0;
                             }
                         }
                         foreach ($ddd3 as $not_right_row) {
                             if (in_array($not_right_row->c_id, $ans_array)) {
                                 $c_quest_score = 0;
                                 $is_correct = 0;
                             }
                         }
                     }
                     if (count($ddd) && isset($ddd[0]->c_attempts) && $ddd[0]->c_attempts) {
                         $c_all_attempts = $ddd[0]->c_attempts;
                     }
                     $c_quest_cur_attempt = 0;
                     $query = "SELECT c_id, c_attempts FROM #__lms_quiz_r_student_question WHERE c_stu_quiz_id = '" . $stu_quiz_id . "' and c_question_id = '" . $quest_id . "'";
                     $JLMS_DB->SetQuery($query);
                     $c_tmp = $JLMS_DB->LoadObjectList();
                     if (count($c_tmp)) {
                         $c_quest_cur_attempt = $c_tmp[0]->c_attempts;
                         if ($ddd[0]->c_attempts > 0 && $c_quest_cur_attempt >= $c_all_attempts) {
                             $ret_str .= "\t" . '<task>no_attempts</task>' . "\n";
                             $toolbar_code = JLMS_ShowToolbar($toolbar_no_a);
                             $toolbar_code = str_replace('"components/com_joomla_lms', '"' . $JLMS_CONFIG->get('live_site') . '/components/com_joomla_lms', $toolbar_code);
                             $ret_str .= "\t" . '<quiz_menu><![CDATA[' . $toolbar_code . ']]></quiz_menu>' . "\n";
                             $is_avail = 0;
                             $is_no_attempts = 1;
                         }
                         if ($is_avail) {
                             $query = "DELETE FROM #__lms_quiz_r_student_question WHERE c_stu_quiz_id = '" . $stu_quiz_id . "' and c_question_id = '" . $quest_id . "'";
                             $JLMS_DB->SetQuery($query);
                             $JLMS_DB->query();
                             $query = "DELETE FROM #__lms_quiz_r_student_choice WHERE c_sq_id = '" . $c_tmp[0]->c_id . "'";
                             $JLMS_DB->SetQuery($query);
                             $JLMS_DB->query();
                         }
                     }
                     if ($quest_params->get('survey_question')) {
                         $is_correct = 1;
                     }
                     if ($is_avail) {
                         $correct = JLMS_quiz_ajax_class::correct_answer($is_correct);
                         if (isset($resume_quest_score) && $resume_quest_score) {
                             $c_quest_score = $resume_quest_score;
                         }
                         $query = "INSERT INTO #__lms_quiz_r_student_question (c_stu_quiz_id, c_question_id, c_score, c_attempts, c_correct)" . "\n VALUES('" . $stu_quiz_id . "', '" . $quest_id . "', '" . $c_quest_score . "', '" . ($c_quest_cur_attempt + 1) . "', '" . $correct . "')";
                         $JLMS_DB->SetQuery($query);
                         $JLMS_DB->query();
                         $c_sq_id = $JLMS_DB->insertid();
                         $i = 0;
                         while ($i < count($ans_array)) {
                             $query = "INSERT INTO #__lms_quiz_r_student_choice (c_sq_id, c_choice_id)" . "\n VALUES('" . $c_sq_id . "', '" . $ans_array[$i] . "')";
                             $JLMS_DB->SetQuery($query);
                             $JLMS_DB->query();
                             $i++;
                         }
                     }
                     break;
                 case 4:
                 case 5:
                 case 11:
                     $query = "SELECT a.c_point, a.c_attempts FROM #__lms_quiz_t_question as a WHERE a.c_id = '" . $proc_quest_id . "'";
                     $JLMS_DB->SetQuery($query);
                     $ddd = $JLMS_DB->LoadObjectList();
                     $query = "SELECT b.c_id, b.c_left_text, b.c_right_text FROM #__lms_quiz_t_question as a, #__lms_quiz_t_matching as b WHERE a.c_id = '" . $proc_quest_id . "' and b.c_question_id = a.c_id ORDER BY b.ordering";
                     $JLMS_DB->SetQuery($query);
                     $ddd2 = $JLMS_DB->LoadObjectList();
                     $c_quest_score = 0;
                     $c_all_attempts = 1;
                     $is_avail = 1;
                     $answer = urldecode($answer);
                     $ans_array = explode('```', $answer);
                     $ans_array_values = array();
                     if (count($ddd2) && count($ddd)) {
                         $c_quest_score = $ddd[0]->c_point;
                         $is_correct = 1;
                         $rr_num = 0;
                         for ($di = 0, $dn = count($ddd2); $di < $dn; $di++) {
                             $ddd2[$di]->c_right_text_md5 = md5($ddd2[$di]->c_right_text);
                         }
                         foreach ($ans_array as $ans_array_one) {
                             foreach ($ddd2 as $right_row) {
                                 if ($ans_array_one == $right_row->c_right_text_md5) {
                                     $ans_array_values[$ans_array_one] = $right_row->c_right_text;
                                     break;
                                 }
                             }
                         }
                         foreach ($ddd2 as $right_row) {
                             /**
                              * TODO (started): remove strings comparison.
                              * 		TIPS:	1. we can not compare by id's, because in this case PRO-user with JS debugger can cheat
                              * 				2. may create comparison of md5-hashes (send hashes to the html page instead of answer options)?
                              */
                             if (trim($right_row->c_right_text_md5) != trim($ans_array[$rr_num])) {
                                 $c_quest_score = 0;
                                 $is_correct = 0;
                             }
                             $rr_num++;
                         }
                         if ($ddd[0]->c_attempts) {
                             $c_all_attempts = $ddd[0]->c_attempts;
                         }
                     }
                     $c_quest_cur_attempt = 0;
                     $query = "SELECT c_id, c_attempts FROM #__lms_quiz_r_student_question WHERE c_stu_quiz_id = '" . $stu_quiz_id . "' and c_question_id = '" . $quest_id . "'";
                     $JLMS_DB->SetQuery($query);
                     $c_tmp = $JLMS_DB->LoadObjectList();
                     if (count($c_tmp)) {
                         $c_quest_cur_attempt = $c_tmp[0]->c_attempts;
                         if ($ddd[0]->c_attempts > 0 && $c_quest_cur_attempt >= $c_all_attempts) {
                             $ret_str .= "\t" . '<task>no_attempts</task>' . "\n";
                             $toolbar_code = JLMS_ShowToolbar($toolbar_no_a);
                             $toolbar_code = str_replace('"components/com_joomla_lms', '"' . $JLMS_CONFIG->get('live_site') . '/components/com_joomla_lms', $toolbar_code);
                             $ret_str .= "\t" . '<quiz_menu><![CDATA[' . $toolbar_code . ']]></quiz_menu>' . "\n";
                             $is_avail = 0;
                             $is_no_attempts = 1;
                         }
                         if ($is_avail) {
                             $query = "DELETE FROM #__lms_quiz_r_student_question WHERE c_stu_quiz_id = '" . $stu_quiz_id . "' and c_question_id = '" . $quest_id . "'";
                             $JLMS_DB->SetQuery($query);
                             $JLMS_DB->query();
                             $query = "DELETE FROM #__lms_quiz_r_student_matching WHERE c_sq_id = '" . $c_tmp[0]->c_id . "'";
                             $JLMS_DB->SetQuery($query);
                             $JLMS_DB->query();
                         }
                     }
                     if ($quest_params->get('survey_question')) {
                         $is_correct = 1;
                     }
                     if ($is_avail) {
                         $correct = JLMS_quiz_ajax_class::correct_answer($is_correct);
                         if (isset($resume_quest_score) && $resume_quest_score) {
                             $c_quest_score = $resume_quest_score;
                         }
                         $query = "INSERT INTO #__lms_quiz_r_student_question (c_stu_quiz_id, c_question_id, c_score, c_attempts, c_correct)" . "\n VALUES('" . $stu_quiz_id . "', '" . $quest_id . "', '" . $c_quest_score . "', '" . ($c_quest_cur_attempt + 1) . "', '" . $correct . "')";
                         $JLMS_DB->SetQuery($query);
                         $JLMS_DB->query();
                         $c_sq_id = $JLMS_DB->insertid();
                         $i = 0;
                         while ($i < count($ddd2)) {
                             $cur_quest_answer_value = isset($ans_array_values[$ans_array[$i]]) ? $ans_array_values[$ans_array[$i]] : $ans_array[$i];
                             $query = "INSERT INTO #__lms_quiz_r_student_matching (c_sq_id, c_matching_id, c_sel_text)" . "\n VALUES('" . $c_sq_id . "', '" . $ddd2[$i]->c_id . "', " . $JLMS_DB->Quote($cur_quest_answer_value) . ")";
                             $JLMS_DB->SetQuery($query);
                             $JLMS_DB->query();
                             $i++;
                         }
                     }
                     break;
                 case 6:
                     $query = "SELECT a.c_point, a.c_attempts FROM #__lms_quiz_t_question as a WHERE a.c_id = '" . $proc_quest_id . "'";
                     $JLMS_DB->SetQuery($query);
                     $ddd = $JLMS_DB->LoadObjectList();
                     $query = "SELECT c.c_text FROM #__lms_quiz_t_question as a, #__lms_quiz_t_blank as b, #__lms_quiz_t_text as c WHERE a.c_id = '" . $proc_quest_id . "' and b.c_question_id = a.c_id and c.c_blank_id = b.c_id";
                     $JLMS_DB->SetQuery($query);
                     $ddd2 = $JLMS_DB->LoadObjectList();
                     $c_quest_score = 0;
                     $c_all_attempts = 1;
                     $is_avail = 1;
                     $answer = trim($answer);
                     if (PHP_VERSION < 5) {
                         $answer = php4_utf8_urldecode($answer);
                     } else {
                         $answer = php5_utf8_urldecode($answer);
                     }
                     if (count($ddd2) && count($ddd)) {
                         /*foreach ($ddd2 as $right_row) {
                         			if($quest_params->get('case_sensivity', 0)){
                         				if ($right_row->c_text === $answer) {
                         					$c_quest_score = $ddd[0]->c_point;
                         					$is_correct = 1;
                         				}
                         			} else {
                         				if (strtolower($right_row->c_text) === strtolower($answer)) {
                         					$c_quest_score = $ddd[0]->c_point;
                         					$is_correct = 1;
                         				}	
                         			}
                         		}*/
                         foreach ($ddd2 as $right_row) {
                             if ($quest_params->get('case_sensivity', 0)) {
                                 if ($right_row->c_text === $answer) {
                                     $c_quest_score = $ddd[0]->c_point;
                                     $is_correct = 1;
                                 }
                             } else {
                                 if (strtolower($right_row->c_text) === strtolower($answer)) {
                                     $c_quest_score = $ddd[0]->c_point;
                                     $is_correct = 1;
                                 }
                             }
                             if (!$is_correct) {
                                 /**
                                  * 01 November 2007 - DEN - bugfix - checking different character encodings
                                  * I.e. if browser sent data in UTF, but DB collation is ISO
                                  * or another case, if DB collation is UTF, but browser sent response in ISO.
                                  * TODO: code is not tested fully. - need testing with ISO (danish, german), cp and UTF
                                  */
                                 if (function_exists('utf8_encode')) {
                                     $a_u = utf8_encode($right_row->c_text);
                                     $b_u = utf8_encode($answer);
                                 } else {
                                     $a_u = $right_row->c_text;
                                     $b_u = $answer;
                                 }
                                 if ($quest_params->get('case_sensivity', 0)) {
                                     if ($a_u === $answer) {
                                         $c_quest_score = $ddd[0]->c_point;
                                         $is_correct = 1;
                                     } else {
                                         if ($right_row->c_text === $b_u) {
                                             $c_quest_score = $ddd[0]->c_point;
                                             $is_correct = 1;
                                         }
                                     }
                                 } else {
                                     if (strtolower($a_u) === strtolower($answer)) {
                                         $c_quest_score = $ddd[0]->c_point;
                                         $is_correct = 1;
                                     } else {
                                         if (strtolower($right_row->c_text) === strtolower($b_u)) {
                                             $c_quest_score = $ddd[0]->c_point;
                                             $is_correct = 1;
                                         }
                                     }
                                 }
                             }
                         }
                         if ($ddd[0]->c_attempts) {
                             $c_all_attempts = $ddd[0]->c_attempts;
                         }
                     }
                     $c_quest_cur_attempt = 0;
                     $query = "SELECT c_id, c_attempts FROM #__lms_quiz_r_student_question WHERE c_stu_quiz_id = '" . $stu_quiz_id . "' and c_question_id = '" . $quest_id . "'";
                     $JLMS_DB->SetQuery($query);
                     $c_tmp = $JLMS_DB->LoadObjectList();
                     if (count($c_tmp)) {
                         $c_quest_cur_attempt = $c_tmp[0]->c_attempts;
                         if ($ddd[0]->c_attempts > 0 && $c_quest_cur_attempt >= $c_all_attempts) {
                             $ret_str .= "\t" . '<task>no_attempts</task>' . "\n";
                             $toolbar_code = JLMS_ShowToolbar($toolbar_no_a);
                             $toolbar_code = str_replace('"components/com_joomla_lms', '"' . $JLMS_CONFIG->get('live_site') . '/components/com_joomla_lms', $toolbar_code);
                             $ret_str .= "\t" . '<quiz_menu><![CDATA[' . $toolbar_code . ']]></quiz_menu>' . "\n";
                             $is_avail = 0;
                             $is_no_attempts = 1;
                         }
                         if ($is_avail) {
                             $query = "DELETE FROM #__lms_quiz_r_student_question WHERE c_stu_quiz_id = '" . $stu_quiz_id . "' and c_question_id = '" . $quest_id . "'";
                             $JLMS_DB->SetQuery($query);
                             $JLMS_DB->query();
                             $query = "DELETE FROM #__lms_quiz_r_student_blank WHERE c_sq_id = '" . $c_tmp[0]->c_id . "'";
                             $JLMS_DB->SetQuery($query);
                             $JLMS_DB->query();
                         }
                     }
                     if ($quest_params->get('survey_question')) {
                         $is_correct = 1;
                     }
                     if ($is_avail) {
                         $correct = JLMS_quiz_ajax_class::correct_answer($is_correct);
                         if (isset($resume_quest_score) && $resume_quest_score) {
                             $c_quest_score = $resume_quest_score;
                         }
                         $query = "INSERT INTO #__lms_quiz_r_student_question (c_stu_quiz_id, c_question_id, c_score, c_attempts, c_correct)" . "\n VALUES('" . $stu_quiz_id . "', '" . $quest_id . "', '" . $c_quest_score . "', '" . ($c_quest_cur_attempt + 1) . "', '" . $correct . "')";
                         $JLMS_DB->SetQuery($query);
                         $JLMS_DB->query();
                         $c_sq_id = $JLMS_DB->insertid();
                         $query = "INSERT INTO #__lms_quiz_r_student_blank (c_sq_id, c_answer)" . "\n VALUES('" . $c_sq_id . "', " . $JLMS_DB->Quote($answer) . ")";
                         $JLMS_DB->SetQuery($query);
                         $JLMS_DB->query();
                     }
                     break;
                 case 7:
                     $query = "SELECT a.c_point, a.c_attempts, b.c_start_x, b.c_start_y, b.c_width, b.c_height FROM #__lms_quiz_t_question as a, #__lms_quiz_t_hotspot as b WHERE a.c_id = '" . $proc_quest_id . "' and b.c_question_id = a.c_id";
                     $JLMS_DB->SetQuery($query);
                     $ddd = $JLMS_DB->LoadObjectList();
                     $c_quest_score = 0;
                     $c_all_attempts = 1;
                     $is_avail = 1;
                     if (count($ddd)) {
                         $ans_array = explode(',', $answer);
                         if (count($ans_array) == 2 && $ans_array[0] >= $ddd[0]->c_start_x && $ans_array[0] <= $ddd[0]->c_start_x + $ddd[0]->c_width && $ans_array[1] >= $ddd[0]->c_start_y && $ans_array[1] <= $ddd[0]->c_start_y + $ddd[0]->c_height) {
                             $is_correct = 1;
                             $c_quest_score = $ddd[0]->c_point;
                         }
                         if ($ddd[0]->c_attempts) {
                             $c_all_attempts = $ddd[0]->c_attempts;
                         }
                     }
                     $c_quest_cur_attempt = 0;
                     $query = "SELECT c_id, c_attempts FROM #__lms_quiz_r_student_question WHERE c_stu_quiz_id = '" . $stu_quiz_id . "' and c_question_id = '" . $quest_id . "'";
                     $JLMS_DB->SetQuery($query);
                     $c_tmp = $JLMS_DB->LoadObjectList();
                     if (count($c_tmp)) {
                         $c_quest_cur_attempt = $c_tmp[0]->c_attempts;
                         if ($ddd[0]->c_attempts > 0 && $c_quest_cur_attempt >= $c_all_attempts && $c_all_attempts) {
                             $ret_str .= "\t" . '<task>no_attempts</task>' . "\n";
                             $toolbar_code = JLMS_ShowToolbar($toolbar_no_a);
                             $toolbar_code = str_replace('"components/com_joomla_lms', '"' . $JLMS_CONFIG->get('live_site') . '/components/com_joomla_lms', $toolbar_code);
                             $ret_str .= "\t" . '<quiz_menu><![CDATA[' . $toolbar_code . ']]></quiz_menu>' . "\n";
                             $is_avail = 0;
                             $is_no_attempts = 1;
                         }
                         if ($is_avail) {
                             $query = "DELETE FROM #__lms_quiz_r_student_question WHERE c_stu_quiz_id = '" . $stu_quiz_id . "' and c_question_id = '" . $quest_id . "'";
                             $JLMS_DB->SetQuery($query);
                             $JLMS_DB->query();
                             $query = "DELETE FROM #__lms_quiz_r_student_hotspot WHERE c_sq_id = '" . $c_tmp[0]->c_id . "'";
                             $JLMS_DB->SetQuery($query);
                             $JLMS_DB->query();
                         }
                     }
                     if ($quest_params->get('survey_question')) {
                         $is_correct = 1;
                     }
                     if ($is_avail) {
                         $correct = JLMS_quiz_ajax_class::correct_answer($is_correct);
                         if ($resume_quest_score) {
                             $c_quest_score = $resume_quest_score;
                         }
                         $query = "INSERT INTO #__lms_quiz_r_student_question (c_stu_quiz_id, c_question_id, c_score, c_attempts, c_correct)" . "\n VALUES('" . $stu_quiz_id . "', '" . $quest_id . "', '" . $c_quest_score . "', '" . ($c_quest_cur_attempt + 1) . "', '" . $correct . "')";
                         $JLMS_DB->SetQuery($query);
                         $JLMS_DB->query();
                         $c_sq_id = $JLMS_DB->insertid();
                         $query = "INSERT INTO #__lms_quiz_r_student_hotspot (c_sq_id, c_select_x, c_select_y)" . "\n VALUES('" . $c_sq_id . "', '" . (isset($ans_array[0]) ? $ans_array[0] : 0) . "', '" . (isset($ans_array[1]) ? $ans_array[1] : 0) . "')";
                         $JLMS_DB->SetQuery($query);
                         $JLMS_DB->query();
                     }
                     break;
                 case 8:
                     $query = "SELECT a.c_point, a.c_attempts FROM #__lms_quiz_t_question as a WHERE a.c_id = '" . $proc_quest_id . "'";
                     $JLMS_DB->SetQuery($query);
                     $ddd = $JLMS_DB->LoadObjectList();
                     $c_quest_score = 0;
                     $c_all_attempts = 1;
                     $is_avail = 1;
                     $answer = trim(urldecode($answer));
                     if (count($ddd)) {
                         if ($answer) {
                             $is_correct = 1;
                             $c_quest_score = $ddd[0]->c_point;
                         }
                         if ($ddd[0]->c_attempts) {
                             $c_all_attempts = $ddd[0]->c_attempts;
                         }
                     }
                     $c_quest_cur_attempt = 0;
                     $query = "SELECT c_id, c_attempts FROM #__lms_quiz_r_student_question WHERE c_stu_quiz_id = '" . $stu_quiz_id . "' and c_question_id = '" . $quest_id . "'";
                     $JLMS_DB->SetQuery($query);
                     $c_tmp = $JLMS_DB->LoadObjectList();
                     if (count($c_tmp)) {
                         $c_quest_cur_attempt = $c_tmp[0]->c_attempts;
                         if ($ddd[0]->c_attempts > 0 && $c_quest_cur_attempt >= $c_all_attempts && $c_all_attempts) {
                             $ret_str .= "\t" . '<task>no_attempts</task>' . "\n";
                             $toolbar_code = JLMS_ShowToolbar($toolbar_no_a);
                             $toolbar_code = str_replace('"components/com_joomla_lms', '"' . $JLMS_CONFIG->get('live_site') . '/components/com_joomla_lms', $toolbar_code);
                             $ret_str .= "\t" . '<quiz_menu><![CDATA[' . $toolbar_code . ']]></quiz_menu>' . "\n";
                             $is_avail = 0;
                             $is_no_attempts = 1;
                         }
                         if ($is_avail) {
                             $query = "DELETE FROM #__lms_quiz_r_student_question WHERE c_stu_quiz_id = '" . $stu_quiz_id . "' and c_question_id = '" . $quest_id . "'";
                             $JLMS_DB->SetQuery($query);
                             $JLMS_DB->query();
                             $query = "DELETE FROM #__lms_quiz_r_student_survey WHERE c_sq_id = '" . $c_tmp[0]->c_id . "'";
                             $JLMS_DB->SetQuery($query);
                             $JLMS_DB->query();
                         }
                     }
                     if ($quest_params->get('survey_question')) {
                         $is_correct = 1;
                     }
                     if ($is_avail) {
                         $correct = JLMS_quiz_ajax_class::correct_answer($is_correct);
                         if ($resume_quest_score) {
                             $c_quest_score = $resume_quest_score;
                         }
                         $query = "INSERT INTO #__lms_quiz_r_student_question (c_stu_quiz_id, c_question_id, c_score, c_attempts, c_correct)" . "\n VALUES('" . $stu_quiz_id . "', '" . $quest_id . "', '" . $c_quest_score . "', '" . ($c_quest_cur_attempt + 1) . "', '" . $correct . "')";
                         $JLMS_DB->SetQuery($query);
                         $JLMS_DB->query();
                         $c_sq_id = $JLMS_DB->insertid();
                         $query = "INSERT INTO #__lms_quiz_r_student_survey (c_sq_id, c_answer)" . "\n VALUES('" . $c_sq_id . "', " . $JLMS_DB->Quote($answer) . ")";
                         $JLMS_DB->SetQuery($query);
                         $JLMS_DB->query();
                     }
                     break;
                 case 9:
                     $query = "SELECT a.c_point, a.c_attempts FROM #__lms_quiz_t_question as a WHERE a.c_id = '" . $proc_quest_id . "'";
                     $JLMS_DB->SetQuery($query);
                     $ddd = $JLMS_DB->LoadObjectList();
                     $is_correct = 1;
                     $c_quest_score = 0;
                     $c_all_attempts = 1;
                     $is_avail = 1;
                     if ($ddd[0]->c_attempts) {
                         $c_all_attempts = $ddd[0]->c_attempts;
                     }
                     $c_quest_cur_attempt = 0;
                     $query = "SELECT c_id, c_attempts FROM #__lms_quiz_r_student_question WHERE c_stu_quiz_id = '" . $stu_quiz_id . "' and c_question_id = '" . $quest_id . "'";
                     $JLMS_DB->SetQuery($query);
                     $c_tmp = $JLMS_DB->LoadObjectList();
                     if (count($c_tmp)) {
                         $c_quest_cur_attempt = $c_tmp[0]->c_attempts;
                         if ($ddd[0]->c_attempts > 0 && $c_quest_cur_attempt >= $c_all_attempts) {
                             $ret_str .= "\t" . '<task>no_attempts</task>' . "\n";
                             $toolbar_code = JLMS_ShowToolbar($toolbar_no_a);
                             $toolbar_code = str_replace('"components/com_joomla_lms', '"' . $JLMS_CONFIG->get('live_site') . '/components/com_joomla_lms', $toolbar_code);
                             $ret_str .= "\t" . '<quiz_menu><![CDATA[' . $toolbar_code . ']]></quiz_menu>' . "\n";
                             $is_avail = 0;
                             $is_no_attempts = 1;
                         }
                         if ($is_avail) {
                             $query = "DELETE FROM #__lms_quiz_r_student_question WHERE c_stu_quiz_id = '" . $stu_quiz_id . "' and c_question_id = '" . $quest_id . "'";
                             $JLMS_DB->SetQuery($query);
                             $JLMS_DB->query();
                             $query = "DELETE FROM #__lms_quiz_r_student_scale WHERE c_sq_id = '" . $c_tmp[0]->c_id . "'";
                             $JLMS_DB->SetQuery($query);
                             $JLMS_DB->query();
                         }
                     }
                     if ($quest_params->get('survey_question')) {
                         // not necessary.... this questino is always 'survey' - just for future
                         $is_correct = 1;
                     }
                     if ($is_avail) {
                         $correct = JLMS_quiz_ajax_class::correct_answer($is_correct);
                         if (isset($resume_quest_score) && $resume_quest_score) {
                             $c_quest_score = $resume_quest_score;
                         }
                         $query = "INSERT INTO #__lms_quiz_r_student_question (c_stu_quiz_id, c_question_id, c_score, c_attempts, c_correct)" . "\n VALUES('" . $stu_quiz_id . "', '" . $quest_id . "', '" . $c_quest_score . "', '" . ($c_quest_cur_attempt + 1) . "', '" . $correct . "')";
                         $JLMS_DB->SetQuery($query);
                         $JLMS_DB->query();
                         $c_sq_id = $JLMS_DB->insertid();
                         $query = "SELECT * FROM #__lms_quiz_t_scale WHERE c_question_id = '" . $proc_quest_id . "' AND c_type!='1'  ORDER BY ordering";
                         $JLMS_DB->SetQuery($query);
                         $c_scal = $JLMS_DB->LoadObjectList();
                         $ans_array = explode(',', $answer);
                         for ($p = 0; $p < count($ans_array); $p++) {
                             $query = "INSERT INTO #__lms_quiz_r_student_scale (c_sq_id, q_scale_id, scale_id)" . "\n VALUES('" . $c_sq_id . "', '" . $c_scal[$p]->c_id . "', '" . $ans_array[$p] . "')";
                             $JLMS_DB->SetQuery($query);
                             $JLMS_DB->query();
                         }
                     }
                     break;
                 case 10:
                     $query = "SELECT a.c_attempts FROM #__lms_quiz_t_question as a WHERE a.c_id = '" . $proc_quest_id . "'";
                     $JLMS_DB->SetQuery($query);
                     $ddd = $JLMS_DB->LoadObjectList();
                     $c_quest_score = 0;
                     $c_all_attempts = 1;
                     $is_avail = 1;
                     $is_correct = 1;
                     $answer = trim(urldecode($answer));
                     if (count($ddd)) {
                         if ($ddd[0]->c_attempts) {
                             $c_all_attempts = $ddd[0]->c_attempts;
                         }
                     }
                     $c_quest_cur_attempt = 0;
                     $query = "SELECT c_id, c_attempts FROM #__lms_quiz_r_student_question WHERE c_stu_quiz_id = '" . $stu_quiz_id . "' and c_question_id = '" . $quest_id . "'";
                     $JLMS_DB->SetQuery($query);
                     $c_tmp = $JLMS_DB->LoadObjectList();
                     if (count($c_tmp)) {
                         $c_quest_cur_attempt = $c_tmp[0]->c_attempts;
                         if ($ddd[0]->c_attempts > 0 && $c_quest_cur_attempt >= $c_all_attempts) {
                             $ret_str .= "\t" . '<task>no_attempts</task>' . "\n";
                             $is_avail = 0;
                             $is_no_attempts = 1;
                         }
                         if ($is_avail) {
                             $query = "DELETE FROM #__lms_quiz_r_student_question WHERE c_stu_quiz_id = '" . $stu_quiz_id . "' and c_question_id = '" . $quest_id . "'";
                             $JLMS_DB->SetQuery($query);
                             $JLMS_DB->query();
                         }
                     }
                     if ($quest_params->get('survey_question')) {
                         // not necessary too.... this questin is just a content page
                         $is_correct = 1;
                     }
                     if ($is_avail) {
                         $correct = JLMS_quiz_ajax_class::correct_answer($is_correct);
                         if ($resume_quest_score) {
                             $c_quest_score = $resume_quest_score;
                         }
                         $query = "INSERT INTO #__lms_quiz_r_student_question (c_stu_quiz_id, c_question_id, c_score, c_attempts, c_correct)" . "\n VALUES('" . $stu_quiz_id . "', '" . $quest_id . "', '" . $c_quest_score . "', '" . ($c_quest_cur_attempt + 1) . "', '" . $correct . "')";
                         $JLMS_DB->SetQuery($query);
                         $JLMS_DB->query();
                     }
                     break;
             }
         }
         $j = -1;
         $quest_num = 1;
         /* 24 April 2007 (DEN)
          * Get next question from all quiz quests
          */
         $query = "SELECT c_question_id FROM #__lms_quiz_r_student_question WHERE c_stu_quiz_id = '" . $stu_quiz_id . "'";
         $JLMS_DB->SetQuery($query);
         $q_ids = $JLMS_DB->LoadResultArray();
         $q_num = 0;
         $q_num_ar = 0;
         $qqn = 0;
         // get number of answered questions (to estimate value for progressbar if enabled)
         $progress_quests_answered = count($q_ids);
         foreach ($q_data as $qd) {
             if ($qd->c_id == $quest_id) {
                 $q_num = $qqn + 1;
                 $q_num_ar = $qqn;
                 break;
             }
             $qqn++;
         }
         /*		
         			echo $quest_id;
         			echo '<pre>';
         			print_r($q_data);
         			echo '</pre>';
         			echo 'qqn='.$qqn;
         			echo 'q_num='.$q_num;
         			//(Max): ja tut testil pohodu tut gdeto kosiak
         			die;
         */
         if (!$q_num) {
             return '';
         } else {
             $q_num = 0;
             $q_num_ar = 0;
             if ($last_question == -1) {
                 //resume from first question - we need to show first question!
                 if ($qqn) {
                     $qqn = $qqn - 1;
                 }
             }
             //echo $last_question; echo $qqn;die;
             // here we are using $q_num and $q_num_ar for other needs (don't warry :) )
             // find next not answered question
             for ($i = $qqn, $n = count($q_data); $i < $n; $i++) {
                 if (!in_array($q_data[$i]->c_id, $q_ids) && $q_data[$i]->c_id != $quest_id) {
                     $q_num = $i + 1;
                     $q_num_ar = $i;
                     break;
                 }
             }
             if ($last_question == -1) {
                 //resume from first question - we need to show first question!
                 if (!$qqn) {
                     if (isset($q_data[0]->c_id) && $q_data[0]->c_id == $quest_id) {
                         $q_num = 1;
                         $q_num_ar = 0;
                     }
                 }
             }
             if (!$q_num) {
                 // find not answered question from prev questions
                 for ($i = 0; $i < $qqn; $i++) {
                     if (!in_array($q_data[$i]->c_id, $q_ids) && $q_data[$i]->c_id != $quest_id) {
                         $q_num = $i + 1;
                         $q_num_ar = $i;
                         break;
                     }
                 }
             }
             if ($q_num) {
                 $quest_num = $q_num;
                 $j = $q_num_ar;
             }
         }
         //
         //			echo 'j='.$j;
         //Max: skip mod next question skip
         $jx = -1;
         if (isset($q_data[$j]->c_id)) {
             $q_ids[] = $q_data[$j]->c_id;
             $q_num = 0;
             $q_num_ar = 0;
             $qqn = 0;
             foreach ($q_data as $qd) {
                 if ($qd->c_id == $quest_id) {
                     $q_num = $qqn + 1;
                     $q_num_ar = $qqn;
                     break;
                 }
                 $qqn++;
             }
             if (!$q_num) {
                 return '';
             } else {
                 $q_num = 0;
                 $q_num_ar = 0;
                 // here we are using $q_num and $q_num_ar for other needs (don't warry :) )
                 // find next not answered question
                 for ($i = $qqn, $n = count($q_data); $i < $n; $i++) {
                     if (!in_array($q_data[$i]->c_id, $q_ids) && $q_data[$i]->c_id != $quest_id) {
                         $q_num = $i + 1;
                         $q_num_ar = $i;
                         break;
                     }
                 }
                 if (!$q_num) {
                     // find not answered question from prev questions
                     for ($i = 0; $i < $qqn; $i++) {
                         if (!in_array($q_data[$i]->c_id, $q_ids) && $q_data[$i]->c_id != $quest_id) {
                             $q_num = $i + 1;
                             $q_num_ar = $i;
                             break;
                         }
                     }
                 }
                 if ($q_num) {
                     $quest_num_x = $q_num;
                     $jx = $q_num_ar;
                 }
             }
         }
         /*
         			if ($quiz->c_random) {
         				$query = "SELECT c_question_id FROM #__lms_quiz_r_student_question WHERE c_stu_quiz_id = '".$stu_quiz_id."'";
         				$JLMS_DB->SetQuery( $query );
         				$q_ids = $JLMS_DB->LoadResultArray();
         				$q_kol_already = count($q_ids);
         				if (!count($q_ids)) {
         					$q_ids = array(0);
         				}
         				$qids = implode(',',$q_ids);
         				$query = "SELECT * FROM #__lms_quiz_t_question WHERE c_quiz_id = '".$quiz_id."' AND c_id NOT IN (".$qids.") ORDER BY ordering, c_id";
         				$JLMS_DB->SetQuery( $query );
         				$q_data = $JLMS_DB->LoadObjectList();
         				$kol_q = count($q_data);
         				if ($kol_q) {
         					$j = rand(0, ($kol_q - 1) );
         				} else {
         					$j = -1;
         				}
         				$query = "SELECT count(*) FROM #__lms_quiz_t_question WHERE c_quiz_id = '".$quiz_id."'";
         				$JLMS_DB->SetQuery( $query );
         				$q_total = $JLMS_DB->LoadResult();
         				$quest_num = $q_kol_already + 1;
         			} else {
         				$query = "SELECT ordering from #__lms_quiz_t_question WHERE c_id = '".$quest_id."'";
         				$JLMS_DB->SetQuery( $query );
         				$qorder = $JLMS_DB->LoadResult();
         	
         				$query = "SELECT * FROM #__lms_quiz_t_question WHERE c_quiz_id = '".$quiz_id."' ORDER BY ordering, c_id";
         				$JLMS_DB->SetQuery($query);
         				$q_data = $JLMS_DB->LoadObjectList();
         				$i = 0;$j = 0;
         	
         				while($i < count($q_data)) {
         					if ($q_data[$i]->ordering < $qorder) {
         						$j ++;
         					} elseif (($q_data[$i]->ordering == $qorder) && ($q_data[$i]->c_id < $quest_id)) {
         						$j ++;
         					} elseif (($q_data[$i]->ordering == $qorder) && ($q_data[$i]->c_id == $quest_id)) {
         						$j ++;
         					} else {
         					}
         					$i ++;
         				}
         				$quest_num = $j + 1;
         				if (!isset($q_data[$j])) {
         					$query = "SELECT count(*) FROM #__lms_quiz_t_question WHERE c_quiz_id = '".$quiz_id."'";
         					$JLMS_DB->SetQuery( $query );
         					$qk = $JLMS_DB->LoadResult();
         					$query = "SELECT c_question_id FROM #__lms_quiz_r_student_question WHERE c_stu_quiz_id = '".$stu_quiz_id."'";
         					$JLMS_DB->SetQuery( $query );
         					$qq_d = $JLMS_DB->LoadResultArray();
         					$qq = count($qq_d);
         					if ( $qk && $qq && ($qk != $qq)) {
         						if (!count($qq_d)) { $qq_d = array(0); }
         						$qids = implode(',',$qq_d);
         						$query = "SELECT * FROM #__lms_quiz_t_question WHERE c_quiz_id = '".$quiz_id."' AND c_id NOT IN (".$qids.") ORDER BY ordering, c_id";
         						$JLMS_DB->SetQuery( $query );
         						$q_data = $JLMS_DB->LoadObjectList();
         						$kol_q = count($q_data);
         						if ($kol_q) { $j = 0; } else { $j = -1; }
         						$quest_num = $qq + 1;
         					}
         				}
         			}*/
         $is_avail = 1;
         if (isset($c_quest_cur_attempt) && isset($c_all_attempts)) {
             if ($c_quest_cur_attempt + 1 >= $c_all_attempts) {
                 $is_avail = 0;
             }
         }
         //require( dirname(__FILE__) . "/language/english.php");
         // preloading QUIZ languge (28.02.2007 new method) (all quizzes messages now in global quiz language)
         global $JLMS_LANGUAGE, $JLMS_CONFIG;
         JLMS_require_lang($JLMS_LANGUAGE, 'quiz.lang', $JLMS_CONFIG->get('default_language'));
         //require(_JOOMLMS_FRONT_HOME . "/languages/".$JLMS_CONFIG->get('default_language').'/quiz.lang.php');
         require _JOOMLMS_FRONT_HOME . '/includes/quiz/quiz_language.php';
         global $jq_language;
         /*$query = "SELECT lang_file FROM #__lms_quiz_languages WHERE is_default = 1 and lang_file <> 'default'";
         		$JLMS_DB->SetQuery( $query );
         		$req_lang = $JLMS_DB->LoadResult();
         		if ($req_lang && file_exists( dirname(__FILE__) . "/language/".$req_lang.".php")) {
         			include( dirname(__FILE__) . "/language/".$req_lang.".php");
         		}*/
         /*if ( ($quiz->c_language) && ($quiz->c_language != 1) ) {
         			$query = "SELECT lang_file FROM #__lms_quiz_languages WHERE id = '".intval($quiz->c_language)."'";
         			$JLMS_DB->SetQuery( $query );
         			$req_lang = $JLMS_DB->LoadResult();
         			if ($req_lang && file_exists( dirname(__FILE__) . "/language/".$req_lang.".php")) {
         				include( dirname(__FILE__) . "/language/".$req_lang.".php");
         			}
         		}*/
         if ($quiz->c_wrong_message) {
             $jq_language['quiz_answer_incorrect'] = htmlspecialchars(nl2br($quiz->c_wrong_message));
         }
         if ($quiz->c_right_message) {
             $jq_language['quiz_answer_correct'] = htmlspecialchars(nl2br($quiz->c_right_message));
         }
         //$q_t_params = $QA->get_qvar('params');
         if ($quiz_params->get('disable_quest_feedback') || $quest_params->get('disable_quest_feedback')) {
         } else {
             $query = "SELECT * FROM #__lms_quiz_t_question_fb WHERE quest_id = {$quest_id}";
             $JLMS_DB->SetQuery($query);
             $q_fbs = $JLMS_DB->LoadObjectList();
             foreach ($q_fbs as $qfb) {
                 if ($qfb->choice_id == -1) {
                     if ($qfb->fb_text) {
                         $jq_language['quiz_answer_incorrect'] = $qfb->fb_text;
                     }
                 } elseif (!$qfb->choice_id) {
                     if ($qfb->fb_text) {
                         $jq_language['quiz_answer_correct'] = $qfb->fb_text;
                         $jq_language['quiz_answer_accepted'] = $qfb->fb_text;
                     }
                 }
             }
         }
         //Max: modign skip question
         //			$quiz_params = new JLMSParameters($QA->quiz_data->params);
         $skip_quest = $quiz_params->get('sh_skip_quest', 0);
         $next_quest = 0;
         if ($skip_quest) {
             $next_quest = isset($q_data[$jx]->c_id) ? $q_data[$jx]->c_id : 0;
         } else {
             $next_quest = 0;
         }
         // 12.03.2007
         #$query = "SELECT template_name FROM #__lms_quiz_templates WHERE id = '".$quiz->c_skin."'";
         #$JLMS_DB->SetQuery( $query );
         #$cur_tmpl = $JLMS_DB->LoadResult();
         $cur_tmpl = 'joomlaquiz_lms_template';
         if ($cur_tmpl) {
             require_once dirname(__FILE__) . '/templates/' . $cur_tmpl . '/jq_template.php';
             $is_correct_report = $is_correct;
             if ($is_no_attempts == 1) {
                 //get information about correct/incorrect answer from previous attempt.
                 //to avoid corruption of statistics at the frontend (in the list of quiz questions - slide panel)
                 $query = "SELECT c_correct FROM #__lms_quiz_r_student_question WHERE c_stu_quiz_id = '" . $stu_quiz_id . "' AND c_question_id = '" . $quest_id . "'";
                 $JLMS_DB->SetQuery($query);
                 $is_correct_db = intval($JLMS_DB->LoadResult());
                 if ($is_correct_db == 2) {
                     $is_correct_report = 1;
                 } else {
                     $is_correct_report = 0;
                 }
             }
             $kol_quests = count($q_data);
             if (isset($q_data[$j])) {
                 $toolbar = array();
                 if ($is_correct) {
                     $toolbar[] = array('btn_type' => 'next', 'btn_js' => "javascript:jq_QuizContinue();void(0);");
                 } else {
                     if ($is_avail) {
                         $toolbar[] = array('btn_type' => 'prev', 'btn_js' => "javascript:jq_QuizBack();void(0);");
                         $toolbar[] = array('btn_type' => 'next', 'btn_js' => "javascript:jq_QuizContinue();void(0);");
                     } else {
                         $toolbar[] = array('btn_type' => 'next', 'btn_js' => "javascript:jq_QuizContinue();void(0);");
                     }
                 }
                 $inside_lp = intval(mosGetParam($_REQUEST, 'inside_lp', 0));
                 if ($inside_lp) {
                     $toolbar[] = array('btn_type' => 'contents', 'btn_js' => "javascript:ajax_action('contents_lpath');");
                 } else {
                     if ($quiz->c_slide) {
                         $toolbar[] = array('btn_type' => 'contents', 'btn_js' => "javascript:jq_ShowPanel();");
                     }
                 }
                 $exec_resume_script = '';
                 $quiz->resume_timer_value = 0;
                 if ($resume_id) {
                     $ret_str .= "\t" . '<task>resume</task>' . "\n";
                     $ret_str .= "\t" . '<user_unique_id>' . $unique_id . '</user_unique_id>' . "\n";
                     $ret_str .= "\t" . '<stu_quiz_id>' . $resume_id . '</stu_quiz_id>' . "\n";
                     $ret_str .= "\t" . '<quiz_count_quests>' . $kol_quests . '</quiz_count_quests>' . "\n";
                     $quiz->resume_timer_value = $QA->get_user_time();
                     $quiz_time_limit = intval($QA->get_qvar('c_time_limit')) * 60;
                     $exec_resume_script = 'timer_sec = ' . $quiz->resume_timer_value . '; max_quiz_time = ' . $quiz_time_limit . ';';
                 } else {
                     $ret_str .= "\t" . '<task>next</task>' . "\n";
                 }
                 $progressbar_value = intval(100 / $kol_quests * $progress_quests_answered);
                 $ret_str .= "\t" . '<progress_quests_done>' . $progressbar_value . '</progress_quests_done>' . "\n";
                 $ret_str .= "\t" . '<quiz_menu><![CDATA[' . JLMS_ShowToolbar($toolbar) . ']]></quiz_menu>' . "\n";
                 $ret_str .= "\t" . '<quiz_quest_num>' . $quest_num . '</quiz_quest_num>' . "\n";
                 $ret_str .= "\t" . '<quiz_prev_correct>' . $is_correct_report . '</quiz_prev_correct>' . "\n";
                 $ret_str .= "\t" . '<quiz_skip_next_quest>' . $next_quest . '</quiz_skip_next_quest>' . "\n";
                 if ($quiz_params->get('disable_quest_feedback') || $quest_params->get('disable_quest_feedback') || $quest_params->get('survey_question') || $qtype == 10) {
                     $ret_str .= "\t" . '<quest_feedback>0</quest_feedback>' . "\n";
                     $ret_str .= "\t" . '<quest_feedback_repl_func><![CDATA[jq_QuizContinue();]]></quest_feedback_repl_func>' . "\n";
                     $msg_html = ' ';
                 } else {
                     $msg_html = JoomlaQuiz_template_class::JQ_show_messagebox('', $is_correct ? $qtype == 8 ? $jq_language['quiz_answer_accepted'] : $jq_language['quiz_answer_correct'] : $jq_language['quiz_answer_incorrect'], $is_correct);
                     $ret_str .= "\t" . '<quest_feedback>1</quest_feedback>' . "\n";
                     $ret_str .= "\t" . '<quest_feedback_repl_func>0</quest_feedback_repl_func>' . "\n";
                 }
                 if ($is_no_attempts == 1) {
                     $msg_html = JoomlaQuiz_template_class::JQ_show_messagebox('', $jq_language['mes_no_attempts'], 2);
                 }
                 $ret_str .= "\t" . '<quiz_message_box><![CDATA[' . $msg_html . ']]></quiz_message_box>' . "\n";
                 $ret_str .= "\t" . '<quiz_allow_attempt>' . $is_avail . '</quiz_allow_attempt>' . "\n";
                 $ret_str .= JLMS_quiz_ajax_class::JQ_GetQuestData($q_data[$j], $jq_language, $QA->get('stu_quiz_id', 0), $exec_resume_script);
                 if ($resume_id) {
                     $ret_str .= JLMS_quiz_ajax_class::JQ_GetPanelData_resume($quiz->c_id, $q_data);
                     //echo JLMS_quiz_ajax_class::JQ_GetPanelData($quiz->c_id, $q_data); die;
                 }
             } else {
                 $ret_str .= "\t" . '<task>finish</task>' . "\n";
                 if ($is_no_attempts == 1) {
                     $ret_str = "\t" . '<task>finish</task>' . "\n";
                 }
                 $progressbar_value = intval(100 / $kol_quests * $progress_quests_answered);
                 $ret_str .= "\t" . '<progress_quests_done>' . $progressbar_value . '</progress_quests_done>' . "\n";
                 $toolbar = array();
                 if ($is_correct) {
                     $toolbar[] = array('btn_type' => 'next', 'btn_js' => "javascript:jq_QuizContinueFinish();void(0);");
                 } else {
                     if ($is_avail) {
                         $toolbar[] = array('btn_type' => 'prev', 'btn_js' => "javascript:jq_QuizBack();void(0);");
                         $toolbar[] = array('btn_type' => 'next', 'btn_js' => "javascript:jq_QuizContinueFinish();void(0);");
                     } else {
                         $toolbar[] = array('btn_type' => 'next', 'btn_js' => "javascript:jq_QuizContinueFinish();void(0);");
                     }
                 }
                 if ($skip_quest && $next_quest) {
                     $toolbar[] = array('btn_type' => 'skip', 'btn_js' => "javascript:JQ_gotoQuestion(" . $next_quest . ");void(0);");
                 }
                 $inside_lp = intval(mosGetParam($_REQUEST, 'inside_lp', 0));
                 if ($inside_lp) {
                     $toolbar[] = array('btn_type' => 'contents', 'btn_js' => "javascript:ajax_action('contents_lpath');");
                 } else {
                     if ($quiz->c_slide) {
                         $toolbar[] = array('btn_type' => 'contents', 'btn_js' => "javascript:jq_ShowPanel();");
                     }
                 }
                 $ret_str .= "\t" . '<quiz_menu><![CDATA[' . JLMS_ShowToolbar($toolbar) . ']]></quiz_menu>' . "\n";
                 $ret_str .= "\t" . '<quiz_prev_correct>' . $is_correct_report . '</quiz_prev_correct>' . "\n";
                 if ($quiz_params->get('disable_quest_feedback') || $quest_params->get('disable_quest_feedback') || $quest_params->get('survey_question') || $qtype == 10) {
                     $ret_str .= "\t" . '<quest_feedback>0</quest_feedback>' . "\n";
                     $ret_str .= "\t" . '<quest_feedback_repl_func><![CDATA[jq_QuizContinueFinish();]]></quest_feedback_repl_func>' . "\n";
                     $msg_html = ' ';
                 } else {
                     $msg_html = JoomlaQuiz_template_class::JQ_show_messagebox('', $is_correct ? $qtype == 8 ? $jq_language['quiz_answer_accepted'] : $jq_language['quiz_answer_correct'] : $jq_language['quiz_answer_incorrect'], $is_correct);
                     $ret_str .= "\t" . '<quest_feedback>1</quest_feedback>' . "\n";
                     $ret_str .= "\t" . '<quest_feedback_repl_func>0</quest_feedback_repl_func>' . "\n";
                 }
                 if ($is_no_attempts == 1) {
                     $msg_html = JoomlaQuiz_template_class::JQ_show_messagebox('', $jq_language['mes_no_attempts'], 2);
                 }
                 $ret_str .= "\t" . '<quiz_message_box><![CDATA[' . $msg_html . ']]></quiz_message_box>' . "\n";
                 /*$msg_html = JoomlaQuiz_template_class::JQ_show_messagebox('', (($is_correct)?(($qtype == 8)?$jq_language['quiz_answer_accepted']:$jq_language['quiz_answer_correct']):$jq_language['quiz_answer_incorrect']));
                 		if ($is_no_attempts == 1) {
                 			$msg_html = JoomlaQuiz_template_class::JQ_show_messagebox('', $jq_language['mes_no_attempts']);
                 		}
                 		$ret_str .= "\t" . '<quiz_message_box><![CDATA['.$msg_html.']]></quiz_message_box>' . "\n";*/
                 $ret_str .= "\t" . '<quiz_allow_attempt>' . $is_avail . '</quiz_allow_attempt>' . "\n";
                 $query = "SELECT sum(c_score) FROM #__lms_quiz_r_student_question WHERE c_stu_quiz_id = '" . $stu_quiz_id . "'";
                 $JLMS_DB->SetQuery($query);
                 $q_total_score = $JLMS_DB->LoadResult();
                 $query = "SELECT c_date_time FROM #__lms_quiz_r_student_quiz WHERE c_id = '" . $stu_quiz_id . "'";
                 $JLMS_DB->SetQuery($query);
                 $q_beg_time = $JLMS_DB->LoadResult();
                 $q_time_total = time() - date('Z') - strtotime($q_beg_time);
                 if (!$resume_id) {
                     $query = "UPDATE #__lms_quiz_r_student_quiz SET c_total_score = '" . $q_total_score . "', c_total_time = '" . $q_time_total . "' WHERE c_id = '" . $stu_quiz_id . "'";
                     $JLMS_DB->SetQuery($query);
                     $JLMS_DB->query();
                 }
             }
         }
     }
     return $ret_str;
 }