function JQ_StartReview_nojs() { global $JLMS_DB, $my, $option, $Itemid, $JLMS_CONFIG; $ret_str = ''; $doc =& JFactory::getDocument(); $id = intval(mosGetParam($_REQUEST, 'id', 0)); $quiz_id = intval(mosGetParam($_REQUEST, 'quiz', 0)); $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); $now = date('Y-m-d H:i:s', time() - date('Z')); if ($quiz->published) { if ($my->id) { } elseif ($quiz->c_guest) { } else { return $ret_str; } } else { $JLMS_ACL =& JLMSFactory::getACL(); if (!$JLMS_ACL->CheckPermissions('quizzes', 'view_all')) { return $ret_str; } } if ($quiz_id) { $stu_quiz_id = intval(mosGetParam($_REQUEST, 'stu_quiz_id', 0)); $user_unique_id = strval(mosGetParam($_REQUEST, 'user_unique_id', '')); if ($stu_quiz_id) { $query = "SELECT c_quiz_id, c_student_id, unique_id, allow_review, c_passed FROM #__lms_quiz_r_student_quiz WHERE c_id = '" . $stu_quiz_id . "'"; $JLMS_DB->SetQuery($query); $st_quiz_data = $JLMS_DB->LoadObjectList(); $start_quiz = 0; if (count($st_quiz_data)) { $start_quiz = $st_quiz_data[0]->c_quiz_id; } else { return ''; } if ($user_unique_id != $st_quiz_data[0]->unique_id) { return ''; } if ($my->id != $st_quiz_data[0]->c_student_id) { return ''; } if ($start_quiz != $quiz_id) { return ''; } if (!$st_quiz_data[0]->allow_review) { return ''; } $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(); // 22.04.2008 Bugfix - support for Questions pool $inside_lp = intval(mosGetParam($_REQUEST, 'inside_lp', 0)); $QA = new JLMS_quiz_API($quiz_id, $inside_lp); if (!$QA->quiz_valid()) { return ''; } $QA->set('stu_quiz_id', $stu_quiz_id); $QA->set('user_unique_id', $user_unique_id); $QA->quiz_ProcessStartData(); if ($QA->start_valid()) { $q_data = $QA->quiz_Get_QuestionList(); } 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; 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)); } $quest_params = new JLMSParameters($q_data[0]->params); if ($quest_params->get('survey_question') == 1) { $is_survey = 1; } else { $is_survey = 0; } $is_correct = 0; //---test for right quest $proc_quest_id = $q_data[0]->c_id; if (isset($q_data[0]->c_pool) && $q_data[0]->c_pool) { $q_data[0]->old_c_id = $q_data[0]->c_id; $q_data[0]->c_id = $q_data[0]->c_pool; $proc_quest_id_pool = $q_data[0]->c_pool; } elseif (isset($q_data[0]->c_pool_gqp) && $q_data[0]->c_pool_gqp) { $q_data[0]->old_c_id = $q_data[0]->c_id; $q_data[0]->c_id = $q_data[0]->c_pool_gqp; $proc_quest_id_pool = $q_data[0]->c_pool_gqp; } else { $proc_quest_id_pool = $q_data[0]->c_id; $q_data[0]->old_c_id = $q_data[0]->c_id; } $proc_quest_id = $q_data[0]->c_id; switch ($q_data[0]->c_type) { case 1: case 3: case 12: $query = "SELECT qst.c_id FROM #__lms_quiz_r_student_quiz as qz, #__lms_quiz_r_student_question as qst WHERE qz.c_id = qst.c_stu_quiz_id AND qz.unique_id = '" . $user_unique_id . "' AND c_question_id='" . $proc_quest_id . "'"; $JLMS_DB->SetQuery($query); $sqtq_id = $JLMS_DB->LoadResult(); $query = "SELECT c_choice_id FROM #__lms_quiz_r_student_choice WHERE c_sq_id = '" . $sqtq_id . "'"; $JLMS_DB->SetQuery($query); $answer = $JLMS_DB->LoadResult(); $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_pool . "' and b.c_question_id = a.c_id and b.c_right = '1'"; $JLMS_DB->SetQuery($query); $ddd = $JLMS_DB->LoadObjectList(); if ($answer) { if (count($ddd)) { if ($ddd[0]->c_id == $answer) { $is_correct = 1; } } } break; case 2: case 13: $query = "SELECT qst.c_id FROM #__lms_quiz_r_student_quiz as qz, #__lms_quiz_r_student_question as qst WHERE qz.c_id = qst.c_stu_quiz_id AND qz.unique_id = '" . $user_unique_id . "' AND c_question_id='" . $proc_quest_id . "'"; $JLMS_DB->SetQuery($query); $sqtq_id = $JLMS_DB->LoadResult(); $query = "SELECT c_choice_id FROM #__lms_quiz_r_student_choice WHERE c_sq_id = '" . $sqtq_id . "'"; $JLMS_DB->SetQuery($query); $answers = $JLMS_DB->LoadObjectList(); $answer = array(); if (count($answers)) { foreach ($answers as $answ) { $answer[] = $answ->c_choice_id; } } $query = "SELECT a.c_point, a.c_attempts FROM #__lms_quiz_t_question as a WHERE a.c_id = '" . $proc_quest_id_pool . "'"; $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_pool . "' 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_pool . "' and b.c_question_id = a.c_id and b.c_right <> '1'"; $JLMS_DB->SetQuery($query); $ddd3 = $JLMS_DB->LoadObjectList(); $ans_array = $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; } } } break; case 4: case 5: case 11: $query = "SELECT qst.c_id FROM #__lms_quiz_r_student_quiz as qz, #__lms_quiz_r_student_question as qst WHERE qz.c_id = qst.c_stu_quiz_id AND qz.unique_id = '" . $user_unique_id . "' AND c_question_id='" . $proc_quest_id . "'"; $JLMS_DB->SetQuery($query); $sqtq_id = $JLMS_DB->LoadResult(); $query = "SELECT a.c_sel_text as c_sel_text FROM #__lms_quiz_r_student_matching as a, #__lms_quiz_t_matching as b WHERE a.c_sq_id = '" . $sqtq_id . "' AND a.c_matching_id = b.c_id ORDER BY b.ordering"; $JLMS_DB->SetQuery($query); $answers = $JLMS_DB->LoadObjectList(); if (count($answers)) { foreach ($answers as $answ) { $answer[] = $answ->c_sel_text; } } $query = "SELECT a.c_point, a.c_attempts FROM #__lms_quiz_t_question as a WHERE a.c_id = '" . $proc_quest_id_pool . "'"; $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_pool . "' and b.c_question_id = a.c_id ORDER BY b.ordering"; $JLMS_DB->SetQuery($query); $ddd2 = $JLMS_DB->LoadObjectList(); $ans_array = $answer; if (count($ddd2) && count($ddd)) { $is_correct = 1; $rr_num = 0; foreach ($ddd2 as $right_row) { if ($right_row->c_right_text != $ans_array[$rr_num]) { $is_correct = 0; } $rr_num++; } } break; case 6: $query = "SELECT qst.c_id FROM #__lms_quiz_r_student_quiz as qz, #__lms_quiz_r_student_question as qst WHERE qz.c_id = qst.c_stu_quiz_id AND qz.unique_id = '" . $user_unique_id . "' AND c_question_id='" . $proc_quest_id . "'"; $JLMS_DB->SetQuery($query); $sqtq_id = $JLMS_DB->LoadResult(); $query = "SELECT c_answer FROM #__lms_quiz_r_student_blank WHERE c_sq_id = '" . $sqtq_id . "'"; $JLMS_DB->SetQuery($query); $answer = $JLMS_DB->LoadResult(); $query = "SELECT a.c_point, a.c_attempts FROM #__lms_quiz_t_question as a WHERE a.c_id = '" . $proc_quest_id_pool . "'"; $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_pool . "' and b.c_question_id = a.c_id and c.c_blank_id = b.c_id"; $JLMS_DB->SetQuery($query); $ddd2 = $JLMS_DB->LoadObjectList(); $answer = trim(urldecode($answer)); if (count($ddd2) && count($ddd)) { foreach ($ddd2 as $right_row) { if (strtolower($right_row->c_text) === strtolower($answer)) { $is_correct = 1; } } } break; case 7: $query = "SELECT qst.c_id FROM #__lms_quiz_r_student_quiz as qz, #__lms_quiz_r_student_question as qst WHERE qz.c_id = qst.c_stu_quiz_id AND qz.unique_id = '" . $user_unique_id . "' AND c_question_id='" . $proc_quest_id . "'"; $JLMS_DB->SetQuery($query); $sqtq_id = $JLMS_DB->LoadResult(); $query = "SELECT * FROM #__lms_quiz_r_student_hotspot WHERE c_sq_id = '" . $sqtq_id . "'"; $JLMS_DB->SetQuery($query); $answers = $JLMS_DB->LoadObjectList(); $answer = array(); if (count($answers)) { $answer[0] = $answers[0]->c_select_x; $answer[1] = $answers[0]->c_select_y; } if (count($answer)) { $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_pool . "' and b.c_question_id = a.c_id"; $JLMS_DB->SetQuery($query); $ddd = $JLMS_DB->LoadObjectList(); if (count($ddd)) { $ans_array = $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; } } } break; case 8: $is_correct = 1; $is_survey = 1; $answer = array(); break; case 9: $is_correct = 1; $is_survey = 1; $query = "SELECT qst.c_id FROM #__lms_quiz_r_student_quiz as qz, #__lms_quiz_r_student_question as qst WHERE qz.c_id = qst.c_stu_quiz_id AND qz.unique_id = '" . $user_unique_id . "' AND c_question_id='" . $proc_quest_id . "'"; $JLMS_DB->SetQuery($query); $sqtq_id = $JLMS_DB->LoadResult(); $query = "SELECT * FROM #__lms_quiz_r_student_scale WHERE c_sq_id = '" . $sqtq_id . "'"; $JLMS_DB->SetQuery($query); $answers = $JLMS_DB->LoadObjectList(); $answer = array(); for ($p = 0; $p < count($answers); $p++) { $answer[$p][0] = $answers[$p]->q_scale_id; $answer[$p][1] = $answers[$p]->scale_id; } break; case 10: $is_correct = 1; $is_survey = 1; $answer = array(); break; } if (!substr_count($quiz->params, 'disable_quest_feedback=1') && !substr_count($q_data[0]->params, 'disable_quest_feedback=1')) { //--- if ($is_survey) { $msg_cor = ''; } else { if ($is_correct) { $msg_cor = $jq_language['quiz_answer_correct']; } else { $msg_cor = $jq_language['quiz_answer_incorrect']; } } } else { $msg_cor = ''; } // $ret_str .= "\t" . '<quiz_review_correct><![CDATA['.$msg_cor.']]></quiz_review_correct>' . "\n"; //--explanation $explans = ''; if (!$is_survey) { switch ($quiz_params->get('sh_explanation')) { case '1': case '12': if ($q_data[0]->c_explanation) { $explans = $q_data[0]->c_explanation; } break; case '2': case '13': if ($st_quiz_data[0]->c_passed) { if ($q_data[0]->c_explanation) { $explans = $q_data[0]->c_explanation; } } break; case '3': if (!$st_quiz_data[0]->c_passed) { if ($q_data[0]->c_explanation) { $explans = $q_data[0]->c_explanation; } } break; } } // $ret_str .= "\t" . '<quiz_review_explanation><![CDATA['.$explans.']]></quiz_review_explanation>' . "\n"; $kol_quests = count($q_data); $quest_score = $q_data[0]->c_point; $qtype = $q_data[0]->c_type; $quest_id = $q_data[0]->c_id; $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(); $toolbar = array(); if (isset($this_lpath->stu_quiz_id) && $this_lpath->stu_quiz_id == $stu_quiz_id) { if ($qtype == 10) { if (isset($q_data[$j]->c_slide) && $q_data[$j]->c_slide) { $toolbar[] = array('kol_quests' => $kol_quests, 'num_quest' => 1, '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' => 1, 'quest_score' => $quest_score, 'img_btn' => 'btn_start.png', 'text_btn' => _JLMS_NEXT_ALT_TITLE); } } else { if (isset($q_data[$j]->c_slide) && $q_data[$j]->c_slide) { $toolbar[] = array('kol_quests' => $kol_quests, 'num_quest' => 1, 'quest_score' => $quest_score, 'img_btn' => 'btn_complete.png', 'text_btn' => _JLMS_OK_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' => 1, 'quest_score' => $quest_score, 'img_btn' => 'btn_complete.png', 'text_btn' => _JLMS_OK_ALT_TITLE); } } } else { if ($qtype == 10) { if (isset($q_data[$j]->c_slide) && $q_data[$j]->c_slide) { $toolbar[] = array('kol_quests' => $kol_quests, 'num_quest' => 1, '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' => 1, 'quest_score' => $quest_score, 'img_btn' => 'btn_start.png', 'text_btn' => _JLMS_NEXT_ALT_TITLE); } } else { if (isset($q_data[$j]->c_slide) && $q_data[$j]->c_slide) { $toolbar[] = array('kol_quests' => $kol_quests, 'num_quest' => 1, 'quest_score' => $quest_score, 'img_btn' => 'btn_complete.png', 'text_btn' => _JLMS_OK_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' => 1, 'quest_score' => $quest_score, 'img_btn' => 'btn_complete.png', 'text_btn' => _JLMS_OK_ALT_TITLE); } } } $doc->addStyleSheet($JLMS_CONFIG->get('live_site') . '/components/com_joomla_lms/includes/quiz/templates/joomlaquiz_lms_template/jq_template.css'); ?> <form name="quest_form" action="<?php echo ampReplace($JLMS_CONFIG->get('live_site') . "/index.php?option={$option}&Itemid={$Itemid}"); ?> " method="post"> <table border="0" width="100%" align="center" cellpadding="0" cellspacing="0" class="jlms_table_no_borders"> <tr> <td> <?php echo JLMS_quiz_ajax_class::JQ_toolbar_nojs($toolbar, $qtype, 1); ?> <input type="hidden" name="stu_quiz_id" value="<?php echo $stu_quiz_id; ?> "/> <input type="hidden" name="user_unique_id" value="<?php echo $user_unique_id; ?> "/> </td> </tr> <tr> <td> <?php if ($kol_quests > 0) { $quest_num = 0; # commented 25 April 2007 (DEN) # we've already randomized auestions in the sequence /*if ($QA->get_qvar('c_random')) { $quest_num = rand(0, ($kol_quests - 1) ); }*/ ?> <input type="hidden" name="quiz_count_quests" value="<?php echo $kol_quests; ?> "/> <input type="hidden" name="quiz_quest_num" value="1"/> <?php echo JLMS_quiz_ajax_class::JQ_GetQuestData_review_nojs($q_data[0], $jq_language, $answer, $quiz_params->get('sh_user_answer'), $is_survey, $msg_cor, $is_correct); // $ret_str .= JLMS_quiz_ajax_class::JQ_GetPanelData_nojs($quiz_id, $q_data); ?> <?php } if ($explans != '') { echo JoomlaQuiz_template_class::JQ_show_messagebox('', $explans, 3); } ?> </td> </tr> </table> <input type="hidden" name="option" value="<?php echo $option; ?> "/> <input type="hidden" name="task" value="quiz_action"/> <input type="hidden" name="id" value="<?php echo $id; ?> "/> <input type="hidden" name="quiz" value="<?php echo $quiz_id; ?> "/> <input type="hidden" name="atask" value="review_next"/> </form> <?php } } // return $ret_str; }