PageRenderTime 46ms CodeModel.GetById 17ms RepoModel.GetById 0ms app.codeStats 0ms

/mod/feedback/item/numeric/lib.php

https://github.com/nadavkav/MoodleTAO
PHP | 230 lines | 175 code | 33 blank | 22 comment | 25 complexity | 3ae06bf3f90a4f8dc331b43f14fe6ade MD5 | raw file
  1. <?php // $Id: lib.php,v 1.7.2.4 2008/06/20 20:54:37 agrabs Exp $
  2. defined('FEEDBACK_INCLUDE_TEST') OR die('not allowed');
  3. require_once($CFG->dirroot.'/mod/feedback/item/feedback_item_class.php');
  4. class feedback_item_numeric extends feedback_item_base {
  5. var $type = "numeric";
  6. function init() {
  7. }
  8. function &show_edit($item) {
  9. global $CFG;
  10. require_once('numeric_form.php');
  11. $item_form = new feedback_numeric_form();
  12. $item->presentation = empty($item->presentation) ? '' : $item->presentation;
  13. $item->name = empty($item->name) ? '' : htmlspecialchars(stripslashes_safe($item->name));
  14. $item->required = isset($item->required) ? $item->required : 0;
  15. if($item->required) {
  16. $item_form->requiredcheck->setValue(true);
  17. }
  18. $item_form->itemname->setValue($item->name);
  19. $range_from_to = explode('|',$item->presentation);
  20. $range_from = isset($range_from_to[0]) ? intval($range_from_to[0]) : 0;
  21. $range_to = isset($range_from_to[1]) ? intval($range_from_to[1]) : 0;
  22. $item_form->selectfrom->setValue($range_from);
  23. $item_form->selectto->setValue($range_to);
  24. return $item_form;
  25. }
  26. //liefert eine Struktur ->name, ->data = array(mit Antworten)
  27. function get_analysed($item, $groupid = false, $courseid = false) {
  28. $analysed = null;
  29. $analysed->data = array();
  30. $analysed->name = $item->name;
  31. //$values = get_records('feedback_value', 'item', $item->id);
  32. $values = feedback_get_group_values($item, $groupid, $courseid);
  33. $avg = 0.0;
  34. $counter = 0;
  35. if($values) {
  36. $data = array();
  37. foreach($values as $value) {
  38. if(is_numeric($value->value)) {
  39. $data[] = $value->value;
  40. $avg += $value->value;
  41. $counter++;
  42. }
  43. }
  44. $avg = $counter > 0 ? $avg / $counter : 0;
  45. $analysed->data = $data;
  46. $analysed->avg = $avg;
  47. }
  48. return $analysed;
  49. }
  50. function get_printval($item, $value) {
  51. if(!isset($value->value)) return '';
  52. return $value->value;
  53. }
  54. function print_analysed($item, $itemnr = '', $groupid = false, $courseid = false) {
  55. $sep_dec = get_string('separator_decimal', 'feedback');
  56. if(substr($sep_dec, 0, 2) == '[['){
  57. $sep_dec = FEEDBACK_DECIMAL;
  58. }
  59. $sep_thous = get_string('separator_thousand', 'feedback');
  60. if(substr($sep_thous, 0, 2) == '[['){
  61. $sep_thous = FEEDBACK_THOUSAND;
  62. }
  63. // $values = feedback_get_group_values($item, $groupid, $courseid);
  64. $values = $this->get_analysed($item, $groupid, $courseid);
  65. if(isset($values->data) AND is_array($values->data)) {
  66. //echo '<table>';2
  67. // $itemnr++;
  68. echo '<tr><th colspan="2" align="left">'. $itemnr . '&nbsp;' . stripslashes($item->name) .'</th></tr>';
  69. foreach($values->data as $value) {
  70. echo '<tr><td colspan="2" valign="top" align="left">-&nbsp;&nbsp;' . $value . '</td></tr>';
  71. }
  72. //echo '</table>';
  73. if(isset($values->avg)) {
  74. $avg = number_format($values->avg, 2, $sep_dec, $sep_thous);
  75. } else {
  76. $avg = number_format(0, 2, $sep_dec, $sep_thous);
  77. }
  78. echo '<tr><td align="left" colspan="2"><b>'.get_string('average', 'feedback').': '.$avg.'</b></td></tr>';
  79. }
  80. // return $itemnr;
  81. }
  82. function excelprint_item(&$worksheet, $rowOffset, $item, $groupid, $courseid = false) {
  83. $analysed_item = $this->get_analysed($item, $groupid, $courseid);
  84. $worksheet->setFormat("<l><f><ro2><vo><c:green>");
  85. $worksheet->write_string($rowOffset, 0, stripslashes($item->name));
  86. $data = $analysed_item->data;
  87. if(is_array($data)) {
  88. // $worksheet->setFormat("<l><ro2><vo>");
  89. // $worksheet->write_number($rowOffset, 1, $data[0]);
  90. // $rowOffset++;
  91. // for($i = 1; $i < sizeof($data); $i++) {
  92. // $worksheet->setFormat("<l><vo>");
  93. // $worksheet->write_number($rowOffset, 1, $data[$i]);
  94. // $rowOffset++;
  95. // }
  96. //mittelwert anzeigen
  97. $worksheet->setFormat("<l><f><ro2><vo><c:red>");
  98. $worksheet->write_string($rowOffset, 1, get_string('average', 'feedback'));
  99. $worksheet->setFormat("<l><f><vo>");
  100. $worksheet->write_number($rowOffset + 1, 1, $analysed_item->avg);
  101. $rowOffset++;
  102. }
  103. $rowOffset++;
  104. return $rowOffset;
  105. }
  106. function print_item($item, $value = false, $readonly = false, $edit = false, $highlightrequire = false){
  107. $align = get_string('thisdirection') == 'ltr' ? 'left' : 'right';
  108. //get the range
  109. $range_from_to = explode('|',$item->presentation);
  110. //get the min-value
  111. $range_from = isset($range_from_to[0]) ? intval($range_from_to[0]) : 0;
  112. //get the max-value
  113. $range_to = isset($range_from_to[1]) ? intval($range_from_to[1]) : 0;
  114. if($highlightrequire AND (!$this->check_value($value, $item))) {
  115. $highlight = 'bgcolor="#FFAAAA" class="missingrequire"';
  116. }else {
  117. $highlight = '';
  118. }
  119. $requiredmark = ($item->required == 1)?'<span class="feedback_required_mark">*</span>':'';
  120. ?>
  121. <td <?php echo $highlight;?> valign="top" align="<?php echo $align;?>">
  122. <?php
  123. echo format_text(stripslashes_safe($item->name) . $requiredmark, true, false, false);
  124. switch(true) {
  125. case ($range_from === 0 AND $range_to > 0):
  126. echo ' ('.get_string('maximal', 'feedback').': '.$range_to.')';
  127. break;
  128. case ($range_from > 0 AND $range_to === 0):
  129. echo ' ('.get_string('minimal', 'feedback').': '.$range_from.')';
  130. break;
  131. case ($range_from === 0 AND $range_to === 0):
  132. break;
  133. default:
  134. echo ' ('.$range_from.'-'.$range_to.')';
  135. break;
  136. }
  137. ?>
  138. </td>
  139. <td valign="top" align="<?php echo $align;?>">
  140. <?php
  141. if($readonly){
  142. // print_simple_box_start($align);
  143. print_box_start('generalbox boxalign'.$align);
  144. echo $value ? $value : '&nbsp;';
  145. // print_simple_box_end();
  146. print_box_end();
  147. }else {
  148. ?>
  149. <input type="text" name="<?php echo $item->typ.'_'.$item->id; ?>"
  150. size="10"
  151. maxlength="10"
  152. value="<?php echo $value ? $value : ''; ?>" />
  153. <?php
  154. }
  155. ?>
  156. </td>
  157. <?php
  158. }
  159. function check_value($value, $item) {
  160. //if the item is not required, so the check is true if no value is given
  161. if((!isset($value) OR $value == '') AND $item->required != 1) return true;
  162. if(!is_numeric($value))return false;
  163. $range_from_to = explode('|',$item->presentation);
  164. $range_from = isset($range_from_to[0]) ? intval($range_from_to[0]) : 0;
  165. $range_to = isset($range_from_to[1]) ? intval($range_from_to[1]) : 0;
  166. switch(true) {
  167. case ($range_from === 0 AND $range_to > 0):
  168. if(intval($value) <= $range_to) return true;
  169. break;
  170. case ($range_from > 0 AND $range_to === 0):
  171. if(intval($value) >= $range_from) return true;
  172. break;
  173. case ($range_from === 0 AND $range_to === 0):
  174. return true;
  175. break;
  176. default:
  177. if(intval($value) >= $range_from AND intval($value) <= $range_to) return true;
  178. break;
  179. }
  180. return false;
  181. }
  182. function create_value($data) {
  183. if($data AND $data != '') {
  184. $data = intval($data);
  185. }else {
  186. $data = '';
  187. }
  188. return $data;
  189. }
  190. function get_presentation($data) {
  191. return $data->numericrangefrom . '|'. $data->numericrangeto;
  192. }
  193. function get_hasvalue() {
  194. return 1;
  195. }
  196. }
  197. ?>