ILIAS  release_5-3 Revision v5.3.23-19-g915713cf615
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 public 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 default:
130 $ret = $this->$cmd();
131 break;
132 }
133 return $ret;
134 }
135
139 public function getCommand($cmd)
140 {
141 return $cmd;
142 }
143
147 public function certificateImport()
148 {
149 $this->certificateEditor();
150 }
151
155 public function certificatePreview()
156 {
157 $this->object->createPreview();
158 }
159
163 public function certificateExportFO()
164 {
165 $this->object->deliverExportFileXML();
166 }
167
172 {
173 $this->object->deleteBackgroundImage();
174 $this->certificateEditor();
175 }
176
180 public function certificateDelete()
181 {
182 // display confirmation message
183 include_once("./Services/Utilities/classes/class.ilConfirmationGUI.php");
184 $cgui = new ilConfirmationGUI();
185 $cgui->setFormAction($this->ctrl->getFormAction($this, "certificateEditor"));
186 $cgui->setHeaderText($this->lng->txt("certificate_confirm_deletion_text"));
187 $cgui->setCancel($this->lng->txt("no"), "certificateEditor");
188 $cgui->setConfirm($this->lng->txt("yes"), "certificateDeleteConfirm");
189
190 $this->tpl->setContent($cgui->getHTML());
191 }
192
196 public function certificateDeleteConfirm()
197 {
198 $this->object->deleteCertificate();
199 $this->ctrl->redirect($this, "certificateEditor");
200 }
201
205 public function certificateSave()
206 {
207 $this->certificateEditor();
208 }
209
213 public function certificateUpload()
214 {
215 $this->certificateEditor();
216 }
217
221 protected function getFormFieldsFromPOST()
222 {
223 $form_fields = array(
224 "pageformat" => ilUtil::stripSlashes($_POST["pageformat"]),
225 "margin_body_top" => $this->object->formatNumberString(ilUtil::stripSlashes($_POST["margin_body"]["top"])),
226 "margin_body_right" => $this->object->formatNumberString(ilUtil::stripSlashes($_POST["margin_body"]["right"])),
227 "margin_body_bottom" => $this->object->formatNumberString(ilUtil::stripSlashes($_POST["margin_body"]["bottom"])),
228 "margin_body_left" => $this->object->formatNumberString(ilUtil::stripSlashes($_POST["margin_body"]["left"])),
229 "certificate_text" => ilUtil::stripSlashes($_POST["certificate_text"], false),
230 "pageheight" => $this->object->formatNumberString(ilUtil::stripSlashes($_POST["pageheight"])),
231 "pagewidth" => $this->object->formatNumberString(ilUtil::stripSlashes($_POST["pagewidth"])),
232 "active" => ilUtil::stripSlashes($_POST["active"])
233 );
234 $this->object->getAdapter()->addFormFieldsFromPOST($form_fields);
235 return $form_fields;
236 }
237
241 protected function getFormFieldsFromFO()
242 {
243 $form_fields = $this->object->getFormFieldsFromFO();
244 $form_fields["active"] = $this->object->readActive();
245 $this->object->getAdapter()->addFormFieldsFromObject($form_fields);
246 return $form_fields;
247 }
248
252 public function certificateEditor()
253 {
254 if (strcmp($this->ctrl->getCmd(), "certificateSave") == 0) {
255 $form_fields = $this->getFormFieldsFromPOST();
256 } else {
257 $form_fields = $this->getFormFieldsFromFO();
258 }
259 include_once("./Services/Form/classes/class.ilPropertyFormGUI.php");
260 $form = new ilPropertyFormGUI();
261 $form->setPreventDoubleSubmission(false);
262 $form->setFormAction($this->ctrl->getFormAction($this));
263 $form->setTitle($this->lng->txt("certificate_edit"));
264 $form->setMultipart(true);
265 $form->setTableWidth("100%");
266 $form->setId("certificate");
267
268 $active = new ilCheckboxInputGUI($this->lng->txt("active"), "active");
269 $active->setChecked($form_fields["active"]);
270 $form->addItem($active);
271
272 $import = new ilFileInputGUI($this->lng->txt("import"), "certificate_import");
273 $import->setRequired(false);
274 $import->setSuffixes(array("zip"));
275 // handle the certificate import
276 if (strlen($_FILES["certificate_import"]["name"])) {
277 if ($import->checkInput()) {
278 $result = $this->object->importCertificate($_FILES["certificate_import"]["tmp_name"], $_FILES["certificate_import"]["name"]);
279 if ($result == false) {
280 $import->setAlert($this->lng->txt("certificate_error_import"));
281 } else {
282 $this->ctrl->redirect($this, "certificateEditor");
283 }
284 }
285 }
286 $form->addItem($import);
287
288 $pageformat = new ilRadioGroupInputGUI($this->lng->txt("certificate_page_format"), "pageformat");
289 $pageformats = $this->object->getPageFormats();
290 $pageformat->setValue($form_fields["pageformat"]);
291 foreach ($pageformats as $format) {
292 $option = new ilRadioOption($format["name"], $format["value"]);
293 if (strcmp($format["value"], "custom") == 0) {
294 $pageheight = new ilTextInputGUI($this->lng->txt("certificate_pageheight"), "pageheight");
295 $pageheight->setValue($form_fields["pageheight"]);
296 $pageheight->setSize(6);
297 $pageheight->setValidationRegexp('/^(([1-9]+|([1-9]+[0]*[\.,]{0,1}[\d]+))|(0[\.,](0*[1-9]+[\d]*)))(cm|mm|in|pt|pc|px|em)$/is');
298 $pageheight->setInfo($this->lng->txt("certificate_unit_description"));
299 $pageheight->setRequired(true);
300 $option->addSubitem($pageheight);
301
302 $pagewidth = new ilTextInputGUI($this->lng->txt("certificate_pagewidth"), "pagewidth");
303 $pagewidth->setValue($form_fields["pagewidth"]);
304 $pagewidth->setSize(6);
305 $pagewidth->setValidationRegexp('/^(([1-9]+|([1-9]+[0]*[\.,]{0,1}[\d]+))|(0[\.,](0*[1-9]+[\d]*)))(cm|mm|in|pt|pc|px|em)$/is');
306 $pagewidth->setInfo($this->lng->txt("certificate_unit_description"));
307 $pagewidth->setRequired(true);
308 $option->addSubitem($pagewidth);
309 }
310 $pageformat->addOption($option);
311 }
312 $pageformat->setRequired(true);
313 if (strcmp($this->ctrl->getCmd(), "certificateSave") == 0) {
314 $pageformat->checkInput();
315 }
316
317 $form->addItem($pageformat);
318
319 $bgimage = new ilImageFileInputGUI($this->lng->txt("certificate_background_image"), "background");
320 $bgimage->setRequired(false);
321 $bgimage->setUseCache(false);
322 if (count($_POST)) {
323 // handle the background upload
324 if (strlen($_FILES["background"]["tmp_name"])) {
325 if ($bgimage->checkInput()) {
326 $result = $this->object->uploadBackgroundImage($_FILES["background"]["tmp_name"]);
327 if ($result == false) {
328 $bgimage->setAlert($this->lng->txt("certificate_error_upload_bgimage"));
329 }
330 }
331 }
332 }
333 if (!$this->object->hasBackgroundImage()) {
334 include_once "./Services/Certificate/classes/class.ilObjCertificateSettingsAccess.php";
336 require_once('./Services/WebAccessChecker/classes/class.ilWACSignedPath.php');
339 }
340 } else {
341 require_once('./Services/WebAccessChecker/classes/class.ilWACSignedPath.php');
343 $bgimage->setImage(ilWACSignedPath::signFile($this->object->getBackgroundImageThumbPathWeb()));
344 }
345 $form->addItem($bgimage);
346
347 $rect = new ilCSSRectInputGUI($this->lng->txt("certificate_margin_body"), "margin_body");
348 $rect->setRequired(true);
349 $rect->setUseUnits(true);
350 $rect->setTop($form_fields["margin_body_top"]);
351 $rect->setBottom($form_fields["margin_body_bottom"]);
352 $rect->setLeft($form_fields["margin_body_left"]);
353 $rect->setRight($form_fields["margin_body_right"]);
354 $rect->setInfo($this->lng->txt("certificate_unit_description"));
355 if (strcmp($this->ctrl->getCmd(), "certificateSave") == 0) {
356 $rect->checkInput();
357 }
358 $form->addItem($rect);
359
360 $certificate = new ilTextAreaInputGUI($this->lng->txt("certificate_text"), "certificate_text");
361 $certificate->removePlugin('ilimgupload');
362 $certificate->setValue($form_fields["certificate_text"]);
363 $certificate->setRequired(true);
364 $certificate->setRows(20);
365 $certificate->setCols(80);
366
367 // fraunhpatch start
368 $common_desc_tpl = new ilTemplate("tpl.common_desc.html", true, true, "Services/Certificate");
370 $common_desc_tpl->setCurrentBlock("cert_field");
371 $common_desc_tpl->setVariable("PH", $f["ph"]);
372 $common_desc_tpl->setVariable("PH_TXT", $f["name"]);
373 $common_desc_tpl->parseCurrentBlock();
374 }
375 $common_desc = $common_desc_tpl->get();
376 // fraunhpatch start
377
378 $certificate->setInfo($this->object->getAdapter()->getCertificateVariablesDescription() . $common_desc);
379 $certificate->setUseRte(true, '3.4.7');
380 $tags = array(
381 "br",
382 "em",
383 "font",
384 "li",
385 "ol",
386 "p",
387 "span",
388 "strong",
389 "u",
390 "ul"
391 );
392 $certificate->setRteTags($tags);
393 if (strcmp($this->ctrl->getCmd(), "certificateSave") == 0) {
394 $certificate->checkInput();
395 }
396 $form->addItem($certificate);
397
398 $this->object->getAdapter()->addAdditionalFormElements($form, $form_fields);
399
400 if ($this->acccess->checkAccess("write", "", $_GET["ref_id"])) {
401 if ($this->object->isComplete() || $this->object->hasBackgroundImage()) {
402 $this->toolbar->setFormAction($this->ctrl->getFormAction($this));
403
404 require_once 'Services/UIComponent/Button/classes/class.ilSubmitButton.php';
406 $preview->setCaption('certificate_preview');
407 $preview->setCommand('certificatePreview');
408 $this->toolbar->addStickyItem($preview);
409
410 $export = ilSubmitButton::getInstance();
411 $export->setCaption('certificate_export');
412 $export->setCommand('certificateExportFO');
413 $this->toolbar->addButtonInstance($export);
414
415 $delete = ilSubmitButton::getInstance();
416 $delete->setCaption('delete');
417 $delete->setCommand('certificateDelete');
418 $this->toolbar->addButtonInstance($delete);
419 }
420 $form->addCommandButton("certificateSave", $this->lng->txt("save"));
421 }
422
423 $this->tpl->setVariable("ADM_CONTENT", $form->getHTML());
424
425 if (strcmp($this->ctrl->getCmd(), "certificateSave") == 0) {
426 if ($_POST["background_delete"]) {
427 $this->object->deleteBackgroundImage();
428 }
429 if ($form->checkInput()) {
430 try {
431 $xslfo = $this->object->processXHTML2FO($form_fields);
432 $this->object->getAdapter()->saveFormFields($form_fields);
433 $this->object->saveCertificate($xslfo);
434 $this->object->writeActive($form_fields["active"]);
435 ilUtil::sendSuccess($this->lng->txt("saved_successfully"), true);
436 $this->ctrl->redirect($this, "certificateEditor");
437 } catch (Exception $e) {
438 ilUtil::sendFailure($e->getMessage());
439 }
440 }
441 }
442 }
443}
$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)
$tags
Definition: croninfo.php:19
if(@file_exists(dirname(__FILE__).'/lang/eng.php')) $certificate
Definition: example_052.php:77
$format
Definition: metadata.php:141
redirection script todo: (a better solution should control the processing via a xml file)
$ret
Definition: parser.php:6
if(isset($_POST['submit'])) $form
global $DIC
Definition: saml.php:7
$preview