function JQ_FinishQuiz($quiz_id, $stu_quiz_id, $user_unique_id, $id)
 {
     global $JLMS_DB, $my, $Itemid, $JLMS_CONFIG;
     $ret_str = '';
     require_once dirname(__FILE__) . '/ajax_quiz.class.php';
     $query = "SELECT * FROM #__lms_quiz_t_quiz WHERE c_id = '" . $quiz_id . "'";
     $JLMS_DB->SetQuery($query);
     $quiz = $JLMS_DB->LoadObjectList();
     if (count($quiz)) {
         $quiz = $quiz[0];
     } else {
         return $ret_str;
     }
     $quiz_params = new JLMSParameters($quiz->params);
     $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();
     $QA->set('stu_quiz_id', $stu_quiz_id);
     $QA->set('user_unique_id', $user_unique_id);
     $QA->quiz_ProcessStartData();
     if ($QA->start_valid() && $quiz_id) {
         $query = "SELECT SUM(c_score) FROM #__lms_quiz_r_student_question WHERE c_stu_quiz_id = '" . $stu_quiz_id . "'";
         $JLMS_DB->SetQuery($query);
         $user_score = $JLMS_DB->LoadResult();
         if (!$user_score) {
             $user_score = 0;
         }
         $max_score = $QA->quiz_Get_MaxScore();
         $nugno_score = $QA->get_qvar('c_passing_score', 0) * $max_score / 100;
         $user_passed = 0;
         if ($user_score >= $nugno_score) {
             $user_passed = 1;
         }
         $user_time = 0;
         $quiz_time1 = time() - date('Z');
         $query = "SELECT c_date_time FROM #__lms_quiz_r_student_quiz WHERE c_id = '" . $stu_quiz_id . "'";
         $JLMS_DB->SetQuery($query);
         $quiz_time2 = $JLMS_DB->LoadResult();
         $quiz_time2a = strtotime($quiz_time2);
         $user_time = $quiz_time1 - $quiz_time2a;
         $query = "SELECT c_total_score, c_passed, c_total_time FROM #__lms_quiz_r_student_quiz WHERE c_id = '" . $stu_quiz_id . "' and c_quiz_id = '" . $quiz_id . "' and c_student_id = '" . $my->id . "'";
         $JLMS_DB->SetQuery($query);
         $user_quiz_results_obj = $JLMS_DB->LoadObject();
         if (is_object($user_quiz_results_obj)) {
             $user_score = $user_quiz_results_obj->c_total_score;
             $user_passed = $user_quiz_results_obj->c_passed;
             $user_time = $user_quiz_results_obj->c_total_time;
         }
         // update lms results
         $lms_course = $QA->get_qvar('course_id', 0);
         $lms_quiz = $quiz_id;
         $lms_user = $my->id;
         $lms_score = $user_score;
         $lms_time = $user_time;
         $lms_date = date('Y-m-d H:i:s', time() - date('Z'));
         //the same as gmdate
         $lms_passed = $user_passed;
         global $JLMS_CONFIG;
         if ($lms_course && $JLMS_CONFIG->get('course_id') == $lms_course) {
             $course_params = $JLMS_CONFIG->get('course_params');
             $params = new JLMSParameters($course_params);
             $do_insert_new_res = false;
             if ($params->get('track_type', 0) == 1) {
                 $query = "SELECT * FROM #__lms_quiz_results WHERE course_id = '" . $lms_course . "' AND quiz_id = '" . $lms_quiz . "' AND user_id = '" . $lms_user . "'";
                 $JLMS_DB->SetQuery($query);
                 $old_user_results = $JLMS_DB->LoadObject();
                 if (is_object($old_user_results)) {
                     if (!$lms_passed && !$old_user_results->user_passed && $lms_score > $old_user_results->user_score) {
                         $do_insert_new_res = true;
                     } elseif ($lms_passed && !$old_user_results->user_passed) {
                         $do_insert_new_res = true;
                     } elseif ($lms_passed && $old_user_results->user_passed && $lms_score > $old_user_results->user_score) {
                         $do_insert_new_res = true;
                     } elseif ($lms_passed && $old_user_results->user_passed && $lms_score == $old_user_results->user_score && $lms_time < $old_user_results->user_time) {
                         $do_insert_new_res = true;
                     }
                 } else {
                     $do_insert_new_res = true;
                 }
             } else {
                 $do_insert_new_res = true;
             }
             if ($do_insert_new_res) {
                 $query = "DELETE FROM #__lms_quiz_results WHERE course_id = '" . $lms_course . "' AND quiz_id = '" . $lms_quiz . "' AND user_id = '" . $lms_user . "'";
                 $JLMS_DB->SetQuery($query);
                 $JLMS_DB->query();
                 $query = "INSERT INTO #__lms_quiz_results (course_id, quiz_id, user_id, user_score, quiz_max_score, user_time, quiz_date, user_passed)" . "\n VALUES ('" . $lms_course . "', '" . $lms_quiz . "', '" . $lms_user . "', '" . $lms_score . "', " . intval($max_score) . ", '" . $lms_time . "', '" . $lms_date . "', '" . $lms_passed . "')";
                 $JLMS_DB->SetQuery($query);
                 $JLMS_DB->query();
             }
         }
         // end of lms results section
         $cur_tmpl = 'joomlaquiz_lms_template';
         if ($cur_tmpl) {
             require_once dirname(__FILE__) . '/templates/' . $cur_tmpl . '/jq_template.php';
             global $JLMS_LANGUAGE, $JLMS_CONFIG;
             JLMS_require_lang($JLMS_LANGUAGE, 'quiz.lang', $JLMS_CONFIG->get('default_language'));
             require _JOOMLMS_FRONT_HOME . '/includes/quiz/quiz_language.php';
             global $jq_language;
             #$ret_str .= "\t" . '<task>results</task>' . "\n";
             $eee = $jq_language['quiz_header_fin_message'];
             #$ret_str .= "\t" . '<finish_msg><![CDATA[';
             if ($user_passed) {
                 if ($QA->get_qvar('c_pass_message', '')) {
                     $jq_language['quiz_user_passes'] = nl2br($QA->get_qvar('c_pass_message', ''));
                 }
             } else {
                 if ($QA->get_qvar('c_unpass_message', '')) {
                     $jq_language['quiz_user_fails'] = nl2br($QA->get_qvar('c_unpass_message', ''));
                 }
             }
             #$ret_str .= ']]></finish_msg>' . "\n";
             $t_ar = array();
             $t_ar[] = mosHTML::makeOption($user_score . " of " . $max_score, $jq_language['quiz_res_mes_score']);
             $t_ar[] = mosHTML::makeOption($nugno_score ? $nugno_score . " (" . $QA->get_qvar('c_passing_score', 0) . "%)" : '', $jq_language['quiz_res_mes_pas_score']);
             $tot_hour = floor($user_time / 3600);
             if ($tot_hour) {
                 $tot_min = floor(($user_time - $tot_hour * 3600) / 60);
                 $tot_sec = $user_time - $tot_hour * 3600 - $tot_min * 60;
                 $tot_time = str_pad($tot_hour, 2, "0", STR_PAD_LEFT) . ":" . str_pad($tot_min, 2, "0", STR_PAD_LEFT) . ":" . str_pad($tot_sec, 2, "0", STR_PAD_LEFT);
             } else {
                 $tot_min = floor($user_time / 60);
                 $tot_sec = $user_time - $tot_min * 60;
                 $tot_time = str_pad($tot_min, 2, "0", STR_PAD_LEFT) . ":" . str_pad($tot_sec, 2, "0", STR_PAD_LEFT);
             }
             $t_ar[] = mosHTML::makeOption($tot_time, $jq_language['quiz_res_mes_time']);
             if ($quiz_params->get('sh_final_page_text', 1) == 1) {
                 $results_txt = JoomlaQuiz_template_class::JQ_show_results($jq_language['quiz_header_fin_results'], $t_ar);
             } else {
                 $results_txt = '';
             }
             $footer_ar = array();
             $footer_ar[] = mosHTML::makeOption(0, $jq_language['quiz_fin_btn_review']);
             $footer_ar[] = mosHTML::makeOption(1, $jq_language['quiz_fin_btn_print']);
             $footer_ar[] = mosHTML::makeOption(2, $jq_language['quiz_fin_btn_certificate']);
             $footer_ar[] = mosHTML::makeOption(3, $jq_language['quiz_fin_btn_email']);
             $toolbar_fotter = array();
             if ($QA->get_qvar('c_certificate', 0) && $user_passed) {
                 $link_inside_1 = ampReplace($JLMS_CONFIG->get('live_site') . '/index.php?tmpl=component&option=com_joomla_lms&Itemid=' . $Itemid . '&no_html=1&task=print_quiz_cert&course_id=' . $lms_course . '&stu_quiz_id=' . $stu_quiz_id . '&user_unique_id=' . $user_unique_id);
                 $btn_certificate = 'window.open(\'' . $link_inside_1 . '\',\'blank\');';
                 $footer_ar[2]->text = "<div class='back_button'><a href='javascript:void(0)' onclick=\"window.open ('" . $JLMS_CONFIG->get('live_site') . "/index.php?tmpl=component&option=com_joomla_lms&Itemid=" . $Itemid . "&no_html=1&task=print_quiz_cert&course_id=" . $lms_course . "&stu_quiz_id=" . $stu_quiz_id . "&user_unique_id=" . $user_unique_id . "','blank');\">" . $jq_language['quiz_fin_btn_certificate'] . "</a></div>";
                 $toolbar_footer[2] = array('btn_type' => 'certificate_fbar', 'btn_js' => $btn_certificate);
             }
             if ($QA->get_qvar('c_enable_print', 0)) {
                 $link_inside_2 = ampReplace($JLMS_CONFIG->get('live_site') . '/index.php?tmpl=component&option=com_joomla_lms&Itemid=' . $Itemid . '&no_html=1&task=print_quiz_result&course_id=' . $lms_course . '&stu_quiz_id=' . $stu_quiz_id . '&user_unique_id=');
                 $btn_print = 'window.open(\'' . $link_inside_2 . '\'+user_unique_id,\'blank\');';
                 $footer_ar[1]->text = "<div class='back_button'><a href='javascript:void(0)' onclick=\"window.open ('" . $JLMS_CONFIG->get('live_site') . "/index.php?tmpl=component&option=com_joomla_lms&Itemid=" . $Itemid . "&no_html=1&task=print_quiz_result&course_id=" . $lms_course . "&stu_quiz_id=" . $stu_quiz_id . "&user_unique_id=' + user_unique_id,'blank');\">" . $jq_language['quiz_fin_btn_print'] . "</a></div>";
                 $toolbar_footer[1] = array('btn_type' => 'print_fbar', 'btn_js' => $btn_print);
             }
             if ($QA->get_qvar('c_email_to', 0)) {
                 $btn_email_to = 'jq_emailResults();';
                 $footer_ar[3]->text = "<div class='back_button'><a href='javascript:void(0)' onclick=\"jq_emailResults();\">" . $jq_language['quiz_fin_btn_email'] . "</a></div>";
                 $toolbar_footer[3] = array('btn_type' => 'email_to_fbar', 'btn_js' => $btn_email_to);
             }
             if ($QA->get_qvar('c_enable_review', 0)) {
                 $btn_review = 'jq_startReview();';
                 $query = "UPDATE #__lms_quiz_r_student_quiz SET allow_review = 1 WHERE c_id = '" . $stu_quiz_id . "' and c_quiz_id = '" . $quiz_id . "' and c_student_id = '" . $my->id . "'";
                 $JLMS_DB->SetQuery($query);
                 $JLMS_DB->query();
                 $footer_ar[0]->text = "<div class='back_button'><a href='javascript:void(0)' onclick=\"jq_startReview();\">" . $jq_language['quiz_fin_btn_review'] . "</a></div>";
                 $toolbar_footer[0] = array('btn_type' => 'review_fbar', 'btn_js' => $btn_review);
             }
             $footer_html_graf = '';
             if ($quiz_params->get('sh_final_page_grafic', 0) == 1) {
                 ////----barss----////
                 $is_pool = 0;
                 if ($quiz_id == -1 || $quiz_id == 0) {
                     $is_pool = 1;
                     $quiz_id = 0;
                 }
                 $rows = $QA->quiz_Get_QuestionList();
                 // 18 August 2007 - changes (DEN) - added check for GD and FreeType support
                 $generate_images = true;
                 $msg = '';
                 if (!function_exists('imageftbbox') || !function_exists('imagecreatetruecolor')) {
                     $generate_images = false;
                     $sec = false;
                     if (!function_exists('imagecreatetruecolor')) {
                         $msg = 'This function requires GD 2.0.1 or later (2.0.28 or later is recommended).';
                         $sec = true;
                     }
                     if (!function_exists('imageftbbox')) {
                         $msg .= ($sec ? '<br />' : '') . 'This function is only available if PHP is compiled with freetype support.';
                     }
                 }
                 // end of GD and FreeType support check
                 if ($JLMS_CONFIG->get('temp_folder', '') && $generate_images) {
                     // temp folder setup is ready.
                     //--------- array of bar-images
                     $img_arr = array();
                     $title_arr = array();
                     $count_graph = array();
                     global $option;
                     for ($i = 0, $n = count($rows); $i < $n; $i++) {
                         $row = $rows[$i];
                         $quest_params = new JLMSParameters($row->params);
                         $z = 1;
                         if (isset($row->c_pool) && $row->c_pool) {
                             $row->c_pool_id = $row->c_pool;
                         } else {
                             $row->c_pool_id = $row->c_id;
                         }
                         $show_case = true;
                         //					if($showtype_id && !$quest_params->get('survey_question'))
                         if (false && !$quest_params->get('survey_question')) {
                             $show_case = false;
                         }
                         if ($show_case) {
                             require_once _JOOMLMS_FRONT_HOME . "/includes/libraries/lms.lib.graph.php";
                             $group_id = 0;
                             $str_user_in_groups = '';
                             $c_question_id = $row->c_pool_id;
                             $obj_GraphStat = JLMS_GraphStatistics($option, $id, $quiz_id, $i, $z, $row, $c_question_id, $group_id, $str_user_in_groups);
                             foreach ($obj_GraphStat as $key => $item) {
                                 if (preg_match_all('#([a-z]+)_(\\w+)#', $key, $out, PREG_PATTERN_ORDER)) {
                                     if ($out[1][0] == 'img') {
                                         $img_arr[$i]->{$out}[2][0] = $item;
                                     } else {
                                         if ($out[1][0] == 'title') {
                                             $title_arr[$i]->{$out}[2][0] = $item;
                                         } else {
                                             if ($out[1][0] == 'count') {
                                                 $count_graph[$i]->{$out}[2][0] = $item;
                                             }
                                         }
                                     }
                                 }
                             }
                         }
                     }
                 }
                 $footer_html_graf = JoomlaQuiz_template_class::JQ_show_results_footer_content_bars($img_arr, $title_arr, $count_graph, $id);
             }
             $ret_str .= $results_txt;
             // this filed shouldn't be a null - null caused errors in Safari
             if ($quiz_params->get('sh_final_page_fdbck', 1) == 1) {
                 $ret_str .= '<br />';
                 $ret_str .= JoomlaQuiz_template_class::JQ_show_results_msg($eee, $user_passed ? $jq_language['quiz_user_passes'] : $jq_language['quiz_user_fails'], $user_passed);
                 $ret_str .= '<br />';
             } else {
                 $ret_str .= '<br />';
             }
             if (isset($toolbar_footer) && count($toolbar_footer) > 0) {
                 ksort($toolbar_footer);
                 $footer_html = JLMS_ShowToolbar($toolbar_footer, false, 'center');
                 $footer_html = str_replace('"components/com_joomla_lms', '"' . $JLMS_CONFIG->get('live_site') . '/components/com_joomla_lms', $footer_html);
             } else {
                 $footer_html = '';
             }
             $entire_footer_data = $footer_html . ($footer_html_graf ? '<br />' . $footer_html_graf : '');
             $ret_str .= $entire_footer_data ? $entire_footer_data : ' ';
         }
     }
     return $ret_str;
 }
