MDL-25637 Fixed whitespace
[moodle.git] / mod / feedback / item / info / lib.php
1 <?php
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 {
6     var $type = "info";
7     var $commonparams;
8     var $item_form;
9     var $item;
11     function init() {
13     }
15     function build_editform($item, $feedback, $cm) {
16         global $DB, $CFG;
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));
22         if($position == -1){
23             $i_formselect_last = $lastposition + 1;
24             $i_formselect_value = $lastposition + 1;
25             $item->position = $lastposition + 1;
26         }else {
27             $i_formselect_last = $lastposition;
28             $i_formselect_value = $item->position;
29         }
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;
34         $item->required = 0;
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,
40                              'typ'=>$item->typ,
41                              'items'=>$feedbackitems,
42                              'feedback'=>$feedback->id);
44         //build the form
45         $this->item_form = new feedback_info_form('edit_item.php', array('item'=>$item, 'common'=>$commonparams, 'positionlist'=>$positionlist, 'position'=>$position));
46     }
48     //this function only can used after the call of build_editform()
49     function show_editform() {
50         $this->item_form->display();
51     }
53     function is_cancelled() {
54         return $this->item_form->is_cancelled();
55     }
57     function get_data() {
58         if($this->item = $this->item_form->get_data()) {
59             return true;
60         }
61         return false;
62     }
64     function save_item() {
65         global $DB;
67         if(!$item = $this->item_form->get_data()) {
68             return false;
69         }
71         if(isset($item->clone_item) AND $item->clone_item) {
72             $item->id = ''; //to clone this item
73             $item->position++;
74         }
76         $item->hasvalue = $this->get_hasvalue();
77         if(!$item->id) {
78             $item->id = $DB->insert_record('feedback_item', $item);
79         }else {
80             $DB->update_record('feedback_item', $item);
81         }
83         return $DB->get_record('feedback_item', array('id'=>$item->id));
84     }
86     //liefert eine Struktur ->name, ->data = array(mit Antworten)
87     function get_analysed($item, $groupid = false, $courseid = false) {
89         $presentation = $item->presentation;
90         $aVal = null;
91         $aVal->data = null;
92         $aVal->name = $item->name;
93         //$values = get_records('feedback_value', 'item', $item->id);
94         $values = feedback_get_group_values($item, $groupid, $courseid);
95         if($values) {
96             $data = array();
97             $datavalue = new stdClass();
98             foreach($values as $value) {
100                 switch($presentation) {
101                     case 1:
102                         $datavalue->value = $value->value;
103                         $datavalue->show = UserDate($datavalue->value);
104                         break;
105                     case 2:
106                         $datavalue->value = $value->value;
107                         $datavalue->show = $datavalue->value;
108                         break;
109                     case 3:
110                         $datavalue->value = $value->value;
111                         $datavalue->show = $datavalue->value;
112                         break;
113                 }
115                 $data[] = $datavalue;
116             }
117             $aVal->data = $data;
118         }
119         return $aVal;
120     }
122     function get_printval($item, $value) {
124         if(!isset($value->value)) return '';
125         return UserDate($value->value);
126     }
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 . '&nbsp;('. $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">-&nbsp;&nbsp;' . str_replace("\n", '<br />', $data[$i]->show) . '</td></tr>';
136             }
137         }
138         // return $itemnr;
139     }
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);
151             $rowOffset++;
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);
156                 $rowOffset++;
157             }
158         }
159         $rowOffset++;
160         return $rowOffset;
161     }
163     /**
164      * print the item at the edit-page of feedback
165      *
166      * @global object
167      * @param object $item
168      * @return void
169      */
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) {
181             case 1:
182                 $itemvalue = time();
183                 $itemshowvalue = UserDate($itemvalue);
184                 break;
185             case 2:
186                 $itemvalue = $course->shortname;
187                 $itemshowvalue = $itemvalue;
188                 break;
189             case 3:
190                 $itemvalue = $coursecategory->name;
191                 $itemshowvalue = $itemvalue;
192                 break;
193         }
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.'-&gt;'.$item->dependvalue.')</span>';
202             }
203         }
204         echo '</div>';
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>';
209         echo '</div>';
210     }
212     /**
213      * print the item at the complete-page of feedback
214      *
215      * @global object
216      * @param object $item
217      * @param string $value
218      * @param bool $highlightrequire
219      * @return void
220      */
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';
228         }else {
229             $highlight = '';
230         }
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) {
237             case 1:
238                 $itemvalue = time();
239                 $itemshowvalue = UserDate($itemvalue);
240                 break;
241             case 2:
242                 $itemvalue = $course->shortname;
243                 $itemshowvalue = $itemvalue;
244                 break;
245             case 3:
246                 $itemvalue = $coursecategory->name;
247                 $itemshowvalue = $itemvalue;
248                 break;
249         }
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);
254         echo '</div>';
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>';
260         echo '</div>';
261     }
263     /**
264      * print the item at the complete-page of feedback
265      *
266      * @global object
267      * @param object $item
268      * @param string $value
269      * @return void
270      */
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) : '&nbsp;';
280         }
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);
286         echo '</div>';
288         //print the presentation
289         echo $OUTPUT->box_start('generalbox boxalign'.$align);
290         echo $value;
291         echo $OUTPUT->box_end();
292     }
294     function check_value($value, $item) {
295         return true;
296     }
298     function create_value($data) {
299         $data = clean_text($data);
300         return $data;
301     }
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) {
308             return true;
309         }
310         return false;
311     }
313     function get_presentation($data) {
314         return $data->infotype;
315     }
317     function get_hasvalue() {
318         return 1;
319     }
321     function can_switch_require() {
322         return false;
323     }