ILIAS  release_5-4 Revision v5.4.26-12-gabc799a52e6
class.ilImageWizardInputGUI.php
Go to the documentation of this file.
1 <?php
2 /* Copyright (c) 1998-2013 ILIAS open source, Extended GPL, see docs/LICENSE */
3 
4 require_once 'Services/Form/classes/class.ilTextInputGUI.php';
5 require_once 'Services/UIComponent/Glyph/classes/class.ilGlyphGUI.php';
6 
15 {
16  protected $values = array();
17  protected $allowMove = false;
18  protected $qstObject = null;
19  protected $suffixes = array();
20 
27  public function __construct($a_title = "", $a_postvar = "")
28  {
29  parent::__construct($a_title, $a_postvar);
31  $this->setSize('25');
32  $this->validationRegexp = "";
33  }
34 
40  public function setValue($a_value)
41  {
42  $this->values = array();
43  if (is_array($a_value)) {
44  if (is_array($a_value['count'])) {
45  foreach ($a_value['count'] as $index => $value) {
46  array_push($this->values, $a_value['imagename'][$index]);
47  }
48  }
49  }
50  }
51 
57  public function setSuffixes($a_suffixes)
58  {
59  $this->suffixes = $a_suffixes;
60  }
61 
67  public function getSuffixes()
68  {
69  return $this->suffixes;
70  }
71 
77  public function setValues($a_values)
78  {
79  $this->values = $a_values;
80  }
81 
87  public function getValues()
88  {
89  return $this->values;
90  }
91 
97  public function setQuestionObject($a_value)
98  {
99  $this->qstObject = &$a_value;
100  }
101 
107  public function getQuestionObject()
108  {
109  return $this->qstObject;
110  }
111 
117  public function setAllowMove($a_allow_move)
118  {
119  $this->allowMove = $a_allow_move;
120  }
121 
127  public function getAllowMove()
128  {
129  return $this->allowMove;
130  }
131 
137  public function checkInput()
138  {
139  global $DIC;
140  $lng = $DIC['lng'];
141 
142  if (is_array($_POST[$this->getPostVar()])) {
144  }
145  if (is_array($_FILES[$this->getPostVar()]['error']['image'])) {
146  foreach ($_FILES[$this->getPostVar()]['error']['image'] as $index => $error) {
147  // error handling
148  if ($error > 0) {
149  switch ($error) {
150  case UPLOAD_ERR_INI_SIZE:
151  $this->setAlert($lng->txt("form_msg_file_size_exceeds"));
152  return false;
153  break;
154 
155  case UPLOAD_ERR_FORM_SIZE:
156  $this->setAlert($lng->txt("form_msg_file_size_exceeds"));
157  return false;
158  break;
159 
160  case UPLOAD_ERR_PARTIAL:
161  $this->setAlert($lng->txt("form_msg_file_partially_uploaded"));
162  return false;
163  break;
164 
165  case UPLOAD_ERR_NO_FILE:
166  if ($this->getRequired()) {
167  if (!strlen($_POST[$this->getPostVar()]['imagename'][$index])) {
168  $this->setAlert($lng->txt("form_msg_file_no_upload"));
169  return false;
170  }
171  }
172  break;
173 
174  case UPLOAD_ERR_NO_TMP_DIR:
175  $this->setAlert($lng->txt("form_msg_file_missing_tmp_dir"));
176  return false;
177  break;
178 
179  case UPLOAD_ERR_CANT_WRITE:
180  $this->setAlert($lng->txt("form_msg_file_cannot_write_to_disk"));
181  return false;
182  break;
183 
184  case UPLOAD_ERR_EXTENSION:
185  $this->setAlert($lng->txt("form_msg_file_upload_stopped_ext"));
186  return false;
187  break;
188  }
189  }
190  }
191  } else {
192  if ($this->getRequired()) {
193  $this->setAlert($lng->txt("form_msg_file_no_upload"));
194  return false;
195  }
196  }
197 
198  if (is_array($_FILES[$this->getPostVar()]['tmp_name']['image'])) {
199  foreach ($_FILES[$this->getPostVar()]['tmp_name']['image'] as $index => $tmpname) {
200  $filename = $_FILES[$this->getPostVar()]['name']['image'][$index];
201  $filename_arr = pathinfo($filename);
202  $suffix = $filename_arr["extension"];
203  $mimetype = $_FILES[$this->getPostVar()]['type']['image'][$index];
204  $size_bytes = $_FILES[$this->getPostVar()]['size']['image'][$index];
205  // check suffixes
206  if (strlen($tmpname) && is_array($this->getSuffixes())) {
207  if (!in_array(strtolower($suffix), $this->getSuffixes())) {
208  $this->setAlert($lng->txt("form_msg_file_wrong_file_type"));
209  return false;
210  }
211  }
212  }
213  }
214 
215  if (is_array($_FILES[$this->getPostVar()]['tmp_name']['image'])) {
216  foreach ($_FILES[$this->getPostVar()]['tmp_name']['image'] as $index => $tmpname) {
217  $filename = $_FILES[$this->getPostVar()]['name']['image'][$index];
218  $filename_arr = pathinfo($filename);
219  $suffix = $filename_arr["extension"];
220  $mimetype = $_FILES[$this->getPostVar()]['type']['image'][$index];
221  $size_bytes = $_FILES[$this->getPostVar()]['size']['image'][$index];
222  // virus handling
223  if (strlen($tmpname)) {
224  $vir = ilUtil::virusHandling($tmpname, $filename);
225  if ($vir[0] == false) {
226  $this->setAlert($lng->txt("form_msg_file_virus_found") . "<br />" . $vir[1]);
227  return false;
228  }
229  }
230  }
231  }
232 
233  return $this->checkSubItemsInput();
234  }
235 
241  public function insert($a_tpl)
242  {
243  global $DIC;
244  $lng = $DIC['lng'];
245 
246  $tpl = new ilTemplate("tpl.prop_imagewizardinput.html", true, true, "Modules/TestQuestionPool");
247  $i = 0;
248  foreach ($this->values as $value) {
249  if (strlen($value)) {
250  $imagename = $this->qstObject->getImagePathWeb() . $value;
251  if ($this->qstObject->getThumbSize()) {
252  if (@file_exists($this->qstObject->getImagePath() . $this->qstObject->getThumbPrefix() . $value)) {
253  $imagename = $this->qstObject->getImagePathWeb() . $this->qstObject->getThumbPrefix() . $value;
254  }
255  }
256  $tpl->setCurrentBlock('image');
257  $tpl->setVariable('SRC_IMAGE', $imagename);
258  $tpl->setVariable('IMAGE_NAME', $value);
259  $tpl->setVariable('ALT_IMAGE', ilUtil::prepareFormOutput($value));
260  $tpl->setVariable("TXT_DELETE_EXISTING", $lng->txt("delete_existing_file"));
261  $tpl->setVariable("IMAGE_ROW_NUMBER", $i);
262  $tpl->setVariable("IMAGE_POST_VAR", $this->getPostVar());
263  $tpl->parseCurrentBlock();
264  }
265  $tpl->setCurrentBlock('addimage');
266  $tpl->setVariable("IMAGE_BROWSE", $lng->txt('select_file'));
267  $tpl->setVariable("IMAGE_ID", $this->getPostVar() . "[image][$i]");
268  $tpl->setVariable("IMAGE_SUBMIT", $lng->txt("upload"));
269  $tpl->setVariable("IMAGE_ROW_NUMBER", $i);
270  $tpl->setVariable("IMAGE_POST_VAR", $this->getPostVar());
271  $tpl->parseCurrentBlock();
272 
273  if ($this->getAllowMove()) {
274  $tpl->setCurrentBlock("move");
275  $tpl->setVariable("CMD_UP", "cmd[up" . $this->getFieldId() . "][$i]");
276  $tpl->setVariable("CMD_DOWN", "cmd[down" . $this->getFieldId() . "][$i]");
277  $tpl->setVariable("ID", $this->getPostVar() . "[$i]");
278  $tpl->setVariable("UP_BUTTON", ilGlyphGUI::get(ilGlyphGUI::UP));
279  $tpl->setVariable("DOWN_BUTTON", ilGlyphGUI::get(ilGlyphGUI::DOWN));
280  $tpl->parseCurrentBlock();
281  }
282  $tpl->setCurrentBlock("row");
283  $tpl->setVariable("POST_VAR", $this->getPostVar());
284  $tpl->setVariable("ROW_NUMBER", $i);
285  $tpl->setVariable("ID", $this->getPostVar() . "[answer][$i]");
286  $tpl->setVariable("CMD_ADD", "cmd[add" . $this->getFieldId() . "][$i]");
287  $tpl->setVariable("CMD_REMOVE", "cmd[remove" . $this->getFieldId() . "][$i]");
288  $tpl->setVariable("ADD_BUTTON", ilGlyphGUI::get(ilGlyphGUI::ADD));
289  $tpl->setVariable("REMOVE_BUTTON", ilGlyphGUI::get(ilGlyphGUI::REMOVE));
290  $tpl->parseCurrentBlock();
291  $i++;
292  }
293 
294  if (is_array($this->getSuffixes())) {
295  $suff_str = $delim = "";
296  foreach ($this->getSuffixes() as $suffix) {
297  $suff_str .= $delim . "." . $suffix;
298  $delim = ", ";
299  }
300  $tpl->setCurrentBlock('allowed_image_suffixes');
301  $tpl->setVariable("TXT_ALLOWED_SUFFIXES", $lng->txt("file_allowed_suffixes") . " " . $suff_str);
302  $tpl->parseCurrentBlock();
303  }
304  /*
305  $tpl->setCurrentBlock("image_heading");
306  $tpl->setVariable("ANSWER_IMAGE", $lng->txt('answer_image'));
307  $tpl->parseCurrentBlock();
308  */
309 
310  $tpl->setVariable("TXT_MAX_SIZE", ilUtil::getFileSizeInfo());
311  $tpl->setVariable("ELEMENT_ID", $this->getPostVar());
312  $tpl->setVariable("TEXT_YES", $lng->txt('yes'));
313  $tpl->setVariable("TEXT_NO", $lng->txt('no'));
314  $tpl->setVariable("DELETE_IMAGE_HEADER", $lng->txt('delete_image_header'));
315  $tpl->setVariable("DELETE_IMAGE_QUESTION", $lng->txt('delete_image_question'));
316  $tpl->setVariable("ANSWER_TEXT", $lng->txt('answer_text'));
317  $tpl->setVariable("COMMANDS_TEXT", $lng->txt('actions'));
318 
319  $a_tpl->setCurrentBlock("prop_generic");
320  $a_tpl->setVariable("PROP_GENERIC", $tpl->get());
321  $a_tpl->parseCurrentBlock();
322 
323  global $DIC;
324  $tpl = $DIC['tpl'];
325  $tpl->addJavascript("./Services/Form/js/ServiceFormWizardInput.js");
326  $tpl->addJavascript("./Modules/TestQuestionPool/templates/default/imagewizard.js");
327  }
328 }
setAllowMove($a_allow_move)
Set allow move.
static prepareFormOutput($a_str, $a_strip=false)
prepares string output for html forms public
static getAllowedImageMaterialFileExtensions()
static virusHandling($a_file, $a_orig_name="", $a_clean=true)
scan file for viruses and clean files if possible
setSuffixes($a_suffixes)
Set Accepted Suffixes.
__construct($a_title="", $a_postvar="")
Constructor.
global $DIC
Definition: saml.php:7
$tpl
Definition: ilias.php:10
getPostVar()
Get Post Variable.
setQuestionObject($a_value)
Set question object.
static get($a_glyph, $a_text="")
Get glyph html.
This class represents a single choice wizard property in a property form.
static getFileSizeInfo()
setValues($a_values)
Set Values.
$index
Definition: metadata.php:60
setAlert($a_alert)
Set Alert Text.
getFieldId()
Get Post Variable.
special template class to simplify handling of ITX/PEAR
setSize($a_size)
Set Size.
static stripSlashesRecursive($a_data, $a_strip_html=true, $a_allow="")
Strip slashes from array and sub-arrays.
This class represents a text property in a property form.
getQuestionObject()
Get question object.
$filename
Definition: buildRTE.php:89
insert($a_tpl)
Insert property html.
checkInput()
Check input, strip slashes etc.
$i
Definition: disco.tpl.php:19
getSuffixes()
Get Accepted Suffixes.
$_POST["username"]