PageRenderTime 47ms CodeModel.GetById 19ms RepoModel.GetById 1ms app.codeStats 0ms

/mod/feedback/item/textfield/lib.php

https://github.com/kpike/moodle
PHP | 277 lines | 189 code | 41 blank | 47 comment | 25 complexity | 5d4225817ce8a1431b27c69bd870af4f MD5 | raw file
  1. <?php
  2. defined('MOODLE_INTERNAL') OR die('not allowed');
  3. require_once($CFG->dirroot.'/mod/feedback/item/feedback_item_class.php');
  4. class feedback_item_textfield extends feedback_item_base {
  5. var $type = "textfield";
  6. var $commonparams;
  7. var $item_form;
  8. var $item;
  9. function init() {
  10. }
  11. function build_editform($item, $feedback, $cm) {
  12. global $DB, $CFG;
  13. require_once('textfield_form.php');
  14. //get the lastposition number of the feedback_items
  15. $position = $item->position;
  16. $lastposition = $DB->count_records('feedback_item', array('feedback'=>$feedback->id));
  17. if($position == -1){
  18. $i_formselect_last = $lastposition + 1;
  19. $i_formselect_value = $lastposition + 1;
  20. $item->position = $lastposition + 1;
  21. }else {
  22. $i_formselect_last = $lastposition;
  23. $i_formselect_value = $item->position;
  24. }
  25. //the elements for position dropdownlist
  26. $positionlist = array_slice(range(0,$i_formselect_last),1,$i_formselect_last,true);
  27. $item->presentation = empty($item->presentation) ? '' : $item->presentation;
  28. $sizeAndLength = explode('|',$item->presentation);
  29. $itemsize = (isset($sizeAndLength[0]) AND $sizeAndLength[0] >= 5) ? $sizeAndLength[0] : 30;
  30. $itemlength = isset($sizeAndLength[1]) ? $sizeAndLength[1] : 5;
  31. $item->itemsize = $itemsize;
  32. $item->itemmaxlength = $itemlength;
  33. //all items for dependitem
  34. $feedbackitems = feedback_get_depend_candidates_for_item($feedback, $item);
  35. $commonparams = array('cmid'=>$cm->id,
  36. 'id'=>isset($item->id) ? $item->id : NULL,
  37. 'typ'=>$item->typ,
  38. 'items'=>$feedbackitems,
  39. 'feedback'=>$feedback->id);
  40. //build the form
  41. $this->item_form = new feedback_textfield_form('edit_item.php', array('item'=>$item, 'common'=>$commonparams, 'positionlist'=>$positionlist, 'position'=>$position));
  42. }
  43. //this function only can used after the call of build_editform()
  44. function show_editform() {
  45. $this->item_form->display();
  46. }
  47. function is_cancelled() {
  48. return $this->item_form->is_cancelled();
  49. }
  50. function get_data() {
  51. if($this->item = $this->item_form->get_data()) {
  52. return true;
  53. }
  54. return false;
  55. }
  56. function save_item() {
  57. global $DB;
  58. if(!$item = $this->item_form->get_data()) {
  59. return false;
  60. }
  61. if(isset($item->clone_item) AND $item->clone_item) {
  62. $item->id = ''; //to clone this item
  63. $item->position++;
  64. }
  65. $item->hasvalue = $this->get_hasvalue();
  66. if(!$item->id) {
  67. $item->id = $DB->insert_record('feedback_item', $item);
  68. }else {
  69. $DB->update_record('feedback_item', $item);
  70. }
  71. return $DB->get_record('feedback_item', array('id'=>$item->id));
  72. }
  73. //liefert eine Struktur ->name, ->data = array(mit Antworten)
  74. function get_analysed($item, $groupid = false, $courseid = false) {
  75. global $DB;
  76. $aVal = null;
  77. $aVal->data = null;
  78. $aVal->name = $item->name;
  79. //$values = $DB->get_records('feedback_value', array('item'=>$item->id));
  80. $values = feedback_get_group_values($item, $groupid, $courseid);
  81. if($values) {
  82. $data = array();
  83. foreach($values as $value) {
  84. $data[] = str_replace("\n", '<br />', $value->value);
  85. }
  86. $aVal->data = $data;
  87. }
  88. return $aVal;
  89. }
  90. function get_printval($item, $value) {
  91. if(!isset($value->value)) return '';
  92. return $value->value;
  93. }
  94. function print_analysed($item, $itemnr = '', $groupid = false, $courseid = false) {
  95. $values = feedback_get_group_values($item, $groupid, $courseid);
  96. if($values) {
  97. //echo '<table>';2
  98. // $itemnr++;
  99. echo '<tr><th colspan="2" align="left">'. $itemnr . '&nbsp;('. $item->label .') ' . $item->name .'</th></tr>';
  100. foreach($values as $value) {
  101. echo '<tr><td colspan="2" valign="top" align="left">-&nbsp;&nbsp;' . str_replace("\n", '<br />', $value->value) . '</td></tr>';
  102. }
  103. //echo '</table>';
  104. }
  105. // return $itemnr;
  106. }
  107. function excelprint_item(&$worksheet, $rowOffset, $xlsFormats, $item, $groupid, $courseid = false) {
  108. $analysed_item = $this->get_analysed($item, $groupid, $courseid);
  109. // $worksheet->setFormat("<l><f><ro2><vo><c:green>");
  110. $worksheet->write_string($rowOffset, 0, $item->label, $xlsFormats->head2);
  111. $worksheet->write_string($rowOffset, 1, $item->name, $xlsFormats->head2);
  112. $data = $analysed_item->data;
  113. if(is_array($data)) {
  114. // $worksheet->setFormat("<l><ro2><vo>");
  115. $worksheet->write_string($rowOffset, 2, $data[0], $xlsFormats->value_bold);
  116. $rowOffset++;
  117. $sizeofdata = sizeof($data);
  118. for($i = 1; $i < $sizeofdata; $i++) {
  119. // $worksheet->setFormat("<l><vo>");
  120. $worksheet->write_string($rowOffset, 2, $data[$i], $xlsFormats->default);
  121. $rowOffset++;
  122. }
  123. }
  124. $rowOffset++;
  125. return $rowOffset;
  126. }
  127. /**
  128. * print the item at the edit-page of feedback
  129. *
  130. * @global object
  131. * @param object $item
  132. * @return void
  133. */
  134. function print_item_preview($item) {
  135. global $OUTPUT, $DB;
  136. $align = right_to_left() ? 'right' : 'left';
  137. $presentation = explode ("|", $item->presentation);
  138. $requiredmark = ($item->required == 1)?'<span class="feedback_required_mark">*</span>':'';
  139. //print the question and label
  140. echo '<div class="feedback_item_label_'.$align.'">';
  141. echo '('.$item->label.') ';
  142. echo format_text($item->name.$requiredmark, true, false, false);
  143. if($item->dependitem) {
  144. if($dependitem = $DB->get_record('feedback_item', array('id'=>$item->dependitem))) {
  145. echo ' <span class="feedback_depend">('.$dependitem->label.'-&gt;'.$item->dependvalue.')</span>';
  146. }
  147. }
  148. echo '</div>';
  149. //print the presentation
  150. echo '<div class="feedback_item_presentation_'.$align.'">';
  151. echo '<span class="feedback_item_textfield">';
  152. echo '<input type="text" name="'.$item->typ . '_' . $item->id.'" size="'.$presentation[0].'" maxlength="'.$presentation[1].'" value="" />';
  153. echo '</span>';
  154. echo '</div>';
  155. }
  156. /**
  157. * print the item at the complete-page of feedback
  158. *
  159. * @global object
  160. * @param object $item
  161. * @param string $value
  162. * @param bool $highlightrequire
  163. * @return void
  164. */
  165. function print_item_complete($item, $value = '', $highlightrequire = false) {
  166. global $OUTPUT;
  167. $align = right_to_left() ? 'right' : 'left';
  168. $presentation = explode ("|", $item->presentation);
  169. if($highlightrequire AND $item->required AND strval($value) == '') {
  170. $highlight = ' missingrequire';
  171. }else {
  172. $highlight = '';
  173. }
  174. $requiredmark = ($item->required == 1)?'<span class="feedback_required_mark">*</span>':'';
  175. //print the question and label
  176. echo '<div class="feedback_item_label_'.$align.$highlight.'">';
  177. echo format_text($item->name.$requiredmark, true, false, false);
  178. echo '</div>';
  179. //print the presentation
  180. echo '<div class="feedback_item_presentation_'.$align.$highlight.'">';
  181. echo '<span class="feedback_item_textfield">';
  182. echo '<input type="text" name="'.$item->typ.'_'.$item->id.'" size="'.$presentation[0].'" maxlength="'.$presentation[1].'" value="'.($value ? htmlspecialchars($value) : '').'" />';
  183. echo '</span>';
  184. echo '</div>';
  185. }
  186. /**
  187. * print the item at the complete-page of feedback
  188. *
  189. * @global object
  190. * @param object $item
  191. * @param string $value
  192. * @return void
  193. */
  194. function print_item_show_value($item, $value = '') {
  195. global $OUTPUT;
  196. $align = right_to_left() ? 'right' : 'left';
  197. $presentation = explode ("|", $item->presentation);
  198. $requiredmark = ($item->required == 1)?'<span class="feedback_required_mark">*</span>':'';
  199. //print the question and label
  200. echo '<div class="feedback_item_label_'.$align.'">';
  201. echo '('.$item->label.') ';
  202. echo format_text($item->name . $requiredmark, true, false, false);
  203. echo '</div>';
  204. echo $OUTPUT->box_start('generalbox boxalign'.$align);
  205. echo $value ? $value : '&nbsp;';
  206. echo $OUTPUT->box_end();
  207. }
  208. function check_value($value, $item) {
  209. //if the item is not required, so the check is true if no value is given
  210. if((!isset($value) OR $value == '') AND $item->required != 1) return true;
  211. if($value == "")return false;
  212. return true;
  213. }
  214. function create_value($data) {
  215. $data = clean_text($data);
  216. return $data;
  217. }
  218. //compares the dbvalue with the dependvalue
  219. //dbvalue is the value put in by the user
  220. //dependvalue is the value that is compared
  221. function compare_value($item, $dbvalue, $dependvalue) {
  222. if($dbvalue == $dependvalue) {
  223. return true;
  224. }
  225. return false;
  226. }
  227. function get_presentation($data) {
  228. return $data->itemsize . '|'. $data->itemmaxlength;
  229. }
  230. function get_hasvalue() {
  231. return 1;
  232. }
  233. function can_switch_require() {
  234. return true;
  235. }
  236. }