PageRenderTime 25ms CodeModel.GetById 15ms RepoModel.GetById 0ms app.codeStats 0ms

/ASTRA_Demo_Server/udrive/www/astra/interact/modules/quiz/viewanswers.php

https://github.com/shafiqissani/ASTRA-College-Website
PHP | 311 lines | 163 code | 111 blank | 37 comment | 30 complexity | eeda1c106cbef3b261a791391781f5d0 MD5 | raw file
  1. <?php
  2. // +------------------------------------------------------------------------+
  3. // | This file is part of Interact. |
  4. // | |
  5. // | This program is free software; you can redistribute it and/or modify |
  6. // | it under the terms of the GNU General Public License as published by |
  7. // | the Free Software Foundation (version 2) |
  8. // | |
  9. // | This program is distributed in the hope that it will be useful, but |
  10. // | WITHOUT ANY WARRANTY; without even the implied warranty of |
  11. // | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
  12. // | General Public License for more details. |
  13. // | |
  14. // | You should have received a copy of the GNU General Public License |
  15. // | along with this program; if not, you can view it at |
  16. // | http://www.opensource.org/licenses/gpl-license.php |
  17. // +------------------------------------------------------------------------+
  18. /**
  19. * View answers
  20. *
  21. * Displays quiz answers once quiz is closed
  22. *
  23. * @package Quiz
  24. * @author Glen Davies <glen.davies@cce.ac.nz>
  25. * @copyright Christchurch College of Education 2003
  26. * @version $Id: viewanswers.php,v 1.10 2007/07/30 01:57:04 glendavies Exp $
  27. *
  28. */
  29. /**
  30. * Include main system config file
  31. */
  32. require_once('../../local/config.inc.php');
  33. require_once($CONFIG['LANGUAGE_CPATH'].'/quiz_strings.inc.php');
  34. require_once('lib.inc.php');
  35. //set the required variables
  36. if ($_SERVER['REQUEST_METHOD']=='GET') {
  37. $module_key = $_GET['module_key'];
  38. }
  39. $rs = $CONN->SelectLimit("SELECT attempt_key FROM {$CONFIG['DB_PREFIX']}qt_attempts WHERE module_key='$module_key' AND user_key='{$_SESSION['current_user_key']}' ORDER BY time_finished DESC",1);
  40. while (!$rs->EOF) {
  41. $attempt_key = $rs->fields[0];
  42. $rs->MoveNext();
  43. }
  44. $rs = $CONN->Execute("SELECT item_key, response_ident FROM {$CONFIG['DB_PREFIX']}qt_attempts_data WHERE attempt_key='$attempt_key'");
  45. $attempt_data = array();
  46. $n=0;
  47. while (!$rs->EOF) {
  48. $item_keys[$n] = $rs->fields[0];
  49. $attempt_data['responses_'.$rs->fields[0]][0] = $rs->fields[1];
  50. $n++;
  51. $rs->MoveNext();
  52. }
  53. $attempt_data['item_keys'] = $item_keys;
  54. $userlevel_key = $_SESSION['userlevel_key'];
  55. $space_key = get_space_key();
  56. $link_key = get_link_key($module_key,$space_key);
  57. //check we have the required variables
  58. check_variables(true,false,true);
  59. //check to see if user is logged in.
  60. $access_levels = authenticate();
  61. $accesslevel_key = $access_levels['accesslevel_key'];
  62. $group_access = $access_levels['groups'];
  63. $group_accesslevel = $access_levels['group_accesslevel'][$group_key];
  64. $is_admin = check_module_edit_rights($module_key);
  65. $quiz = new InteractQuiz($space_key, $module_key, $group_key, $is_admin, $quiz_strings);
  66. $quiz_data = $quiz->getQuizData($module_key);
  67. //make sure quiz is closed
  68. if ($quiz_data['close_date_unix']>time() && $quiz_data['close_date_unix']!=0) {
  69. $message = urlencode($general_strings['access_denied']);
  70. header("Location: {$CONFIG['FULL_URL']}/modules/quiz/quiz.php?space_key=$space_key&module_key=$module_key&message=$message");
  71. exit;
  72. }
  73. foreach ($attempt_data['item_keys'] as $item_key) {
  74. $item_data = $quiz->getItemData($item_key);
  75. if ($item_data['rcardinality']=='Single') {
  76. $response_data = $quiz->getResponseData2($item_key, $attempt_data['responses_'.$item_key][0], 'Single');
  77. $attempt_data[$item_key] = $attempt_data['responses_'.$item_key][0];
  78. $item_responses[$item_key]['response_mattext'] = $response_data['response_mattext'];
  79. $item_responses[$item_key]['correct'] = $response_data['correct'];
  80. $item_responses[$item_key]['score'] = $response_data['score'];
  81. $item_responses[$item_key]['feedback'] = $response_data['feedback'];
  82. if ($item_responses[$item_key]['correct']==1 && $response_data['item_score']>0) {
  83. $total_score = $response_data['item_score']+$total_score;
  84. } else {
  85. $total_score = $response_data['score']+$total_score;
  86. }
  87. if ($response_data['correct']!=1) {
  88. $item_responses[$item_key]['correct_answer'] = $quiz->getCorrectResponse($item_key, 'Single');
  89. }
  90. //echo $response_data['correct'].' '.$response_data['score'].$response_data['feedback'].'<br />';
  91. } else if ($item_data['rcardinality']=='Multiple') {
  92. if (!is_array($attempt_data['responses_'.$item_key])) {
  93. $attempt_data['responses_'.$item_key]=array();
  94. } else {
  95. $multi_attempt_data = explode(',',$attempt_data['responses_'.$item_key][0]);
  96. $n=0;
  97. foreach($multi_attempt_data as $ident) {
  98. if ($ident!='') {
  99. $attempt_data['responses_'.$item_key][$n] = $ident;
  100. $n++;
  101. }
  102. }
  103. }
  104. $response_data = $quiz->getResponseData2($item_key, $attempt_data['responses_'.$item_key], 'Multiple');
  105. foreach ($attempt_data['responses_'.$item_key] as $ident) {
  106. $item_responses[$item_key]['response_mattext'] .= $quiz->getresponse_text($ident).'<br />';
  107. }
  108. $item_responses[$item_key]['correct'] = $response_data['correct'];
  109. $item_responses[$item_key]['score'] = $response_data['score'];
  110. $item_responses[$item_key]['feedback'] = $response_data['feedback'];
  111. if ($item_responses[$item_key]['correct']==1 && $response_data['item_score']>0) {
  112. $total_score = $response_data['item_score']+$total_score;
  113. } else {
  114. $total_score = $response_data['score']+$total_score;
  115. }
  116. if ($response_data['correct']!=1) {
  117. $item_responses[$item_key]['correct_answer'] = $quiz->getCorrectResponse($item_key, 'Multiple');
  118. }
  119. }
  120. }
  121. require_once($CONFIG['TEMPLATE_CLASS_PATH'].'/template.inc');
  122. $t = new Template($CONFIG['TEMPLATES_PATH']);
  123. $t->set_file(array(
  124. 'header' => 'header.ihtml',
  125. 'navigation' => 'navigation.ihtml',
  126. 'quiz' => 'quiz/runquiz.ihtml',
  127. 'footer' => 'footer.ihtml'
  128. ));
  129. // get page details for titles and breadcrumb navigation
  130. $page_details = get_page_details($space_key,$link_key);
  131. set_common_template_vars($space_key,$module_key,$page_details, $message, $accesslevel_key, $group_accesslevel);
  132. $t->set_var('SPACE_KEY',$space_key);
  133. $t->set_var('MODULE_KEY',$module_key);
  134. $t->set_var('ATTEMPT_KEY',$attempt_key);
  135. $t->set_var('ACTION',$action);
  136. $t->set_var('BUTTON',$button);
  137. $t->set_var('QUIZ_HEADING',$quiz_strings['intro']);
  138. $t->parse('CONTENTS', 'header', true);
  139. get_navigation();
  140. //now get all the questions and display them
  141. $t->set_block('quiz', 'ResponseBlock', 'RBlock');
  142. $t->set_block('quiz', 'FeedbackBlock', 'FBBlock');
  143. $t->set_block('quiz', 'ItemBlock', 'IBlock');
  144. $sort_order = "{$CONFIG['DB_PREFIX']}qt_module_item_links.sort_order";
  145. $rs = $CONN->Execute("SELECT {$CONFIG['DB_PREFIX']}qt_item.item_key, mattext, rcardinality FROM {$CONFIG['DB_PREFIX']}qt_item, {$CONFIG['DB_PREFIX']}qt_module_item_links WHERE {$CONFIG['DB_PREFIX']}qt_item.item_key={$CONFIG['DB_PREFIX']}qt_module_item_links.item_key AND {$CONFIG['DB_PREFIX']}qt_module_item_links.module_key='$module_key' ORDER BY $sort_order");
  146. $t->set_block('quiz', 'SubmitBlock', 'SBlock');
  147. $t->set_var('SBlock','');
  148. $t->set_var('FINISHED_STRING',$quiz_strings['finished']);
  149. if ($rs->EOF) {
  150. $t->set_block('quiz', 'SubmitBlock', 'SBlock');
  151. $t->set_var('SBlock',$quiz_strings['no_questions']);
  152. $t->set_var('FINISHED_STRING',$quiz_strings['finished']);
  153. } else {
  154. $n = 1;
  155. while (!$rs->EOF) {
  156. $t->set_var('RBlock','');
  157. $t->set_var('FBBlock','');
  158. $item_key = $rs->fields[0];
  159. $question_text = $rs->fields[1];
  160. $rcardinality = $rs->fields[2];
  161. $t->set_var('ITEM_MATTEXT',$question_text);
  162. $t->set_var('ITEM_NUMBER',$n);
  163. $t->set_var('ITEM_KEY',$item_key);
  164. $n++;
  165. $t->set_var('QUIZ_HEADING',$quiz_strings['completed_message']);
  166. $t->set_var('YOUR_ANSWER',$item_responses[$item_key]['response_mattext']);
  167. $t->set_var('YOUR_ANSWER_STRING',$quiz_strings['your_answer']);
  168. if ($item_responses[$item_key]['correct']==1) {
  169. $t->set_var('CORRECT_STRING',$quiz_strings['correct']);
  170. $t->set_var('CORRECT_ANSWER_STRING','');
  171. $t->set_var('CORRECT_ANSWER','');
  172. } else {
  173. $t->set_var('CORRECT_STRING','');
  174. if ($quiz_data['show_correct']==2 ) {
  175. $t->set_var('CORRECT_ANSWER_STRING',$quiz_strings['correct_answer']);
  176. $t->set_var('CORRECT_ANSWER',$item_responses[$item_key]['correct_answer']);
  177. } else {
  178. $t->set_var('CORRECT_ANSWER_STRING','');
  179. $t->set_var('CORRECT_ANSWER','');
  180. }
  181. }
  182. if (isset($item_responses[$item_key]['feedback']) && $item_responses[$item_key]['feedback']!='' && $quiz_data['show_feedback']==2) {
  183. $t->set_var('FEEDBACK',$item_responses[$item_key]['feedback']);
  184. $t->set_var('FEEDBACK_CLASS','quizFeedback');
  185. } else {
  186. $t->set_var('FEEDBACK','');
  187. $t->set_var('FEEDBACK_CLASS','');
  188. }
  189. $t->parse('FBBlock', 'FeedbackBlock', true);
  190. $t->parse('IBlock', 'ItemBlock', true);
  191. $rs->MoveNext();
  192. }
  193. }
  194. $t->parse('CONTENTS', 'quiz', true);
  195. $t->parse('CONTENTS', 'footer', true);
  196. print_headers();
  197. $t->p('CONTENTS');
  198. $CONN->Close();
  199. exit;
  200. ?>