2 defined('MOODLE_INTERNAL') OR die('not allowed');
3 require_once($CFG->dirroot.'/mod/feedback/item/feedback_item_class.php');
5 class feedback_item_info extends feedback_item_base {
15 function build_editform($item, $feedback, $cm) {
17 require_once('info_form.php');
19 //get the lastposition number of the feedback_items
20 $position = $item->position;
21 $lastposition = $DB->count_records('feedback_item', array('feedback'=>$feedback->id));
23 $i_formselect_last = $lastposition + 1;
24 $i_formselect_value = $lastposition + 1;
25 $item->position = $lastposition + 1;
27 $i_formselect_last = $lastposition;
28 $i_formselect_value = $item->position;
30 //the elements for position dropdownlist
31 $positionlist = array_slice(range(0,$i_formselect_last),1,$i_formselect_last,true);
33 $item->presentation = empty($item->presentation) ? 1 : $item->presentation;
36 //all items for dependitem
37 $feedbackitems = feedback_get_depend_candidates_for_item($feedback, $item);
38 $commonparams = array('cmid'=>$cm->id,
39 'id'=>isset($item->id) ? $item->id : NULL,
41 'items'=>$feedbackitems,
42 'feedback'=>$feedback->id);
45 $this->item_form = new feedback_info_form('edit_item.php', array('item'=>$item, 'common'=>$commonparams, 'positionlist'=>$positionlist, 'position'=>$position));
48 //this function only can used after the call of build_editform()
49 function show_editform() {
50 $this->item_form->display();
53 function is_cancelled() {
54 return $this->item_form->is_cancelled();
58 if($this->item = $this->item_form->get_data()) {
64 function save_item() {
67 if(!$item = $this->item_form->get_data()) {
71 if(isset($item->clone_item) AND $item->clone_item) {
72 $item->id = ''; //to clone this item
76 $item->hasvalue = $this->get_hasvalue();
78 $item->id = $DB->insert_record('feedback_item', $item);
80 $DB->update_record('feedback_item', $item);
83 return $DB->get_record('feedback_item', array('id'=>$item->id));
86 //liefert eine Struktur ->name, ->data = array(mit Antworten)
87 function get_analysed($item, $groupid = false, $courseid = false) {
89 $presentation = $item->presentation;
92 $aVal->name = $item->name;
93 //$values = get_records('feedback_value', 'item', $item->id);
94 $values = feedback_get_group_values($item, $groupid, $courseid);
97 $datavalue = new stdClass();
98 foreach($values as $value) {
100 switch($presentation) {
102 $datavalue->value = $value->value;
103 $datavalue->show = UserDate($datavalue->value);
106 $datavalue->value = $value->value;
107 $datavalue->show = $datavalue->value;
110 $datavalue->value = $value->value;
111 $datavalue->show = $datavalue->value;
115 $data[] = $datavalue;
122 function get_printval($item, $value) {
124 if(!isset($value->value)) return '';
125 return UserDate($value->value);
128 function print_analysed($item, $itemnr = '', $groupid = false, $courseid = false) {
129 $analysed_item = $this->get_analysed($item, $groupid, $courseid);
130 $data = $analysed_item->data;
131 if(is_array($data)) {
132 echo '<tr><th colspan="2" align="left">'. $itemnr . ' ('. $item->label .') ' . $item->name .'</th></tr>';
133 $sizeofdata = sizeof($data);
134 for($i = 0; $i < $sizeofdata; $i++) {
135 echo '<tr><td colspan="2" valign="top" align="left">- ' . str_replace("\n", '<br />', $data[$i]->show) . '</td></tr>';
141 function excelprint_item(&$worksheet, $rowOffset, $xlsFormats, $item, $groupid, $courseid = false) {
142 $analysed_item = $this->get_analysed($item, $groupid, $courseid);
144 // $worksheet->setFormat("<l><f><ro2><vo><c:green>");
145 $worksheet->write_string($rowOffset, 0, $item->label, $xlsFormats->head2);
146 $worksheet->write_string($rowOffset, 1, $item->name, $xlsFormats->head2);
147 $data = $analysed_item->data;
148 if(is_array($data)) {
149 // $worksheet->setFormat("<l><ro2><vo>");
150 $worksheet->write_string($rowOffset, 2, $data[0]->show, $xlsFormats->value_bold);
152 $sizeofdata = sizeof($data);
153 for($i = 1; $i < $sizeofdata; $i++) {
154 // $worksheet->setFormat("<l><vo>");
155 $worksheet->write_string($rowOffset, 2, $data[$i]->show, $xlsFormats->default);
164 * print the item at the edit-page of feedback
167 * @param object $item
170 function print_item_preview($item) {
171 global $USER, $DB, $OUTPUT;
172 $align = right_to_left() ? 'right' : 'left';
174 $presentation = $item->presentation;
175 $requiredmark = ($item->required == 1)?'<span class="feedback_required_mark">*</span>':'';
177 $feedback = $DB->get_record('feedback', array('id'=>$item->feedback));
178 $course = $DB->get_record('course', array('id'=>$feedback->course));
179 $coursecategory = $DB->get_record('course_categories', array('id'=>$course->category));
180 switch($presentation) {
183 $itemshowvalue = UserDate($itemvalue);
186 $itemvalue = $course->shortname;
187 $itemshowvalue = $itemvalue;
190 $itemvalue = $coursecategory->name;
191 $itemshowvalue = $itemvalue;
195 //print the question and label
196 echo '<div class="feedback_item_label_'.$align.'">';
197 echo '('.$item->label.') ';
198 echo format_text($item->name.$requiredmark, true, false, false);
199 if($item->dependitem) {
200 if($dependitem = $DB->get_record('feedback_item', array('id'=>$item->dependitem))) {
201 echo ' <span class="feedback_depend">('.$dependitem->label.'->'.$item->dependvalue.')</span>';
205 //print the presentation
206 echo '<div class="feedback_item_presentation_'.$align.'">';
207 echo '<input type="hidden" name="'.$item->typ.'_'.$item->id.'" value="'.$itemvalue.'" />';
208 echo '<span class="feedback_item_info">'.$itemshowvalue.'</span>';
213 * print the item at the complete-page of feedback
216 * @param object $item
217 * @param string $value
218 * @param bool $highlightrequire
221 function print_item_complete($item, $value = '', $highlightrequire = false) {
222 global $USER, $DB, $OUTPUT;
223 $align = right_to_left() ? 'right' : 'left';
225 $presentation = $item->presentation;
226 if($highlightrequire AND $item->required AND strval($value) == '') {
227 $highlight = ' missingrequire';
231 $requiredmark = ($item->required == 1)?'<span class="feedback_required_mark">*</span>':'';
233 $feedback = $DB->get_record('feedback', array('id'=>$item->feedback));
234 $course = $DB->get_record('course', array('id'=>$feedback->course));
235 $coursecategory = $DB->get_record('course_categories', array('id'=>$course->category));
236 switch($presentation) {
239 $itemshowvalue = UserDate($itemvalue);
242 $itemvalue = $course->shortname;
243 $itemshowvalue = $itemvalue;
246 $itemvalue = $coursecategory->name;
247 $itemshowvalue = $itemvalue;
251 //print the question and label
252 echo '<div class="feedback_item_label_'.$align.$highlight.'">';
253 echo format_text($item->name.$requiredmark, true, false, false);
256 //print the presentation
257 echo '<div class="feedback_item_presentation_'.$align.'">';
258 echo '<input type="hidden" name="'.$item->typ.'_'.$item->id.'" value="'.$itemvalue.'" />';
259 echo '<span class="feedback_item_info">'.$itemshowvalue.'</span>';
264 * print the item at the complete-page of feedback
267 * @param object $item
268 * @param string $value
271 function print_item_show_value($item, $value = '') {
272 global $USER, $DB, $OUTPUT;
273 $align = right_to_left() ? 'right' : 'left';
275 $presentation = $item->presentation;
276 $requiredmark = ($item->required == 1)?'<span class="feedback_required_mark">*</span>':'';
278 if($presentation == 1) {
279 $value = $value ? UserDate($value) : ' ';
282 //print the question and label
283 echo '<div class="feedback_item_label_'.$align.'">';
284 echo '('.$item->label.') ';
285 echo format_text($item->name . $requiredmark, true, false, false);
288 //print the presentation
289 echo $OUTPUT->box_start('generalbox boxalign'.$align);
291 echo $OUTPUT->box_end();
294 function check_value($value, $item) {
298 function create_value($data) {
299 $data = clean_text($data);
303 //compares the dbvalue with the dependvalue
304 //the values can be the shortname of a course or the category name
305 //the date is not compareable :(.
306 function compare_value($item, $dbvalue, $dependvalue) {
307 if($dbvalue == $dependvalue) {
313 function get_presentation($data) {
314 return $data->infotype;
317 function get_hasvalue() {
321 function can_switch_require() {