ILIAS  release_7 Revision v7.30-3-g800a261c036
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
4require_once 'Services/Form/classes/class.ilTextInputGUI.php';
5require_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}
$filename
Definition: buildRTE.php:89
$_POST["username"]
An exception for terminatinating execution or to throw for unit testing.
static getAllowedImageMaterialFileExtensions()
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.
insert($a_tpl)
Insert property html.
setSuffixes($a_suffixes)
Set Accepted Suffixes.
checkInput()
Check input, strip slashes etc.
__construct($a_title="", $a_postvar="")
Constructor.
setAllowMove($a_allow_move)
Set allow move.
getSuffixes()
Get Accepted Suffixes.
setQuestionObject($a_value)
Set question object.
getQuestionObject()
Get question object.
special template class to simplify handling of ITX/PEAR
This class represents a text property in a property form.
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 $DIC
Definition: goto.php:24
if($DIC->http() ->request() ->getMethod()=="GET" &&isset($DIC->http() ->request() ->getQueryParams()['tex'])) $tpl
Definition: latex.php:41
$index
Definition: metadata.php:128
$i
Definition: metadata.php:24
__construct(Container $dic, ilPlugin $plugin)
@inheritDoc