Beispiel #2
0
 function JQ_NextQuestion_nojs()
 {
     global $JLMS_DB, $my, $option, $Itemid;
     $ret_str = '';
     $id = intval(mosGetParam($_REQUEST, 'id', 0));
     $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();
     $stu_quiz_id = intval(mosGetParam($_REQUEST, 'stu_quiz_id', 0));
     $quest_id = intval(mosGetParam($_REQUEST, 'quest_id', 0));
     $quiz_quest_num = intval(mosGetParam($_REQUEST, 'quiz_quest_num', 0));
     $user_unique_id = strval(mosGetParam($_REQUEST, 'user_unique_id', ''));
     $quest_score = intval(mosGetParam($_REQUEST, 'quest_score', 0));
     //		$answer = strval( mosGetParam( $_REQUEST, 'answer', '' ) );
     $id = $QA->get_qvar('course_id', 0);
     $QA->set('stu_quiz_id', $stu_quiz_id);
     $QA->set('user_unique_id', $user_unique_id);
     $QA->quiz_ProcessStartData();
     $q_data = $QA->quiz_Get_QuestionList();
     $kol_quests = count($q_data);
     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_nojs($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
          */
         $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;
                 $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;
         }
         $is_correct = 0;
         $is_no_attempts = 0;
         switch ($proc_qtype) {
             case 1:
             case 3:
             case 12:
                 if (isset($_REQUEST['quest_choice']) && $_REQUEST['quest_choice']) {
                     $answer = strval(mosGetParam($_REQUEST, 'quest_choice', ''));
                     $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 ($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 ($c_quest_cur_attempt >= $c_all_attempts) {
                             $ret_str .= "\t" . '<task>no_attempts</task>' . "\n";
                             $ret_str .= "\t" . '<quiz_menu><![CDATA[' . JLMS_ShowToolbar($toolbar_no_a) . ']]></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 ($is_avail) {
                         $correct = JLMS_quiz_ajax_class::correct_answer($is_correct);
                         $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();
                     }
                 } else {
                     JLMSRedirect(sefRelToAbs("index.php?option={$option}&Itemid={$Itemid}&task=quiz_action&id=" . $id . "&quiz=" . $quiz_id . "&atask=goto_quest&seek_quest_id=" . $quest_id . "&quest_num=" . $quiz_quest_num . "&stu_quiz_id=" . $stu_quiz_id . "&user_unique_id=" . $user_unique_id . ""));
                 }
                 break;
             case 2:
             case 13:
                 if (isset($_REQUEST['quest_choice']) && $_REQUEST['quest_choice']) {
                     $answer = implode(',', $_REQUEST['quest_choice']);
                     $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 ($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 ($c_quest_cur_attempt >= $c_all_attempts) {
                             $ret_str .= "\t" . '<task>no_attempts</task>' . "\n";
                             $ret_str .= "\t" . '<quiz_menu><![CDATA[' . JLMS_ShowToolbar($toolbar_no_a) . ']]></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 ($is_avail) {
                         $correct = JLMS_quiz_ajax_class::correct_answer($is_correct);
                         $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++;
                         }
                     }
                 } else {
                     JLMSRedirect(sefRelToAbs("index.php?option={$option}&Itemid={$Itemid}&task=quiz_action&id=" . $id . "&quiz=" . $quiz_id . "&atask=goto_quest&seek_quest_id=" . $quest_id . "&quest_num=" . $quiz_quest_num . "&stu_quiz_id=" . $stu_quiz_id . "&user_unique_id=" . $user_unique_id . ""));
                 }
                 break;
             case 4:
             case 5:
             case 11:
                 $count_match = count($_REQUEST['quest_match']);
                 $arr_error = 1;
                 for ($ji = 0; $ji < $count_match; $ji++) {
                     if ($_REQUEST['quest_match'][$ji] == '{0}') {
                         $arr_error = 0;
                     }
                 }
                 if (isset($_REQUEST['quest_match']) && $_REQUEST['quest_match'] && $arr_error) {
                     $answer = implode('```', $_REQUEST['quest_match']);
                     $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;
                     $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) {
                             /**
                              * 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: 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 ($c_quest_cur_attempt >= $c_all_attempts) {
                             $ret_str .= "\t" . '<task>no_attempts</task>' . "\n";
                             $ret_str .= "\t" . '<quiz_menu><![CDATA[' . JLMS_ShowToolbar($toolbar_no_a) . ']]></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 ($is_avail) {
                         $correct = JLMS_quiz_ajax_class::correct_answer($is_correct);
                         $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++;
                         }
                     }
                 } else {
                     JLMSRedirect(sefRelToAbs("index.php?option={$option}&Itemid={$Itemid}&task=quiz_action&id=" . $id . "&quiz=" . $quiz_id . "&atask=goto_quest&seek_quest_id=" . $quest_id . "&quest_num=" . $quiz_quest_num . "&stu_quiz_id=" . $stu_quiz_id . "&user_unique_id=" . $user_unique_id . ""));
                 }
                 break;
             case 6:
                 if (isset($_REQUEST['quest_blank']) && $_REQUEST['quest_blank'] != '') {
                     $answer = strval(mosGetParam($_REQUEST, 'quest_blank', ''));
                     $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(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 ($c_quest_cur_attempt >= $c_all_attempts) {
                             $ret_str .= "\t" . '<task>no_attempts</task>' . "\n";
                             $ret_str .= "\t" . '<quiz_menu><![CDATA[' . JLMS_ShowToolbar($toolbar_no_a) . ']]></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 ($is_avail) {
                         $correct = JLMS_quiz_ajax_class::correct_answer($is_correct);
                         $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();
                     }
                 } else {
                     JLMSRedirect(sefRelToAbs("index.php?option={$option}&Itemid={$Itemid}&task=quiz_action&id=" . $id . "&quiz=" . $quiz_id . "&atask=goto_quest&seek_quest_id=" . $quest_id . "&quest_num=" . $quiz_quest_num . "&stu_quiz_id=" . $stu_quiz_id . "&user_unique_id=" . $user_unique_id . ""));
                 }
                 break;
             case 7:
                 $answer = $_REQUEST['hotspot_x'] . ',' . $_REQUEST['hotspot_y'];
                 $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 ($c_quest_cur_attempt >= $c_all_attempts) {
                         $ret_str .= "\t" . '<task>no_attempts</task>' . "\n";
                         $ret_str .= "\t" . '<quiz_menu><![CDATA[' . JLMS_ShowToolbar($toolbar_no_a) . ']]></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 ($is_avail) {
                     $correct = JLMS_quiz_ajax_class::correct_answer($is_correct);
                     $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:
                 if (isset($_REQUEST['survey_box']) && $_REQUEST['survey_box'] != '') {
                     $answer = strval(mosGetParam($_REQUEST, 'survey_box', ''));
                     $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 ($c_quest_cur_attempt >= $c_all_attempts) {
                             $ret_str .= "\t" . '<task>no_attempts</task>' . "\n";
                             $ret_str .= "\t" . '<quiz_menu><![CDATA[' . JLMS_ShowToolbar($toolbar_no_a) . ']]></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 ($is_avail) {
                         $correct = JLMS_quiz_ajax_class::correct_answer($is_correct);
                         $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();
                     }
                 } else {
                     JLMSRedirect(sefRelToAbs("index.php?option={$option}&Itemid={$Itemid}&task=quiz_action&id=" . $id . "&quiz=" . $quiz_id . "&atask=goto_quest&seek_quest_id=" . $quest_id . "&quest_num=" . $quiz_quest_num . "&stu_quiz_id=" . $stu_quiz_id . "&user_unique_id=" . $user_unique_id . ""));
                 }
                 break;
             case 9:
                 for ($ji = 0; $ji < $_REQUEST['scale_count']; $ji++) {
                     if (isset($_REQUEST['ch_scale_' . $ji]) && $_REQUEST['ch_scale_' . $ji]) {
                         $arr[] = $_REQUEST['ch_scale_' . $ji];
                     }
                 }
                 $is_correct = 1;
                 if (count($arr) == $_REQUEST['scale_count']) {
                     $answer = implode(",", $arr);
                     $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;
                     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 ($c_quest_cur_attempt >= $c_all_attempts) {
                             $ret_str .= "\t" . '<task>no_attempts</task>' . "\n";
                             $ret_str .= "\t" . '<quiz_menu><![CDATA[' . JLMS_ShowToolbar($toolbar_no_a) . ']]></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 ($is_avail) {
                         $correct = JLMS_quiz_ajax_class::correct_answer($is_correct);
                         $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 = '" . $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();
                         }
                     }
                 } else {
                     JLMSRedirect(sefRelToAbs("index.php?option={$option}&Itemid={$Itemid}&task=quiz_action&id=" . $id . "&quiz=" . $quiz_id . "&atask=goto_quest&seek_quest_id=" . $quest_id . "&quest_num=" . $quiz_quest_num . "&stu_quiz_id=" . $stu_quiz_id . "&user_unique_id=" . $user_unique_id . ""));
                 }
                 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 ($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 ($is_avail) {
                     $correct = JLMS_quiz_ajax_class::correct_answer($is_correct);
                     $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;
         //				$quest_num = intval( mosGetParam( $_REQUEST, 'quiz_quest_num', 1 ) );
         /*function to show feedback for the answer to question*/
         //				JLMS_quiz_ajax_class::feedback($is_correct, $qtype, $quiz, $quest_id);
         /* 24 April 2007 (DEN)
          * Get next question from all quiz quests
          */
         /*now it will the function of showing next question */
         $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;
         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 = $q_num;
                 $j = $q_num_ar;
             }
         }
         //
         //				echo $j;
         //			echo 'q_num='.$q_num;
         $is_avail = 1;
         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;
         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;
                     }
                 }
             }
         }
         //				echo '<pre>';
         //				print_r($q_data);
         //				print_r($jq_language);
         //				echo '</pre>';
         $query = "SELECT a.*, b.lpath_id FROM #__lms_learn_path_step_quiz_results as a, #__lms_learn_path_steps as b WHERE a.stu_quiz_id = '" . $stu_quiz_id . "' AND a.step_id = b.id";
         $JLMS_DB->setQuery($query);
         $this_lpath = $JLMS_DB->LoadObject();
         $cur_tmpl = 'joomlaquiz_lms_template';
         if ($cur_tmpl) {
             require_once dirname(__FILE__) . '/templates/' . $cur_tmpl . '/jq_template.php';
             if (isset($q_data[$j])) {
                 $atask = 'next_load';
                 if ($quiz_params->get('disable_quest_feedback') || $quest_params->get('disable_quest_feedback') || $quest_params->get('survey_question') || $qtype == 10) {
                     $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);
                 }
                 if ($is_no_attempts == 1) {
                     $msg_html = JoomlaQuiz_template_class::JQ_show_messagebox('', $jq_language['mes_no_attempts'], 2);
                 }
                 $toolbar = array();
                 if (isset($this_lpath->stu_quiz_id) && $this_lpath->stu_quiz_id == $stu_quiz_id) {
                     if (isset($quiz->c_slide) && $quiz->c_slide) {
                         $toolbar[] = array('kol_quests' => $kol_quests, 'num_quest' => $quest_num, 'quest_score' => $quest_score, 'img_btn' => 'btn_start.png', 'text_btn' => _JLMS_NEXT_ALT_TITLE, 'link_cont' => '&task=show_lpath_nojs&action=contents_lpath&course_id=' . $id . '&id=' . $this_lpath->lpath_id . '&stu_quiz_id=' . $stu_quiz_id . '&user_unique_id=' . $this_lpath->unique_id . '&step_id=' . $this_lpath->step_id . '&user_start_id=' . $this_lpath->start_id . '&quest_id=' . $quest_id . '&quiz_id=' . $quiz_id . '&stu_quiz_id=' . $stu_quiz_id . '');
                     } else {
                         $toolbar[] = array('kol_quests' => $kol_quests, 'num_quest' => $quest_num, 'quest_score' => $quest_score, 'img_btn' => 'btn_start.png', 'text_btn' => _JLMS_NEXT_ALT_TITLE);
                     }
                 } else {
                     if (isset($quiz->c_slide) && $quiz->c_slide) {
                         $toolbar[] = array('kol_quests' => $kol_quests, 'num_quest' => $quest_num, 'quest_score' => $quest_score, 'img_btn' => 'btn_start.png', 'text_btn' => _JLMS_NEXT_ALT_TITLE, 'link_cont' => '&task=quiz_action&atask=contents&id=' . $id . '&quiz=' . $quiz_id . '&stu_quiz_id=' . $stu_quiz_id . '&user_unique_id=' . $user_unique_id . '&quest_id=' . $quest_id . '');
                     } else {
                         $toolbar[] = array('kol_quests' => $kol_quests, 'num_quest' => $quest_num, 'quest_score' => $quest_score, 'img_btn' => 'btn_start.png', 'text_btn' => _JLMS_NEXT_ALT_TITLE);
                     }
                 }
                 if ($quiz_params->get('disable_quest_feedback') || $quest_params->get('disable_quest_feedback') || $quest_params->get('survey_question') || $qtype == 10) {
                     JLMSRedirect(sefRelToAbs("index.php?option={$option}&Itemid={$Itemid}&task=quiz_action&id={$id}&quiz={$quiz_id}&quest_id={$quest_id}&stu_quiz_id={$stu_quiz_id}&user_unique_id={$user_unique_id}&atask={$atask}"));
                 } else {
                     JLMS_quiz_ajax_class::JQ_feedback_nojs($atask, $id, $quiz_id, $msg_html, $toolbar, $stu_quiz_id, $user_unique_id, $quest_id);
                 }
             } else {
                 $atask = 'finish_stop';
                 if ($quiz_params->get('disable_quest_feedback') || $quest_params->get('disable_quest_feedback') || $quest_params->get('survey_question') || $qtype == 10) {
                     $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);
                 }
                 if ($is_no_attempts == 1) {
                     $msg_html = JoomlaQuiz_template_class::JQ_show_messagebox('', $jq_language['mes_no_attempts'], 2);
                 }
                 $toolbar = array();
                 if (isset($this_lpath->stu_quiz_id) && $this_lpath->stu_quiz_id == $stu_quiz_id) {
                     if (isset($quiz->c_slide) && $quiz->c_slide) {
                         $toolbar[] = array('kol_quests' => $kol_quests, 'num_quest' => $quest_num, 'quest_score' => $quest_score, 'img_btn' => 'btn_start.png', 'text_btn' => _JLMS_NEXT_ALT_TITLE, 'link_cont' => '&task=show_lpath_nojs&action=contents_lpath&course_id=' . $id . '&id=' . $this_lpath->lpath_id . '&stu_quiz_id=' . $stu_quiz_id . '&user_unique_id=' . $this_lpath->unique_id . '&step_id=' . $this_lpath->step_id . '&user_start_id=' . $this_lpath->start_id . '&quest_id=' . $quest_id . '&quiz_id=' . $quiz_id . '&stu_quiz_id=' . $stu_quiz_id . '');
                     } else {
                         $toolbar[] = array('kol_quests' => $kol_quests, 'num_quest' => $quest_num, 'quest_score' => $quest_score, 'img_btn' => 'btn_start.png', 'text_btn' => _JLMS_NEXT_ALT_TITLE);
                     }
                 } else {
                     if (isset($quiz->c_slide) && $quiz->c_slide) {
                         $toolbar[] = array('kol_quests' => $kol_quests, 'num_quest' => $quest_num, 'quest_score' => $quest_score, 'img_btn' => 'btn_start.png', 'text_btn' => _JLMS_NEXT_ALT_TITLE, 'link_cont' => '&task=quiz_action&atask=contents&id=' . $id . '&quiz=' . $quiz_id . '&stu_quiz_id=' . $stu_quiz_id . '&user_unique_id=' . $user_unique_id . '&quest_id=' . $quest_id . '');
                     } else {
                         $toolbar[] = array('kol_quests' => $kol_quests, 'num_quest' => $quest_num, 'quest_score' => $quest_score, 'img_btn' => 'btn_start.png', 'text_btn' => _JLMS_NEXT_ALT_TITLE);
                     }
                 }
                 if ($quiz_params->get('disable_quest_feedback') || $quest_params->get('disable_quest_feedback') || $quest_params->get('survey_question') || $qtype == 10) {
                     JLMSRedirect(sefRelToAbs("index.php?option={$option}&Itemid={$Itemid}&task=quiz_action&id={$id}&quiz={$quiz_id}&quest_id={$quest_id}&stu_quiz_id={$stu_quiz_id}&user_unique_id={$user_unique_id}&atask={$atask}"));
                 } else {
                     JLMS_quiz_ajax_class::JQ_feedback_nojs($atask, $id, $quiz_id, $msg_html, $toolbar, $stu_quiz_id, $user_unique_id, $quest_id);
                 }
                 $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);
                 $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();
             }
         }
     }
     //		echo $ret_str;
     //		return $ret_str;
 }