ILIAS  release_5-2 Revision v5.2.25-18-g3f80b828510
class.ilCertificateGUI.php
Go to the documentation of this file.
1<?php
2 /*
3 +----------------------------------------------------------------------------+
4 | ILIAS open source |
5 +----------------------------------------------------------------------------+
6 | Copyright (c) 1998-2001 ILIAS open source, University of Cologne |
7 | |
8 | This program is free software; you can redistribute it and/or |
9 | modify it under the terms of the GNU General Public License |
10 | as published by the Free Software Foundation; either version 2 |
11 | of the License, or (at your option) any later version. |
12 | |
13 | This program is distributed in the hope that it will be useful, |
14 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
16 | GNU General Public License for more details. |
17 | |
18 | You should have received a copy of the GNU General Public License |
19 | along with this program; if not, write to the Free Software |
20 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
21 +----------------------------------------------------------------------------+
22*/
23
24include_once("./Services/Certificate/classes/class.ilCertificate.php");
25
34{
39 protected $object;
40
46 protected $ctrl;
47
53 protected $tree;
54
60 protected $ilias;
61
67 protected $tpl;
68
74 protected $lng;
75
81 protected $ref_id;
82
86 protected $acccess;
87
91 protected $toolbar;
92
99 {
100 global $DIC;
101
102 include_once "./Services/Certificate/classes/class.ilCertificate.php";
103 $this->object = new ilCertificate($adapter);
104
105 $this->lng = $DIC['lng'];
106 $this->tpl = $DIC['tpl'];
107 $this->ctrl = $DIC['ilCtrl'];
108 $this->ilias = $DIC['ilias'];
109 $this->tree = $DIC['tree'];
110 $this->tree = $DIC['tree'];
111 $this->acccess = $DIC['ilAccess'];
112 $this->toolbar = $DIC['ilToolbar'];
113
114 $this->ref_id = (int)$_GET['ref_id'];
115
116 $this->lng->loadLanguageModule('certificate');
117 }
118
122 function executeCommand()
123 {
124 $cmd = $this->ctrl->getCmd();
125 $next_class = $this->ctrl->getNextClass($this);
126
127 $cmd = $this->getCommand($cmd);
128 switch($next_class)
129 {
130 default:
131 $ret = $this->$cmd();
132 break;
133 }
134 return $ret;
135 }
136
140 public function getCommand($cmd)
141 {
142 return $cmd;
143 }
144
148 public function certificateImport()
149 {
150 $this->certificateEditor();
151 }
152
156 public function certificatePreview()
157 {
158 $this->object->createPreview();
159 }
160
164 public function certificateExportFO()
165 {
166 $this->object->deliverExportFileXML();
167 }
168
173 {
174 $this->object->deleteBackgroundImage();
175 $this->certificateEditor();
176 }
177
181 public function certificateDelete()
182 {
183 // display confirmation message
184 include_once("./Services/Utilities/classes/class.ilConfirmationGUI.php");
185 $cgui = new ilConfirmationGUI();
186 $cgui->setFormAction($this->ctrl->getFormAction($this, "certificateEditor"));
187 $cgui->setHeaderText($this->lng->txt("certificate_confirm_deletion_text"));
188 $cgui->setCancel($this->lng->txt("no"), "certificateEditor");
189 $cgui->setConfirm($this->lng->txt("yes"), "certificateDeleteConfirm");
190
191 $this->tpl->setContent($cgui->getHTML());
192 }
193
197 public function certificateDeleteConfirm()
198 {
199 $this->object->deleteCertificate();
200 $this->ctrl->redirect($this, "certificateEditor");
201 }
202
207 {
208 $this->certificateEditor();
209 }
210
214 public function certificateUpload()
215 {
216 $this->certificateEditor();
217 }
218
222 protected function getFormFieldsFromPOST()
223 {
224 $form_fields = array(
225 "pageformat" => ilUtil::stripSlashes($_POST["pageformat"]),
226 "margin_body_top" => $this->object->formatNumberString(ilUtil::stripSlashes($_POST["margin_body"]["top"])),
227 "margin_body_right" => $this->object->formatNumberString(ilUtil::stripSlashes($_POST["margin_body"]["right"])),
228 "margin_body_bottom" => $this->object->formatNumberString(ilUtil::stripSlashes($_POST["margin_body"]["bottom"])),
229 "margin_body_left" => $this->object->formatNumberString(ilUtil::stripSlashes($_POST["margin_body"]["left"])),
230 "certificate_text" => ilUtil::stripSlashes($_POST["certificate_text"], FALSE),
231 "pageheight" => $this->object->formatNumberString(ilUtil::stripSlashes($_POST["pageheight"])),
232 "pagewidth" => $this->object->formatNumberString(ilUtil::stripSlashes($_POST["pagewidth"])),
233 "active" => ilUtil::stripSlashes($_POST["active"])
234 );
235 $this->object->getAdapter()->addFormFieldsFromPOST($form_fields);
236 return $form_fields;
237 }
238
242 protected function getFormFieldsFromFO()
243 {
244 $form_fields = $this->object->getFormFieldsFromFO();
245 $form_fields["active"] = $this->object->readActive();
246 $this->object->getAdapter()->addFormFieldsFromObject($form_fields);
247 return $form_fields;
248 }
249
253 public function certificateEditor()
254 {
255 if(strcmp($this->ctrl->getCmd(), "certificateSave") == 0)
256 {
257 $form_fields = $this->getFormFieldsFromPOST();
258 }
259 else
260 {
261 $form_fields = $this->getFormFieldsFromFO();
262 }
263 include_once("./Services/Form/classes/class.ilPropertyFormGUI.php");
264 $form = new ilPropertyFormGUI();
265 $form->setPreventDoubleSubmission(false);
266 $form->setFormAction($this->ctrl->getFormAction($this));
267 $form->setTitle($this->lng->txt("certificate_edit"));
268 $form->setMultipart(TRUE);
269 $form->setTableWidth("100%");
270 $form->setId("certificate");
271
272 $active = new ilCheckboxInputGUI($this->lng->txt("active"), "active");
273 $active->setChecked($form_fields["active"]);
274 $form->addItem($active);
275
276 $import = new ilFileInputGUI($this->lng->txt("import"), "certificate_import");
277 $import->setRequired(FALSE);
278 $import->setSuffixes(array("zip"));
279 // handle the certificate import
280 if (strlen($_FILES["certificate_import"]["name"]))
281 {
282 if ($import->checkInput())
283 {
284 $result = $this->object->importCertificate($_FILES["certificate_import"]["tmp_name"], $_FILES["certificate_import"]["name"]);
285 if ($result == FALSE)
286 {
287 $import->setAlert($this->lng->txt("certificate_error_import"));
288 }
289 else
290 {
291 $this->ctrl->redirect($this, "certificateEditor");
292 }
293 }
294 }
295 $form->addItem($import);
296
297 $pageformat = new ilRadioGroupInputGUI($this->lng->txt("certificate_page_format"), "pageformat");
298 $pageformats = $this->object->getPageFormats();
299 $pageformat->setValue($form_fields["pageformat"]);
300 foreach($pageformats as $format)
301 {
302 $option = new ilRadioOption($format["name"], $format["value"]);
303 if(strcmp($format["value"], "custom") == 0)
304 {
305 $pageheight = new ilTextInputGUI($this->lng->txt("certificate_pageheight"), "pageheight");
306 $pageheight->setValue($form_fields["pageheight"]);
307 $pageheight->setSize(6);
308 $pageheight->setValidationRegexp('/^(([1-9]+|([1-9]+[0]*[\.,]{0,1}[\d]+))|(0[\.,](0*[1-9]+[\d]*)))(cm|mm|in|pt|pc|px|em)$/is');
309 $pageheight->setInfo($this->lng->txt("certificate_unit_description"));
310 $pageheight->setRequired(true);
311 $option->addSubitem($pageheight);
312
313 $pagewidth = new ilTextInputGUI($this->lng->txt("certificate_pagewidth"), "pagewidth");
314 $pagewidth->setValue($form_fields["pagewidth"]);
315 $pagewidth->setSize(6);
316 $pagewidth->setValidationRegexp('/^(([1-9]+|([1-9]+[0]*[\.,]{0,1}[\d]+))|(0[\.,](0*[1-9]+[\d]*)))(cm|mm|in|pt|pc|px|em)$/is');
317 $pagewidth->setInfo($this->lng->txt("certificate_unit_description"));
318 $pagewidth->setRequired(true);
319 $option->addSubitem($pagewidth);
320 }
321 $pageformat->addOption($option);
322 }
323 $pageformat->setRequired(true);
324 if (strcmp($this->ctrl->getCmd(), "certificateSave") == 0) $pageformat->checkInput();
325
326 $form->addItem($pageformat);
327
328 $bgimage = new ilImageFileInputGUI($this->lng->txt("certificate_background_image"), "background");
329 $bgimage->setRequired(FALSE);
330 $bgimage->setUseCache(false);
331 if (count($_POST))
332 {
333 // handle the background upload
334 if (strlen($_FILES["background"]["tmp_name"]))
335 {
336 if ($bgimage->checkInput())
337 {
338 $result = $this->object->uploadBackgroundImage($_FILES["background"]["tmp_name"]);
339 if ($result == FALSE)
340 {
341 $bgimage->setAlert($this->lng->txt("certificate_error_upload_bgimage"));
342 }
343 }
344 }
345 }
346 if (!$this->object->hasBackgroundImage())
347 {
348 include_once "./Services/Certificate/classes/class.ilObjCertificateSettingsAccess.php";
350 {
351 require_once('./Services/WebAccessChecker/classes/class.ilWACSignedPath.php');
354 }
355 }
356 else
357 {
358 require_once('./Services/WebAccessChecker/classes/class.ilWACSignedPath.php');
360 $bgimage->setImage(ilWACSignedPath::signFile($this->object->getBackgroundImageThumbPathWeb()));
361 }
362 $form->addItem($bgimage);
363
364 $rect = new ilCSSRectInputGUI($this->lng->txt("certificate_margin_body"), "margin_body");
365 $rect->setRequired(TRUE);
366 $rect->setUseUnits(TRUE);
367 $rect->setTop($form_fields["margin_body_top"]);
368 $rect->setBottom($form_fields["margin_body_bottom"]);
369 $rect->setLeft($form_fields["margin_body_left"]);
370 $rect->setRight($form_fields["margin_body_right"]);
371 $rect->setInfo($this->lng->txt("certificate_unit_description"));
372 if (strcmp($this->ctrl->getCmd(), "certificateSave") == 0) $rect->checkInput();
373 $form->addItem($rect);
374
375 $certificate = new ilTextAreaInputGUI($this->lng->txt("certificate_text"), "certificate_text");
376 $certificate->removePlugin('ilimgupload');
377 $certificate->setValue($form_fields["certificate_text"]);
378 $certificate->setRequired(TRUE);
379 $certificate->setRows(20);
380 $certificate->setCols(80);
381
382 // fraunhpatch start
383 $common_desc_tpl = new ilTemplate("tpl.common_desc.html", true, true, "Services/Certificate");
385 {
386 $common_desc_tpl->setCurrentBlock("cert_field");
387 $common_desc_tpl->setVariable("PH", $f["ph"]);
388 $common_desc_tpl->setVariable("PH_TXT", $f["name"]);
389 $common_desc_tpl->parseCurrentBlock();
390 }
391 $common_desc = $common_desc_tpl->get();
392 // fraunhpatch start
393
394 $certificate->setInfo($this->object->getAdapter()->getCertificateVariablesDescription().$common_desc);
395 $certificate->setUseRte(TRUE, '3.4.7');
396 $tags = array(
397 "br",
398 "em",
399 "font",
400 "li",
401 "ol",
402 "p",
403 "span",
404 "strong",
405 "u",
406 "ul"
407 );
408 $certificate->setRteTags($tags);
409 if (strcmp($this->ctrl->getCmd(), "certificateSave") == 0) $certificate->checkInput();
410 $form->addItem($certificate);
411
412 $this->object->getAdapter()->addAdditionalFormElements($form, $form_fields);
413
414 if($this->acccess->checkAccess("write", "", $_GET["ref_id"]))
415 {
416 if ($this->object->isComplete() || $this->object->hasBackgroundImage())
417 {
418 $this->toolbar->setFormAction($this->ctrl->getFormAction($this));
419
420 require_once 'Services/UIComponent/Button/classes/class.ilSubmitButton.php';
422 $preview->setCaption('certificate_preview');
423 $preview->setCommand('certificatePreview');
424 $this->toolbar->addStickyItem($preview);
425
426 $export = ilSubmitButton::getInstance();
427 $export->setCaption('certificate_export');
428 $export->setCommand('certificateExportFO');
429 $this->toolbar->addButtonInstance($export);
430
431 $delete = ilSubmitButton::getInstance();
432 $delete->setCaption('delete');
433 $delete->setCommand('certificateDelete');
434 $this->toolbar->addButtonInstance($delete);
435 }
436 $form->addCommandButton("certificateSave", $this->lng->txt("save"));
437 }
438
439 $this->tpl->setVariable("ADM_CONTENT", $form->getHTML());
440
441 if (strcmp($this->ctrl->getCmd(), "certificateSave") == 0)
442 {
443 if ($_POST["background_delete"])
444 {
445 $this->object->deleteBackgroundImage();
446 }
447 if ($form->checkInput())
448 {
449 try
450 {
451 $xslfo = $this->object->processXHTML2FO($form_fields);
452 $this->object->getAdapter()->saveFormFields($form_fields);
453 $this->object->saveCertificate($xslfo);
454 $this->object->writeActive($form_fields["active"]);
455 ilUtil::sendSuccess($this->lng->txt("saved_successfully"), TRUE);
456 $this->ctrl->redirect($this, "certificateEditor");
457 }
458 catch (Exception $e)
459 {
460 ilUtil::sendFailure($e->getMessage());
461 }
462 }
463 }
464 }
465}
$result
$_GET["client_id"]
$_POST["username"]
An exception for terminatinating execution or to throw for unit testing.
This class represents a text property in a property form.
Adapter class to provide certificate data for the certificate generator.
GUI class to create PDF certificates.
certificateExportFO()
Exports the certificate.
getFormFieldsFromFO()
Get the form values from the certificate xsl-fo.
certificateEditor()
Shows the certificate editor for ILIAS tests.
certificatePreview()
Creates a certificate preview.
certificateImport()
Import a certificate from a ZIP archive.
certificateDelete()
Deletes the certificate and all its data.
getCommand($cmd)
Retrieves the ilCtrl command.
executeCommand()
execute command
certificateUpload()
Uploads the certificate.
certificateSave()
Saves the certificate.
certificateDeleteConfirm()
Deletes the certificate and all its data.
getFormFieldsFromPOST()
Get the form values from an HTTP POST.
certificateRemoveBackground()
Removes the background image of a certificate.
__construct(ilCertificateAdapter $adapter)
ilCertificateGUI constructor
Create PDF certificates.
static getCustomCertificateFields()
Get custom certificate fields.
This class represents a checkbox property in a property form.
Confirmation screen class.
This class represents a file property in a property form.
This class represents an image file property in a property form.
static hasBackgroundImage()
Returns wheather or not a default background image exists.
static getBackgroundImageThumbPathWeb()
Returns the web path of the background image thumbnail.
This class represents a property form user interface.
This class represents a property in a property form.
This class represents an option in a radio group.
static getInstance()
Factory.
special template class to simplify handling of ITX/PEAR
This class represents a text area property in a property form.
This class represents a text property in a property form.
static sendSuccess($a_info="", $a_keep=false)
Send Success Message to Screen.
static sendFailure($a_info="", $a_keep=false)
Send Failure Message to Screen.
static stripSlashes($a_str, $a_strip_html=true, $a_allow="")
strip slashes if magic qoutes is enabled
static signFile($path_to_file)
static setTokenMaxLifetimeInSeconds($token_max_lifetime_in_seconds)
if(@file_exists(dirname(__FILE__).'/lang/eng.php')) $certificate
Definition: example_052.php:77
redirection script todo: (a better solution should control the processing via a xml file)
$ret
Definition: parser.php:6
$cmd
Definition: sahs_server.php:35
$preview
global $DIC