ILIAS  release_5-2 Revision v5.2.25-18-g3f80b828510
class.ilMatchingWizardInputGUI.php
Go to the documentation of this file.
1<?php
2/* Copyright (c) 1998-2013 ILIAS open source, Extended GPL, see docs/LICENSE */
3
4require_once './Modules/TestQuestionPool/classes/class.ilSingleChoiceWizardInputGUI.php';
5require_once 'Services/UIComponent/Glyph/classes/class.ilGlyphGUI.php';
6
18{
19 protected $text_name = '';
20 protected $image_name = '';
21 protected $values = array();
22 protected $allowMove = false;
23 protected $qstObject = null;
24 protected $suffixes = array();
25 protected $hideImages = false;
26
35 function __construct($a_title = "", $a_postvar = "")
36 {
37 global $lng;
38
39 parent::__construct($a_title, $a_postvar);
40 $this->setSuffixes(array("jpg", "jpeg", "png", "gif"));
41 $this->setSize('40');
42 $this->text_name = $lng->txt('answer_text');
43 $this->image_name = $lng->txt('answer_image');
44 }
45
51 function setSuffixes($a_suffixes)
52 {
53 $this->suffixes = $a_suffixes;
54 }
55
61 function getSuffixes()
62 {
63 return $this->suffixes;
64 }
65
71 function setHideImages($a_hide)
72 {
73 $this->hideImages = $a_hide;
74 }
75
81 function setValues($a_values)
82 {
83 $this->values = $a_values;
84 }
85
91 function getValues()
92 {
93 return $this->values;
94 }
95
96 function setTextName($a_value)
97 {
98 $this->text_name = $a_value;
99 }
100
101 function setImageName($a_value)
102 {
103 $this->image_name = $a_value;
104 }
105
111 function setQuestionObject($a_value)
112 {
113 $this->qstObject =& $a_value;
114 }
115
122 {
123 return $this->qstObject;
124 }
125
131 function setAllowMove($a_allow_move)
132 {
133 $this->allowMove = $a_allow_move;
134 }
135
141 function getAllowMove()
142 {
143 return $this->allowMove;
144 }
145
151 function setValue($a_value)
152 {
153 $this->values = array();
154 if (is_array($a_value))
155 {
156 if (is_array($a_value['answer']))
157 {
158 foreach ($a_value['answer'] as $index => $value)
159 {
160 include_once "./Modules/TestQuestionPool/classes/class.assAnswerMatchingTerm.php";
161 $answer = new assAnswerMatchingTerm($value, $a_value['imagename'][$index], $a_value['identifier'][$index]);
162 array_push($this->values, $answer);
163 }
164 }
165 }
166 }
167
173 function checkInput()
174 {
175 global $lng;
176 include_once "./Services/AdvancedEditing/classes/class.ilObjAdvancedEditing.php";
177 if (is_array($_POST[$this->getPostVar()]))
178 {
180 }
181 $foundvalues = $_POST[$this->getPostVar()];
182 if (is_array($foundvalues))
183 {
184 // check answers
185 if (is_array($foundvalues['answer']))
186 {
187 foreach ($foundvalues['answer'] as $aidx => $answervalue)
188 {
189 if (((strlen($answervalue)) == 0) && (strlen($foundvalues['imagename'][$aidx]) == 0))
190 {
191 $this->setAlert($lng->txt("msg_input_is_required"));
192 return FALSE;
193 }
194 }
195 }
196 if (!$this->hideImages)
197 {
198 if (is_array($_FILES[$this->getPostVar()]['error']['image']))
199 {
200 foreach ($_FILES[$this->getPostVar()]['error']['image'] as $index => $error)
201 {
202 // error handling
203 if ($error > 0)
204 {
205 switch ($error)
206 {
207 case UPLOAD_ERR_INI_SIZE:
208 $this->setAlert($lng->txt("form_msg_file_size_exceeds"));
209 return false;
210 break;
211
212 case UPLOAD_ERR_FORM_SIZE:
213 $this->setAlert($lng->txt("form_msg_file_size_exceeds"));
214 return false;
215 break;
216
217 case UPLOAD_ERR_PARTIAL:
218 $this->setAlert($lng->txt("form_msg_file_partially_uploaded"));
219 return false;
220 break;
221
222 case UPLOAD_ERR_NO_FILE:
223 if ($this->getRequired())
224 {
225 if ((!strlen($foundvalues['imagename'][$index])) && (!strlen($foundvalues['answer'][$index])))
226 {
227 $this->setAlert($lng->txt("form_msg_file_no_upload"));
228 return false;
229 }
230 }
231 break;
232
233 case UPLOAD_ERR_NO_TMP_DIR:
234 $this->setAlert($lng->txt("form_msg_file_missing_tmp_dir"));
235 return false;
236 break;
237
238 case UPLOAD_ERR_CANT_WRITE:
239 $this->setAlert($lng->txt("form_msg_file_cannot_write_to_disk"));
240 return false;
241 break;
242
243 case UPLOAD_ERR_EXTENSION:
244 $this->setAlert($lng->txt("form_msg_file_upload_stopped_ext"));
245 return false;
246 break;
247 }
248 }
249 }
250 }
251
252 if (is_array($_FILES[$this->getPostVar()]['tmp_name']['image']))
253 {
254 foreach ($_FILES[$this->getPostVar()]['tmp_name']['image'] as $index => $tmpname)
255 {
256 $filename = $_FILES[$this->getPostVar()]['name']['image'][$index];
257 $filename_arr = pathinfo($filename);
258 $suffix = $filename_arr["extension"];
259
260 // check suffixes
261 if (strlen($tmpname) && is_array($this->getSuffixes()))
262 {
263 $vir = ilUtil::virusHandling($tmpname, $filename);
264 if ($vir[0] == false)
265 {
266 $this->setAlert($lng->txt("form_msg_file_virus_found")."<br />".$vir[1]);
267 return false;
268 }
269
270 if (!in_array(strtolower($suffix), $this->getSuffixes()))
271 {
272 $this->setAlert($lng->txt("form_msg_file_wrong_file_type"));
273 return false;
274 }
275 }
276 }
277 }
278 }
279 }
280 return $this->checkSubItemsInput();
281 }
282
288 function insert($a_tpl)
289 {
290 global $lng;
291
292 $tpl = new ilTemplate("tpl.prop_matchingwizardinput.html", true, true, "Modules/TestQuestionPool");
293 $i = 0;
294 foreach ($this->values as $value)
295 {
296 if (!$this->hideImages)
297 {
298 if (strlen($value->picture))
299 {
300 $imagename = $this->qstObject->getImagePathWeb() . $value->picture;
301 if ($this->qstObject->getThumbSize())
302 {
303 if (@file_exists($this->qstObject->getImagePath() . $this->qstObject->getThumbPrefix() . $value->picture))
304 {
305 $imagename = $this->qstObject->getImagePathWeb() . $this->qstObject->getThumbPrefix() . $value->picture;
306 }
307 }
308 $tpl->setCurrentBlock('image');
309 $tpl->setVariable('SRC_IMAGE', $imagename);
310 $tpl->setVariable('IMAGE_NAME', $value->picture);
311 $tpl->setVariable('ALT_IMAGE', ilUtil::prepareFormOutput($value->text));
312 $tpl->setVariable("TXT_DELETE_EXISTING", $lng->txt("delete_existing_file"));
313 $tpl->setVariable("IMAGE_ROW_NUMBER", $i);
314 $tpl->setVariable("IMAGE_POST_VAR", $this->getPostVar());
315 $tpl->parseCurrentBlock();
316 }
317 $tpl->setCurrentBlock('addimage');
318 $tpl->setVariable("IMAGE_BROWSE", $lng->txt('select_file'));
319 $tpl->setVariable("IMAGE_ID", $this->getPostVar() . "[image][$i]");
320 $tpl->setVariable("IMAGE_SUBMIT", $lng->txt("upload"));
321 $tpl->setVariable("IMAGE_ROW_NUMBER", $i);
322 $tpl->setVariable("IMAGE_POST_VAR", $this->getPostVar());
323 $tpl->parseCurrentBlock();
324 }
325
326 if (is_object($value))
327 {
328 $tpl->setCurrentBlock("prop_text_propval");
329 $tpl->setVariable("PROPERTY_VALUE", ilUtil::prepareFormOutput($value->text));
330 $tpl->parseCurrentBlock();
331 }
332 // this block does not exist in the template
333// $tpl->setCurrentBlock('singleline');
334 $tpl->setVariable("SIZE", $this->getSize());
335 $tpl->setVariable("SINGLELINE_ID", $this->getPostVar() . "[answer][$i]");
336 $tpl->setVariable("SINGLELINE_ROW_NUMBER", $i);
337 $tpl->setVariable("SINGLELINE_POST_VAR", $this->getPostVar());
338 $tpl->setVariable("MAXLENGTH", $this->getMaxLength());
339 if ($this->getDisabled())
340 {
341 $tpl->setVariable("DISABLED_SINGLELINE", " disabled=\"disabled\"");
342 }
343 $tpl->parseCurrentBlock();
344 if ($this->getAllowMove())
345 {
346 $tpl->setCurrentBlock("move");
347 $tpl->setVariable("CMD_UP", "cmd[up" . $this->getFieldId() . "][$i]");
348 $tpl->setVariable("CMD_DOWN", "cmd[down" . $this->getFieldId() . "][$i]");
349 $tpl->setVariable("ID", $this->getPostVar() . "[$i]");
350 $tpl->setVariable("UP_BUTTON", ilGlyphGUI::get(ilGlyphGUI::UP));
351 $tpl->setVariable("DOWN_BUTTON", ilGlyphGUI::get(ilGlyphGUI::DOWN));
352 $tpl->parseCurrentBlock();
353 }
354 $tpl->setCurrentBlock("row");
355 $tpl->setVariable("POST_VAR", $this->getPostVar());
356 $tpl->setVariable("ROW_NUMBER", $i+1);
357 $tpl->setVariable("ROW_IDENTIFIER", $value->identifier);
358 $tpl->setVariable("ID", $this->getPostVar() . "[answer][$i]");
359 $tpl->setVariable("CMD_ADD", "cmd[add" . $this->getFieldId() . "][$i]");
360 $tpl->setVariable("CMD_REMOVE", "cmd[remove" . $this->getFieldId() . "][$i]");
361 $tpl->setVariable("ADD_BUTTON", ilGlyphGUI::get(ilGlyphGUI::ADD));
362 $tpl->setVariable("REMOVE_BUTTON", ilGlyphGUI::get(ilGlyphGUI::REMOVE));
363 $tpl->parseCurrentBlock();
364 $i++;
365 }
366
367 if (!$this->hideImages)
368 {
369 if (is_array($this->getSuffixes()))
370 {
371 $suff_str = $delim = "";
372 foreach($this->getSuffixes() as $suffix)
373 {
374 $suff_str.= $delim.".".$suffix;
375 $delim = ", ";
376 }
377 $tpl->setCurrentBlock('allowed_image_suffixes');
378 $tpl->setVariable("TXT_ALLOWED_SUFFIXES", $lng->txt("file_allowed_suffixes")." ".$suff_str);
379 $tpl->parseCurrentBlock();
380 }
381 $tpl->setCurrentBlock("image_heading");
382 $tpl->setVariable("ANSWER_IMAGE", $this->image_name);
383 $tpl->setVariable("TXT_MAX_SIZE", ilUtil::getFileSizeInfo());
384 $tpl->parseCurrentBlock();
385 }
386
387 $tpl->setVariable("ELEMENT_ID", $this->getPostVar());
388 $tpl->setVariable("TEXT_YES", $lng->txt('yes'));
389 $tpl->setVariable("TEXT_NO", $lng->txt('no'));
390 $tpl->setVariable("DELETE_IMAGE_HEADER", $lng->txt('delete_image_header'));
391 $tpl->setVariable("DELETE_IMAGE_QUESTION", $lng->txt('delete_image_question'));
392 $tpl->setVariable("ANSWER_TEXT", $this->text_name);
393 $tpl->setVariable("NUMBER_TEXT", $lng->txt('row'));
394 $tpl->setVariable("COMMANDS_TEXT", $lng->txt('actions'));
395
396 $a_tpl->setCurrentBlock("prop_generic");
397 $a_tpl->setVariable("PROP_GENERIC", $tpl->get());
398 $a_tpl->parseCurrentBlock();
399 }
400}
$error
Definition: Error.php:17
global $tpl
Definition: ilias.php:8
$_POST["username"]
An exception for terminatinating execution or to throw for unit testing.
Class for matching question terms.
getPostVar()
Get Post Variable.
setAlert($a_alert)
Set Alert Text.
getFieldId()
Get Post Variable.
static get($a_glyph, $a_text="")
Get glyph html.
This class represents a single choice wizard property in a property form.
setAllowMove($a_allow_move)
Set allow move.
setQuestionObject($a_value)
Set question object.
setHideImages($a_hide)
Set hide images.
insert($a_tpl)
Insert property html.
checkInput()
Check input, strip slashes etc.
setSuffixes($a_suffixes)
Set Accepted Suffixes.
__construct($a_title="", $a_postvar="")
Constructor.
static _getUsedHTMLTagsAsString($a_module="")
Returns a string of all allowed HTML tags for text editing.
special template class to simplify handling of ITX/PEAR
This class represents a text property in a property form.
getMaxLength()
Get Max Length.
setSize($a_size)
Set Size.
static stripSlashesRecursive($a_data, $a_strip_html=true, $a_allow="")
Strip slashes from array and sub-arrays.
static virusHandling($a_file, $a_orig_name="", $a_clean=true)
scan file for viruses and clean files if possible
static getFileSizeInfo()
static prepareFormOutput($a_str, $a_strip=false)
prepares string output for html forms @access public
global $lng
Definition: privfeed.php:17