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 
24 include_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 
172  public function certificateRemoveBackground()
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 
206  function certificateSave()
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 }
getCommand($cmd)
Retrieves the ilCtrl command.
static sendSuccess($a_info="", $a_keep=false)
Send Success Message to Screen.
certificateSave()
Saves the certificate.
This class represents an option in a radio group.
$result
certificatePreview()
Creates a certificate preview.
This class represents a property form user interface.
$_GET["client_id"]
This class represents a file property in a property form.
$preview
$cmd
Definition: sahs_server.php:35
executeCommand()
execute command
This class represents a checkbox property in a property form.
This class represents a text property in a property form.
certificateEditor()
Shows the certificate editor for ILIAS tests.
__construct(ilCertificateAdapter $adapter)
ilCertificateGUI constructor
certificateDeleteConfirm()
Deletes the certificate and all its data.
if(@file_exists(dirname(__FILE__).'/lang/eng.php')) $certificate
Definition: example_052.php:77
setChecked($a_checked)
Set Checked.
This class represents a property in a property form.
getFormFieldsFromPOST()
Get the form values from an HTTP POST.
certificateExportFO()
Exports the certificate.
special template class to simplify handling of ITX/PEAR
certificateImport()
Import a certificate from a ZIP archive.
This class represents a text property in a property form.
certificateUpload()
Uploads the certificate.
GUI class to create PDF certificates.
redirection script todo: (a better solution should control the processing via a xml file) ...
static getBackgroundImageThumbPathWeb()
Returns the web path of the background image thumbnail.
getFormFieldsFromFO()
Get the form values from the certificate xsl-fo.
static stripSlashes($a_str, $a_strip_html=true, $a_allow="")
strip slashes if magic qoutes is enabled
static getCustomCertificateFields()
Get custom certificate fields.
static signFile($path_to_file)
Create styles array
The data for the language used.
certificateRemoveBackground()
Removes the background image of a certificate.
static hasBackgroundImage()
Returns wheather or not a default background image exists.
static sendFailure($a_info="", $a_keep=false)
Send Failure Message to Screen.
This class represents an image file property in a property form.
Create new PHPExcel object
obj_idprivate
This class represents a text area property in a property form.
Adapter class to provide certificate data for the certificate generator.
$ret
Definition: parser.php:6
Create PDF certificates.
global $DIC
static setTokenMaxLifetimeInSeconds($token_max_lifetime_in_seconds)
certificateDelete()
Deletes the certificate and all its data.
setValue($a_value)
Set Value.
$_POST["username"]
setRequired($a_required)
Set Required.
Confirmation screen class.