MDL-27675 - Feedback module abuses data_submitted
[moodle.git] / mod / feedback / item / feedback_item_class.php
1 <?php
2 // This file is part of Moodle - http://moodle.org/
3 //
4 // Moodle is free software: you can redistribute it and/or modify
5 // it under the terms of the GNU General Public License as published by
6 // the Free Software Foundation, either version 3 of the License, or
7 // (at your option) any later version.
8 //
9 // Moodle is distributed in the hope that it will be useful,
10 // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 // GNU General Public License for more details.
13 //
14 // You should have received a copy of the GNU General Public License
15 // along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
17 abstract class feedback_item_base {
18     protected $type;
20     /**
21      * constructor
22      *
23      */
24     public function __construct() {
25         $this->init();
26     }
28     //this function only can used after the call of build_editform()
29     public function show_editform() {
30         $this->item_form->display();
31     }
33     public function is_cancelled() {
34         return $this->item_form->is_cancelled();
35     }
37     public function get_data() {
38         if ($this->item = $this->item_form->get_data()) {
39             return true;
40         }
41         return false;
42     }
44     public function value_is_array() {
45         return false;
46     }
48     abstract public function value_type();
49     abstract public function init();
50     abstract public function build_editform($item, $feedback, $cm);
51     abstract public function save_item();
52     abstract public function check_value($value, $item);
53     abstract public function create_value($data);
54     abstract public function compare_value($item, $dbvalue, $dependvalue);
55     abstract public function get_presentation($data);
56     abstract public function get_hasvalue();
57     abstract public function can_switch_require();
59     /**
60      * @param object $worksheet a reference to the pear_spreadsheet-object
61      * @param integer $row_offset
62      * @param object $item the db-object from feedback_item
63      * @param integer $groupid
64      * @param integer $courseid
65      * @return integer the new row_offset
66      */
67     abstract public function excelprint_item(&$worksheet, $row_offset,
68                                       $xls_formats, $item,
69                                       $groupid, $courseid = false);
71     /**
72      * @param $item the db-object from feedback_item
73      * @param string $itemnr
74      * @param integer $groupid
75      * @param integer $courseid
76      * @return integer the new itemnr
77      */
78     abstract public function print_analysed($item, $itemnr = '', $groupid = false, $courseid = false);
80     /**
81      * @param object $item the db-object from feedback_item
82      * @param string $value a item-related value from feedback_values
83      * @return string
84      */
85     abstract public function get_printval($item, $value);
87     /**
88      * returns an Array with three values(typ, name, XXX)
89      * XXX is also an Array (count of responses on type $this->type)
90      * each element is a structure (answertext, answercount)
91      * @param $item the db-object from feedback_item
92      * @param $groupid if given
93      * @param $courseid if given
94      * @return array
95      */
96     abstract public function get_analysed($item, $groupid = false, $courseid = false);
98     /**     
99      * print the item at the edit-page of feedback
100      *
101      * @global object
102      * @param object $item
103      * @return void
104      */
105     abstract public function print_item_preview($item);
107     /**     
108      * print the item at the complete-page of feedback
109      *
110      * @global object
111      * @param object $item
112      * @param string $value
113      * @param bool $highlightrequire
114      * @return void
115      */
116     abstract public function print_item_complete($item, $value = '', $highlightrequire = false);
118     /**     
119      * print the item at the complete-page of feedback
120      *
121      * @global object
122      * @param object $item
123      * @param string $value
124      * @return void
125      */
126     abstract public function print_item_show_value($item, $value = '');
128     /**     
129      * cleans the userinput while submitting the form
130      *
131      * @param mixed $value
132      * @return mixed
133      */
134     abstract function clean_input_value($value);
138 //a dummy class to realize pagebreaks
139 class feedback_item_pagebreak extends feedback_item_base {
140     protected $type = "pagebreak";
142     public function show_editform() {
143     }
144     public function is_cancelled() {
145     }
146     public function get_data() {
147     }
148     public function init() {
149     }
150     public function build_editform($item, $feedback, $cm) {
151     }
152     public function save_item() {
153     }
154     public function check_value($value, $item) {
155     }
156     public function create_value($data) {
157     }
158     public function compare_value($item, $dbvalue, $dependvalue) {
159     }
160     public function get_presentation($data) {
161     }
162     public function get_hasvalue() {
163     }
164     public function excelprint_item(&$worksheet, $row_offset,
165                             $xls_formats, $item,
166                             $groupid, $courseid = false) {
167     }
169     public function print_analysed($item, $itemnr = '', $groupid = false, $courseid = false) {
170     }
171     public function get_printval($item, $value) {
172     }
173     public function get_analysed($item, $groupid = false, $courseid = false) {
174     }
175     public function print_item_preview($item) {
176     }
177     public function print_item_complete($item, $value = '', $highlightrequire = false) {
178     }
179     public function print_item_show_value($item, $value = '') {
180     }
181     public function can_switch_require() {
182     }
183     public function value_type() {
184     }
185     public function clean_input_value($value) {
186     }