ILIAS  release_7 Revision v7.30-3-g800a261c036
class.ilObjSystemFolderGUI.php
Go to the documentation of this file.
1<?php
2/* Copyright (c) 1998-2009 ILIAS open source, Extended GPL, see docs/LICENSE */
3
4require_once "./Services/Object/classes/class.ilObjectGUI.php";
5require_once('./Services/Repository/classes/class.ilObjectPlugin.php');
6
12
25{
29 protected $tabs;
30
34 protected $rbacsystem;
35
39 protected $obj_definition;
40
44 protected $error;
45
49 protected $db;
50
55
59 protected $help;
60
64 protected $client_ini;
65
69 protected $bench;
70
76 public $type;
77
82 public function __construct($a_data, $a_id, $a_call_by_reference)
83 {
84 global $DIC;
85
86 $this->tabs = $DIC->tabs();
87 $this->access = $DIC->access();
88 $this->ctrl = $DIC->ctrl();
89 $this->rbacsystem = $DIC->rbac()->system();
90 $this->user = $DIC->user();
91 $this->obj_definition = $DIC["objDefinition"];
92 $this->settings = $DIC->settings();
93 $this->error = $DIC["ilErr"];
94 $this->db = $DIC->database();
95 $this->style_definition = $DIC["styleDefinition"];
96 $this->lng = $DIC->language();
97 $this->tpl = $DIC["tpl"];
98 $this->help = $DIC["ilHelp"];
99 $this->toolbar = $DIC->toolbar();
100 $this->client_ini = $DIC["ilClientIniFile"];
101 $this->type = "adm";
102 $this->bench = $DIC["ilBench"];
103 parent::__construct($a_data, $a_id, $a_call_by_reference, false);
104
105 $this->lng->loadLanguageModule("administration");
106 $this->lng->loadLanguageModule("adm");
107 }
108
109 public function executeCommand()
110 {
111 $ilTabs = $this->tabs;
112
113 $next_class = $this->ctrl->getNextClass($this);
114 $this->prepareOutput();
115
116 switch ($next_class) {
117 case 'ilpermissiongui':
118 include_once("Services/AccessControl/classes/class.ilPermissionGUI.php");
119 $perm_gui = new ilPermissionGUI($this);
120 $ret = &$this->ctrl->forwardCommand($perm_gui);
121 break;
122
123 case 'ilimprintgui':
124 // page editor will set its own tabs
125 $ilTabs->clearTargets();
126 $ilTabs->setBackTarget(
127 $this->lng->txt("back"),
128 $this->ctrl->getLinkTarget($this, "")
129 );
130
131 include_once("./Services/Imprint/classes/class.ilImprintGUI.php");
132 $igui = new ilImprintGUI();
133
134 // needed for editor
135 $igui->setStyleId(ilObjStyleSheet::getEffectiveContentStyleId(0, "impr"));
136
137 if (!$this->checkPermissionBool("write")) {
138 $igui->setEnableEditing(false);
139 }
140
141 $ret = $this->ctrl->forwardCommand($igui);
142 if ($ret != "") {
143 $this->tpl->setContent($ret);
144 }
145 break;
146
147 case "ilobjectownershipmanagementgui":
148 $this->setSystemCheckSubTabs("no_owner");
149 include_once("Services/Object/classes/class.ilObjectOwnershipManagementGUI.php");
150 $gui = new ilObjectOwnershipManagementGUI(0);
151 $this->ctrl->forwardCommand($gui);
152 break;
153
154 case "ilcronmanagergui":
155 $ilTabs->activateTab("cron_jobs");
156 include_once("Services/Cron/classes/class.ilCronManagerGUI.php");
157 $gui = new ilCronManagerGUI();
158 $this->ctrl->forwardCommand($gui);
159 break;
160
161 default:
162//var_dump($_POST);
163 $cmd = $this->ctrl->getCmd("view");
164
165 $cmd .= "Object";
166 $this->$cmd();
167
168 break;
169 }
170
171 return true;
172 }
173
179 public function viewObject()
180 {
181 $ilAccess = $this->access;
182
183 if ($ilAccess->checkAccess("write", "", $this->object->getRefId())) {
184 return $this->showBasicSettingsObject();
185 }
186 return $this->showServerInfoObject();
187 }
188
189 public function viewScanLogObject()
190 {
191 return $this->viewScanLog();
192 }
193
197 public function setSystemCheckSubTabs($a_activate)
198 {
199 $ilTabs = $this->tabs;
200 $ilCtrl = $this->ctrl;
201
202 $ilTabs->addSubTab(
203 "system_check_sub",
204 $this->lng->txt("system_check"),
205 $ilCtrl->getLinkTarget($this, "check")
206 );
207 $ilTabs->addSubTab(
208 "no_owner",
209 $this->lng->txt("system_check_no_owner"),
210 $ilCtrl->getLinkTargetByClass("ilObjectOwnershipManagementGUI")
211 );
212
213 $ilTabs->setSubTabActive($a_activate);
214 $ilTabs->setTabActive("system_check");
215 }
216
222 public function checkObject()
223 {
229
230 $this->setSystemCheckSubTabs("system_check_sub");
231
232 if (!$rbacsystem->checkAccess("visible,read", $this->object->getRefId())) {
233 $ilErr->raiseError($this->lng->txt("permission_denied"), $ilErr->MESSAGE);
234 }
235 //echo "1";
236
237 if ($_POST['count_limit'] !== null || $_POST['age_limit'] !== null || $_POST['type_limit'] !== null) {
238 $ilUser->writePref(
239 'systemcheck_count_limit',
240 (is_numeric($_POST['count_limit']) && $_POST['count_limit'] > 0) ? $_POST['count_limit'] : ''
241 );
242 $ilUser->writePref(
243 'systemcheck_age_limit',
244 (is_numeric($_POST['age_limit']) && $_POST['age_limit'] > 0) ? $_POST['age_limit'] : ''
245 );
246 $ilUser->writePref('systemcheck_type_limit', trim($_POST['type_limit']));
247 }
248
249 if ($_POST["mode"]) {
250 //echo "3";
251 $this->writeCheckParams();
252 $this->startValidator($_POST["mode"], $_POST["log_scan"]);
253 } else {
254 //echo "4";
255 include_once "./Services/Repository/classes/class.ilValidator.php";
256 $validator = new ilValidator();
257 $hasScanLog = $validator->hasScanLog();
258
259 $this->tpl->addBlockFile(
260 "ADM_CONTENT",
261 "adm_content",
262 "tpl.adm_check.html",
263 "Modules/SystemFolder"
264 );
265
266 if ($hasScanLog) {
267 $this->tpl->setVariable("TXT_VIEW_LOG", $this->lng->txt("view_last_log"));
268 }
269
270 $this->tpl->setVariable("FORMACTION", $this->ctrl->getFormAction($this));
271 $this->tpl->setVariable("TXT_TITLE", $this->lng->txt("systemcheck"));
272 $this->tpl->setVariable("COLSPAN", 3);
273 $this->tpl->setVariable("TXT_ANALYZE_TITLE", $this->lng->txt("analyze_data"));
274 $this->tpl->setVariable("TXT_ANALYSIS_OPTIONS", $this->lng->txt("analysis_options"));
275 $this->tpl->setVariable("TXT_REPAIR_OPTIONS", $this->lng->txt("repair_options"));
276 $this->tpl->setVariable("TXT_OUTPUT_OPTIONS", $this->lng->txt("output_options"));
277 $this->tpl->setVariable("TXT_SCAN", $this->lng->txt("scan"));
278 $this->tpl->setVariable("TXT_SCAN_DESC", $this->lng->txt("scan_desc"));
279 $this->tpl->setVariable("TXT_DUMP_TREE", $this->lng->txt("dump_tree"));
280 $this->tpl->setVariable("TXT_DUMP_TREE_DESC", $this->lng->txt("dump_tree_desc"));
281 $this->tpl->setVariable("TXT_CLEAN", $this->lng->txt("clean"));
282 $this->tpl->setVariable("TXT_CLEAN_DESC", $this->lng->txt("clean_desc"));
283 $this->tpl->setVariable("TXT_RESTORE", $this->lng->txt("restore_missing"));
284 $this->tpl->setVariable("TXT_RESTORE_DESC", $this->lng->txt("restore_missing_desc"));
285 $this->tpl->setVariable("TXT_PURGE", $this->lng->txt("purge_missing"));
286 $this->tpl->setVariable("TXT_PURGE_DESC", $this->lng->txt("purge_missing_desc"));
287 $this->tpl->setVariable("TXT_RESTORE_TRASH", $this->lng->txt("restore_trash"));
288 $this->tpl->setVariable("TXT_RESTORE_TRASH_DESC", $this->lng->txt("restore_trash_desc"));
289 $this->tpl->setVariable("TXT_PURGE_TRASH", $this->lng->txt("purge_trash"));
290 $this->tpl->setVariable("TXT_PURGE_TRASH_DESC", $this->lng->txt("purge_trash_desc"));
291 $this->tpl->setVariable("TXT_COUNT_LIMIT", $this->lng->txt("purge_count_limit"));
292 $this->tpl->setVariable("TXT_COUNT_LIMIT_DESC", $this->lng->txt("purge_count_limit_desc"));
293 $this->tpl->setVariable("COUNT_LIMIT_VALUE", $ilUser->getPref("systemcheck_count_limit"));
294 $this->tpl->setVariable("TXT_AGE_LIMIT", $this->lng->txt("purge_age_limit"));
295 $this->tpl->setVariable("TXT_AGE_LIMIT_DESC", $this->lng->txt("purge_age_limit_desc"));
296 $this->tpl->setVariable("AGE_LIMIT_VALUE", $ilUser->getPref("systemcheck_age_limit"));
297 $this->tpl->setVariable("TXT_TYPE_LIMIT", $this->lng->txt("purge_type_limit"));
298 $this->tpl->setVariable("TXT_TYPE_LIMIT_DESC", $this->lng->txt("purge_type_limit_desc"));
299
300 if ($ilUser->getPref('systemcheck_mode_scan')) {
301 $this->tpl->touchBlock('mode_scan_checked');
302 }
303 if ($ilUser->getPref('systemcheck_mode_dump_tree')) {
304 $this->tpl->touchBlock('mode_dump_tree_checked');
305 }
306 if ($ilUser->getPref('systemcheck_mode_clean')) {
307 $this->tpl->touchBlock('mode_clean_checked');
308 }
309 if ($ilUser->getPref('systemcheck_mode_restore')) {
310 $this->tpl->touchBlock('mode_restore_checked');
311 $this->tpl->touchBlock('mode_purge_disabled');
312 } elseif ($ilUser->getPref('systemcheck_mode_purge')) {
313 $this->tpl->touchBlock('mode_purge_checked');
314 $this->tpl->touchBlock('mode_restore_disabled');
315 }
316 if ($ilUser->getPref('systemcheck_mode_restore_trash')) {
317 $this->tpl->touchBlock('mode_restore_trash_checked');
318 $this->tpl->touchBlock('mode_purge_trash_disabled');
319 } elseif ($ilUser->getPref('systemcheck_mode_purge_trash')) {
320 $this->tpl->touchBlock('mode_purge_trash_checked');
321 $this->tpl->touchBlock('mode_restore_trash_disabled');
322 }
323 if ($ilUser->getPref('systemcheck_log_scan')) {
324 $this->tpl->touchBlock('log_scan_checked');
325 }
326
327
328 // #9520 - restrict to types which can be found in tree
329
330 $obj_types_in_tree = array();
331
333 $set = $ilDB->query('SELECT type FROM object_data od' .
334 ' JOIN object_reference ref ON (od.obj_id = ref.obj_id)' .
335 ' JOIN tree ON (tree.child = ref.ref_id)' .
336 ' WHERE tree.tree < 1' .
337 ' GROUP BY type');
338 while ($row = $ilDB->fetchAssoc($set)) {
339 $obj_types_in_tree[] = $row['type'];
340 }
341
342 $types = $objDefinition->getAllObjects();
343 $ts = array("" => "");
344 foreach ($types as $t) {
345 if ($t != "" && !$objDefinition->isSystemObject($t) && $t != "root" &&
346 in_array($t, $obj_types_in_tree)) {
347 if ($objDefinition->isPlugin($t)) {
349 $ts[$t] = $pl->txt("obj_" . $t);
350 } else {
351 $ts[$t] = $this->lng->txt("obj_" . $t);
352 }
353 }
354 }
355 asort($ts);
356 $this->tpl->setVariable(
357 "TYPE_LIMIT_CHOICE",
359 $ilUser->getPref("systemcheck_type_limit"),
360 'type_limit',
361 $ts,
362 false,
363 true
364 )
365 );
366 $this->tpl->setVariable("TXT_LOG_SCAN", $this->lng->txt("log_scan"));
367 $this->tpl->setVariable("TXT_LOG_SCAN_DESC", $this->lng->txt("log_scan_desc"));
368 $this->tpl->setVariable("TXT_SUBMIT", $this->lng->txt("start_scan"));
369
370 $this->tpl->setVariable("TXT_SAVE", $this->lng->txt("save_params_for_cron"));
371
372 include_once("./Services/Form/classes/class.ilPropertyFormGUI.php");
373
374 $cron_form = new ilPropertyFormGUI();
375 $cron_form->setFormAction($this->ctrl->getFormAction($this));
376 $cron_form->setTitle($this->lng->txt('systemcheck_cronform'));
377
378 $radio_group = new ilRadioGroupInputGUI($this->lng->txt('systemcheck_cron'), 'cronjob');
379 $radio_group->setValue($ilSetting->get('systemcheck_cron'));
380
381 $radio_opt = new ilRadioOption($this->lng->txt('disabled'), 0);
382 $radio_group->addOption($radio_opt);
383
384 $radio_opt = new ilRadioOption($this->lng->txt('enabled'), 1);
385 $radio_group->addOption($radio_opt);
386
387 $cron_form->addItem($radio_group);
388
389 $cron_form->addCommandButton('saveCheckCron', $this->lng->txt('save'));
390
391 $this->tpl->setVariable('CRON_FORM', $cron_form->getHTML());
392 }
393 }
394
395 private function saveCheckParamsObject()
396 {
397 $this->writeCheckParams();
398 unset($_POST['mode']);
399 return $this->checkObject();
400 }
401
402 private function writeCheckParams()
403 {
404 include_once "./Services/Repository/classes/class.ilValidator.php";
405 $validator = new ilValidator();
406 $modes = $validator->getPossibleModes();
407
408 $prefs = array();
409 foreach ($modes as $mode) {
410 if (isset($_POST['mode'][$mode])) {
411 $value = (int) $_POST['mode'][$mode];
412 } else {
413 $value = 0;
414 }
415 $prefs[ 'systemcheck_mode_' . $mode ] = $value;
416 }
417
418 if (isset($_POST['log_scan'])) {
419 $value = (int) $_POST['log_scan'];
420 } else {
421 $value = 0;
422 }
423 $prefs['systemcheck_log_scan'] = $value;
424
426 foreach ($prefs as $key => $val) {
427 $ilUser->writePref($key, $val);
428 }
429 }
430
431 private function saveCheckCronObject()
432 {
434
435 $systemcheck_cron = ($_POST['cronjob'] ? 1 : 0);
436 $ilSetting->set('systemcheck_cron', $systemcheck_cron);
437
438 unset($_POST['mode']);
439 return $this->checkObject();
440 }
441
447 public function changeHeaderTitleObject()
448 {
450 $styleDefinition = $this->style_definition;
451
452 $this->tpl->addBlockFile(
453 "ADM_CONTENT",
454 "adm_content",
455 "tpl.header_title_edit.html",
456 "Modules/SystemFolder"
457 );
458
459 $array_push = true;
460
461 if ($_SESSION["error_post_vars"]) {
462 $_SESSION["translation_post"] = $_SESSION["error_post_vars"];
463 $_GET["mode"] = "session";
464 $array_push = false;
465 }
466
467 // load from db if edit category is called the first time
468 if (($_GET["mode"] != "session")) {
469 $data = $this->object->getHeaderTitleTranslations();
470 $_SESSION["translation_post"] = $data;
471 $array_push = false;
472 } // remove a translation from session
473 elseif ($_GET["entry"] != 0) {
474 array_splice($_SESSION["translation_post"]["Fobject"], $_GET["entry"], 1, array());
475
476 if ($_GET["entry"] == $_SESSION["translation_post"]["default_language"]) {
477 $_SESSION["translation_post"]["default_language"] = "";
478 }
479 }
480
481 $data = $_SESSION["translation_post"];
482
483 // add additional translation form
484 if (!$_GET["entry"] and $array_push) {
485 $count = array_push($data["Fobject"], array("title" => "","desc" => ""));
486 } else {
487 $count = count($data["Fobject"]);
488 }
489
490 // stripslashes in form?
491 $strip = isset($_SESSION["translation_post"]) ? true : false;
492
493 foreach ($data["Fobject"] as $key => $val) {
494 // add translation button
495 if ($key == $count - 1) {
496 $this->tpl->setCurrentBlock("addTranslation");
497 $this->tpl->setVariable("TXT_ADD_TRANSLATION", $this->lng->txt("add_translation") . " >>");
498 $this->tpl->parseCurrentBlock();
499 }
500
501 // remove translation button
502 if ($key != 0) {
503 $this->tpl->setCurrentBlock("removeTranslation");
504 $this->tpl->setVariable("TXT_REMOVE_TRANSLATION", $this->lng->txt("remove_translation"));
505 $this->ctrl->setParameter($this, "entry", $key);
506 $this->ctrl->setParameter($this, "mode", "edit");
507 $this->tpl->setVariable(
508 "LINK_REMOVE_TRANSLATION",
509 $this->ctrl->getLinkTarget($this, "removeTranslation")
510 );
511 $this->tpl->parseCurrentBlock();
512 }
513
514 // lang selection
515 $this->tpl->addBlockFile(
516 "SEL_LANGUAGE",
517 "sel_language",
518 "tpl.lang_selection.html",
519 "Services/MetaData"
520 );
521 $this->tpl->setVariable("SEL_NAME", "Fobject[" . $key . "][lang]");
522
523 include_once('Services/MetaData/classes/class.ilMDLanguageItem.php');
524
525 $languages = ilMDLanguageItem::_getLanguages();
526
527 foreach ($languages as $code => $language) {
528 $this->tpl->setCurrentBlock("lg_option");
529 $this->tpl->setVariable("VAL_LG", $code);
530 $this->tpl->setVariable("TXT_LG", $language);
531
532 if ($code == $val["lang"]) {
533 $this->tpl->setVariable("SELECTED", "selected=\"selected\"");
534 }
535
536 $this->tpl->parseCurrentBlock();
537 }
538
539 // object data
540 $this->tpl->setCurrentBlock("obj_form");
541
542 if ($key == 0) {
543 $this->tpl->setVariable("TXT_HEADER", $this->lng->txt("change_header_title"));
544 } else {
545 $this->tpl->setVariable("TXT_HEADER", $this->lng->txt("translation") . " " . $key);
546 }
547
548 if ($key == $data["default_language"]) {
549 $this->tpl->setVariable("CHECKED", "checked=\"checked\"");
550 }
551
552 $this->tpl->setVariable("TXT_TITLE", $this->lng->txt("title"));
553 $this->tpl->setVariable("TXT_DESC", $this->lng->txt("desc"));
554 $this->tpl->setVariable("TXT_DEFAULT", $this->lng->txt("default"));
555 $this->tpl->setVariable("TXT_LANGUAGE", $this->lng->txt("language"));
556 $this->tpl->setVariable("TITLE", ilUtil::prepareFormOutput($val["title"], $strip));
557 $this->tpl->setVariable("DESC", ilUtil::stripSlashes($val["desc"]));
558 $this->tpl->setVariable("NUM", $key);
559 $this->tpl->parseCurrentBlock();
560 }
561
562 // global
563 $this->tpl->setCurrentBlock("adm_content");
564
565 $this->tpl->setVariable("FORMACTION", $this->ctrl->getFormAction($this));
566 $this->tpl->setVariable("TXT_CANCEL", $this->lng->txt("cancel"));
567 $this->tpl->setVariable("TXT_SUBMIT", $this->lng->txt("save"));
568 $this->tpl->setVariable("CMD_SUBMIT", "saveHeaderTitle");
569 $this->tpl->setVariable("TXT_REQUIRED_FLD", $this->lng->txt("required_field"));
570 }
571
575 public function saveHeaderTitleObject()
576 {
578
579 $data = $_POST;
580
581 // default language set?
582 if (!isset($data["default_language"])) {
583 $ilErr->raiseError($this->lng->txt("msg_no_default_language"), $ilErr->MESSAGE);
584 }
585
586 // prepare array fro further checks
587 foreach ($data["Fobject"] as $key => $val) {
588 $langs[$key] = $val["lang"];
589 }
590
591 $langs = array_count_values($langs);
592
593 // all languages set?
594 if (array_key_exists("", $langs)) {
595 $ilErr->raiseError($this->lng->txt("msg_no_language_selected"), $ilErr->MESSAGE);
596 }
597
598 // no single language is selected more than once?
599 if (array_sum($langs) > count($langs)) {
600 $ilErr->raiseError($this->lng->txt("msg_multi_language_selected"), $ilErr->MESSAGE);
601 }
602
603 // copy default translation to variable for object data entry
604 $_POST["Fobject"]["title"] = $_POST["Fobject"][$_POST["default_language"]]["title"];
605 $_POST["Fobject"]["desc"] = $_POST["Fobject"][$_POST["default_language"]]["desc"];
606
607 // first delete all translation entries...
608 $this->object->removeHeaderTitleTranslations();
609
610 // ...and write new translations to object_translation
611 foreach ($data["Fobject"] as $key => $val) {
612 if ($key == $data["default_language"]) {
613 $default = 1;
614 } else {
615 $default = 0;
616 }
617
618 $this->object->addHeaderTitleTranslation(ilUtil::stripSlashes($val["title"]), ilUtil::stripSlashes($val["desc"]), $val["lang"], $default);
619 }
620
621 ilUtil::sendSuccess($this->lng->txt("msg_obj_modified"), true);
622
623 $this->ctrl->redirect($this);
624 }
625
626 public function cancelObject()
627 {
628 $this->ctrl->redirect($this, "view");
629 }
630
637 {
638 $_SESSION["translation_post"] = $_POST;
639
640 $this->ctrl->setParameter($this, "mode", "session");
641 $this->ctrl->setParameter($this, "entry", "0");
642 $this->ctrl->redirect($this, "changeHeaderTitle");
643 }
644
650 public function removeTranslationObject()
651 {
652 $this->ctrl->setParameter($this, "entry", $_GET["entry"]);
653 $this->ctrl->setParameter($this, "mode", "session");
654 $this->ctrl->redirect($this, "changeHeaderTitle");
655 }
656
657
658 public function startValidator($a_mode, $a_log)
659 {
662
663 if (!$rbacsystem->checkAccess("visible,read", $this->object->getRefId())) {
664 $ilErr->raiseError($this->lng->txt("permission_denied"), $ilErr->MESSAGE);
665 }
666
667 $logging = ($a_log) ? true : false;
668 include_once "./Services/Repository/classes/class.ilValidator.php";
669 $validator = new ilValidator($logging);
670 $validator->setMode("all", false);
671
672 $modes = array();
673 foreach ($a_mode as $mode => $value) {
674 $validator->setMode($mode, (bool) $value);
675 $modes[] = $mode . '=' . $value;
676 }
677
678 $scan_log = $validator->validate();
679
680 $mode = $this->lng->txt("scan_modes") . ": " . implode(', ', $modes);
681
682 // output
683 $this->tpl->addBlockFile(
684 "ADM_CONTENT",
685 "adm_content",
686 "tpl.adm_scan.html",
687 "Modules/SystemFolder"
688 );
689
690 $this->tpl->setVariable("FORMACTION", $this->ctrl->getFormAction($this));
691 $this->tpl->setVariable("TXT_TITLE", $this->lng->txt("scanning_system"));
692 $this->tpl->setVariable("COLSPAN", 3);
693 $this->tpl->setVariable("TXT_SCAN_LOG", $scan_log);
694 $this->tpl->setVariable("TXT_MODE", $mode);
695
696 if ($logging === true) {
697 $this->tpl->setVariable("TXT_VIEW_LOG", $this->lng->txt("view_log"));
698 }
699
700 $this->tpl->setVariable("TXT_DONE", $this->lng->txt("done"));
701
702 $validator->writeScanLogLine($mode);
703 }
704
705 public function viewScanLog()
706 {
707 include_once "./Services/Repository/classes/class.ilValidator.php";
708 $validator = new IlValidator();
709 $scan_log = &$validator->readScanLog();
710
711 if (is_array($scan_log)) {
712 $scan_log = '<pre>' . implode("", $scan_log) . '</pre>';
713 $this->tpl->setVariable("ADM_CONTENT", $scan_log);
714 } else {
715 $scan_log = "no scanlog found.";
716 }
717
718 // output
719 $this->tpl->addBlockFile(
720 "ADM_CONTENT",
721 "adm_content",
722 "tpl.adm_scan.html",
723 "Modules/SystemFolder"
724 );
725 $this->tpl->setVariable("TXT_TITLE", $this->lng->txt("scan_details"));
726 $this->tpl->setVariable("COLSPAN", 3);
727 $this->tpl->setVariable("TXT_SCAN_LOG", $scan_log);
728 $this->tpl->setVariable("TXT_DONE", $this->lng->txt("done"));
729 }
730
731
735 public function benchmarkObject()
736 {
739 $ilCtrl = $this->ctrl;
743
744 if (!$rbacsystem->checkAccess("visible,read", $this->object->getRefId())) {
745 $ilErr->raiseError($this->lng->txt("permission_denied"), $ilErr->MESSAGE);
746 }
747
748 $this->benchmarkSubTabs("settings");
749
750 include_once("Services/Form/classes/class.ilPropertyFormGUI.php");
751 $this->form = new ilPropertyFormGUI();
752
753 // Activate DB Benchmark
754 $cb = new ilCheckboxInputGUI($lng->txt("adm_activate_db_benchmark"), "enable_db_bench");
755 $cb->setChecked($ilSetting->get("enable_db_bench"));
756 $cb->setInfo($lng->txt("adm_activate_db_benchmark_desc"));
757 $this->form->addItem($cb);
758
759 // DB Benchmark User
760 $ti = new ilTextInputGUI($lng->txt("adm_db_benchmark_user"), "db_bench_user");
761 $ti->setValue($ilSetting->get("db_bench_user"));
762 $ti->setInfo($lng->txt("adm_db_benchmark_user_desc"));
763 $this->form->addItem($ti);
764
765 $this->form->addCommandButton("saveBenchSettings", $lng->txt("save"));
766
767 $this->form->setTitle($lng->txt("adm_db_benchmark"));
768 $this->form->setFormAction($ilCtrl->getFormAction($this));
769
770 $tpl->setContent($this->form->getHTML());
771 }
772
777 {
778 $this->benchmarkSubTabs("chronological");
779 $this->showDbBenchResults("chronological");
780 }
781
786 {
787 $this->benchmarkSubTabs("slowest_first");
788 $this->showDbBenchResults("slowest_first");
789 }
790
795 {
796 $this->benchmarkSubTabs("sorted_by_sql");
797 $this->showDbBenchResults("sorted_by_sql");
798 }
799
804 {
805 $this->benchmarkSubTabs("by_first_table");
806 $this->showDbBenchResults("by_first_table");
807 }
808
814 public function showDbBenchResults($a_mode)
815 {
817
819 $rec = $ilBench->getDbBenchRecords();
820
821 include_once("./Modules/SystemFolder/classes/class.ilBenchmarkTableGUI.php");
822 $table = new ilBenchmarkTableGUI($this, "benchmark", $rec, $a_mode);
823 $tpl->setContent($table->getHTML());
824 }
825
832 public function benchmarkSubTabs($a_current)
833 {
834 $ilTabs = $this->tabs;
836 $ilCtrl = $this->ctrl;
837
839 $ilTabs->activateTab("benchmarks"); // #18083
840
841 $ilTabs->addSubtab(
842 "settings",
843 $lng->txt("settings"),
844 $ilCtrl->getLinkTarget($this, "benchmark")
845 );
846
847 $rec = $ilBench->getDbBenchRecords();
848 if (count($rec) > 0) {
849 $ilTabs->addSubtab(
850 "chronological",
851 $lng->txt("adm_db_bench_chronological"),
852 $ilCtrl->getLinkTarget($this, "showDbBenchChronological")
853 );
854 $ilTabs->addSubtab(
855 "slowest_first",
856 $lng->txt("adm_db_bench_slowest_first"),
857 $ilCtrl->getLinkTarget($this, "showDbBenchSlowestFirst")
858 );
859 $ilTabs->addSubtab(
860 "sorted_by_sql",
861 $lng->txt("adm_db_bench_sorted_by_sql"),
862 $ilCtrl->getLinkTarget($this, "showDbBenchSortedBySql")
863 );
864 $ilTabs->addSubtab(
865 "by_first_table",
866 $lng->txt("adm_db_bench_by_first_table"),
867 $ilCtrl->getLinkTarget($this, "showDbBenchByFirstTable")
868 );
869 }
870
871 $ilTabs->activateSubTab($a_current);
872 }
873
874
878 public function saveBenchSettingsObject()
879 {
881 if ($_POST["enable_db_bench"]) {
882 $ilBench->enableDbBench(true, ilUtil::stripSlashes($_POST["db_bench_user"]));
883 } else {
884 $ilBench->enableDbBench(false);
885 }
886
887 ilUtil::sendSuccess($this->lng->txt("msg_obj_modified"), true);
888
889 $this->ctrl->redirect($this, "benchmark");
890 }
891
892
896 public function switchBenchModuleObject()
897 {
898 $this->ctrl->setParameter($this, 'cur_mod', $_POST['module']);
899 $this->ctrl->redirect($this, "benchmark");
900 }
901
902
906 public function clearBenchObject()
907 {
909 $ilBench->clearData();
911 }
912
913 // get tabs
914 public function getAdminTabs()
915 {
917 $ilHelp = $this->help;
918
919 // $ilHelp->setScreenIdComponent($this->object->getType());
920
921 $this->ctrl->setParameter($this, "ref_id", $this->object->getRefId());
922
923 // general settings
924 if ($rbacsystem->checkAccess("write", $this->object->getRefId())) {
925 $this->tabs_gui->addTarget(
926 "general_settings",
927 $this->ctrl->getLinkTarget($this, "showBasicSettings"),
928 array("showBasicSettings", "saveBasicSettings"),
929 get_class($this)
930 );
931 }
932
933 // server info
934 if ($rbacsystem->checkAccess("visible,read", $this->object->getRefId())) {
935 $this->tabs_gui->addTarget(
936 "server",
937 $this->ctrl->getLinkTarget($this, "showServerInfo"),
938 array("showServerInfo", "view"),
939 get_class($this)
940 );
941 }
942
943 if ($rbacsystem->checkAccess("write", $this->object->getRefId())) {
944 $this->tabs_gui->addTarget(
945 "cron_jobs",
946 $this->ctrl->getLinkTargetByClass("ilCronManagerGUI", ""),
947 "",
948 get_class($this)
949 );
950
951 // $tabs_gui->addTarget("system_check",
952 // $this->ctrl->getLinkTarget($this, "check"), array("check","viewScanLog","saveCheckParams","saveCheckCron"), get_class($this));
953
954 $this->tabs_gui->addTarget(
955 "benchmarks",
956 $this->ctrl->getLinkTarget($this, "benchmark"),
957 "benchmark",
958 get_class($this)
959 );
960 }
961
962 if ($rbacsystem->checkAccess('edit_permission', $this->object->getRefId())) {
963 $this->tabs_gui->addTarget(
964 "perm_settings",
965 $this->ctrl->getLinkTargetByClass(array(get_class($this),'ilpermissiongui'), "perm"),
966 array("perm","info","owner"),
967 'ilpermissiongui'
968 );
969 }
970 }
971
975 public function showPHPInfoObject()
976 {
977 phpinfo();
978 exit;
979 }
980
981 //
982 //
983 // Server Info
984 //
985 //
986
987 // TODO: remove this subtabs
991 public function setServerInfoSubTabs($a_activate)
992 {
993 $ilTabs = $this->tabs;
994 $ilCtrl = $this->ctrl;
996
997 $ilTabs->addSubTabTarget("installation_status", $ilCtrl->getLinkTarget($this, "showServerInstallationStatus"));
998
999 $ilTabs->addSubTabTarget("server_data", $ilCtrl->getLinkTarget($this, "showServerInfo"));
1000
1001 if ($rbacsystem->checkAccess("write", $this->object->getRefId())) {
1002 $ilTabs->addSubTabTarget("java_server", $ilCtrl->getLinkTarget($this, "showJavaServer"));
1003 }
1004
1005 $ilTabs->setSubTabActive($a_activate);
1006 $ilTabs->setTabActive("server");
1007 }
1008
1012 public function showServerInfoObject()
1013 {
1020 $tpl = $this->tpl;
1021 $ilCtrl = $this->ctrl;
1022 $ilToolbar = $this->toolbar;
1023 $lng = $this->lng;
1024
1025 require_once 'Services/UIComponent/Button/classes/class.ilLinkButton.php';
1026 $button = ilLinkButton::getInstance();
1027 $button->setCaption('vc_information');
1028 $button->setUrl($this->ctrl->getLinkTarget($this, 'showVcsInformation'));
1029 $ilToolbar->addButtonInstance($button);
1030
1031 $this->initServerInfoForm();
1032 // TODO: remove sub tabs
1033// $this->tabs->setTabActive("server");
1034 $this->setServerInfoSubTabs("server_data");
1035
1036 $btpl = new ilTemplate("tpl.server_data.html", true, true, "Modules/SystemFolder");
1037 $btpl->setVariable("FORM", $this->form->getHTML());
1038 $btpl->setVariable("PHP_INFO_TARGET", $ilCtrl->getLinkTarget($this, "showPHPInfo"));
1039 $tpl->setContent($btpl->get());
1040 }
1041
1047 public function initServerInfoForm()
1048 {
1049 $lng = $this->lng;
1050 $ilClientIniFile = $this->client_ini;
1052
1053 include_once("Services/Form/classes/class.ilPropertyFormGUI.php");
1054 $this->form = new ilPropertyFormGUI();
1055
1056 // installation name
1057 $ne = new ilNonEditableValueGUI($lng->txt("inst_name"), "");
1058 $ne->setValue($ilClientIniFile->readVariable("client", "name"));
1059 $ne->setInfo($ilClientIniFile->readVariable("client", "description"));
1060 $this->form->addItem($ne);
1061
1062 // client id
1063 $ne = new ilNonEditableValueGUI($lng->txt("client_id"), "");
1064 $ne->setValue(CLIENT_ID);
1065 $this->form->addItem($ne);
1066
1067 // installation id
1068 $ne = new ilNonEditableValueGUI($lng->txt("inst_id"), "");
1069 $ne->setValue($ilSetting->get("inst_id"));
1070 $this->form->addItem($ne);
1071
1072 // database version
1073 $ne = new ilNonEditableValueGUI($lng->txt("db_version"), "");
1074 $ne->setValue($ilSetting->get("db_version"));
1075
1076 $this->form->addItem($ne);
1077
1078 // ilias version
1079 $ne = new ilNonEditableValueGUI($lng->txt("ilias_version"), "");
1080 $ne->setValue($ilSetting->get("ilias_version"));
1081 $this->form->addItem($ne);
1082
1083 // host
1084 $ne = new ilNonEditableValueGUI($lng->txt("host"), "");
1085 $ne->setValue($_SERVER["SERVER_NAME"]);
1086 $this->form->addItem($ne);
1087
1088 // ip & port
1089 $ne = new ilNonEditableValueGUI($lng->txt("ip_address") . " & " . $this->lng->txt("port"), "");
1090 $ne->setValue($_SERVER["SERVER_ADDR"] . ":" . $_SERVER["SERVER_PORT"]);
1091 $this->form->addItem($ne);
1092
1093 // server
1094 $ne = new ilNonEditableValueGUI($lng->txt("server_software"), "");
1095 $ne->setValue($_SERVER["SERVER_SOFTWARE"]);
1096 $this->form->addItem($ne);
1097
1098 // http path
1099 $ne = new ilNonEditableValueGUI($lng->txt("http_path"), "");
1100 $ne->setValue(ILIAS_HTTP_PATH);
1101 $this->form->addItem($ne);
1102
1103 // absolute path
1104 $ne = new ilNonEditableValueGUI($lng->txt("absolute_path"), "");
1105 $ne->setValue(ILIAS_ABSOLUTE_PATH);
1106 $this->form->addItem($ne);
1107
1108 $not_set = $lng->txt("path_not_set");
1109
1110 // convert
1111 $ne = new ilNonEditableValueGUI($lng->txt("path_to_convert"), "");
1112 $ne->setValue((PATH_TO_CONVERT) ? PATH_TO_CONVERT : $not_set);
1113 $this->form->addItem($ne);
1114
1115 // zip
1116 $ne = new ilNonEditableValueGUI($lng->txt("path_to_zip"), "");
1117 $ne->setValue((PATH_TO_ZIP) ? PATH_TO_ZIP : $not_set);
1118 $this->form->addItem($ne);
1119
1120 // unzip
1121 $ne = new ilNonEditableValueGUI($lng->txt("path_to_unzip"), "");
1122 $ne->setValue((PATH_TO_UNZIP) ? PATH_TO_UNZIP : $not_set);
1123 $this->form->addItem($ne);
1124
1125 // java
1126 $ne = new ilNonEditableValueGUI($lng->txt("path_to_java"), "");
1127 $ne->setValue((PATH_TO_JAVA) ? PATH_TO_JAVA : $not_set);
1128 $this->form->addItem($ne);
1129
1130 // mkisofs
1131 $ne = new ilNonEditableValueGUI($lng->txt("path_to_mkisofs"), "");
1132 $ne->setValue((PATH_TO_MKISOFS) ? PATH_TO_MKISOFS : $not_set);
1133 $this->form->addItem($ne);
1134
1135 // latex
1136 $ne = new ilNonEditableValueGUI($lng->txt("url_to_latex"), "");
1137 $ne->setValue((URL_TO_LATEX) ? URL_TO_LATEX : $not_set);
1138 $this->form->addItem($ne);
1139
1140
1141 $this->form->setTitle($lng->txt("server_data"));
1142 $this->form->setFormAction($this->ctrl->getFormAction($this));
1143 }
1144
1145 protected function showServerInstallationStatusObject() : void
1146 {
1147 $this->setServerInfoSubTabs("installation_status");
1148 $this->renderServerStatus();
1149 }
1150
1151 protected function renderServerStatus() : void
1152 {
1153 global $DIC;
1154 $f = $DIC->ui()->factory();
1155 $r = $DIC->ui()->renderer();
1156 $refinery = $DIC->refinery();
1157
1158 $metric = $this->getServerStatusInfo($refinery);
1159 $report = $metric->toUIReport($f, $this->lng->txt("installation_status"));
1160
1161 $this->tpl->setContent($r->render($report));
1162 }
1163
1164 protected function getServerStatusInfo(ILIAS\Refinery\Factory $refinery) : ILIAS\Setup\Metrics\Metric
1165 {
1166 $data = new Factory();
1167 $lng = new ilSetupLanguage('en');
1168 $interface_finder = new ImplementationOfInterfaceFinder();
1169 $plugin_raw_reader = new ilPluginRawReader();
1170
1171 $agent_finder = new ImplementationOfAgentFinder(
1172 $refinery,
1173 $data,
1174 $lng,
1175 $interface_finder,
1176 $plugin_raw_reader,
1177 []
1178 );
1179
1180 $st = new StatusCommand($agent_finder);
1181
1182 return $st->getMetrics($agent_finder->getAgents());
1183 }
1184
1185 //
1186 //
1187 // General Settings
1188 //
1189 //
1190
1194 public function setGeneralSettingsSubTabs($a_activate)
1195 {
1196 $ilTabs = $this->tabs;
1197 $ilCtrl = $this->ctrl;
1198
1199 $ilTabs->addSubTabTarget("basic_settings", $ilCtrl->getLinkTarget($this, "showBasicSettings"));
1200 $ilTabs->addSubTabTarget("header_title", $ilCtrl->getLinkTarget($this, "showHeaderTitle"));
1201 $ilTabs->addSubTabTarget("contact_data", $ilCtrl->getLinkTarget($this, "showContactInformation"));
1202 $ilTabs->addSubTabTarget("adm_imprint", $ilCtrl->getLinkTargetByClass("ilimprintgui", "preview"));
1203
1204 $ilTabs->setSubTabActive($a_activate);
1205 $ilTabs->setTabActive("general_settings");
1206 }
1207
1208 //
1209 //
1210 // Basic Settings
1211 //
1212 //
1213
1217 public function showBasicSettingsObject()
1218 {
1219 $tpl = $this->tpl;
1220
1221 $this->initBasicSettingsForm();
1222 $this->setGeneralSettingsSubTabs("basic_settings");
1223
1224 $tpl->setContent($this->form->getHTML());
1225 }
1226
1227
1231 public function initBasicSettingsForm()
1232 {
1237 $lng = $this->lng;
1239
1240 include_once("Services/Form/classes/class.ilPropertyFormGUI.php");
1241 $this->form = new ilPropertyFormGUI();
1242 $lng->loadLanguageModule("pd");
1243
1244 // installation short title
1245 $ti = new ilTextInputGUI($this->lng->txt("short_inst_name"), "short_inst_name");
1246 $ti->setMaxLength(200);
1247 $ti->setSize(40);
1248 $ti->setValue($ilSetting->get("short_inst_name"));
1249 $ti->setInfo($this->lng->txt("short_inst_name_info"));
1250 $this->form->addItem($ti);
1251
1252
1253 $cb = new ilCheckboxInputGUI($this->lng->txt("pub_section"), "pub_section");
1254 $cb->setInfo($lng->txt("pub_section_info"));
1255 if (ilPublicSectionSettings::getInstance()->isEnabled()) {
1256 $cb->setChecked(true);
1257 }
1258 $this->form->addItem($cb);
1259
1260 $this->lng->loadLanguageModule('administration');
1261 $domains = new ilTextInputGUI($this->lng->txt('adm_pub_section_domain_filter'), 'public_section_domains');
1262 $domains->setInfo($this->lng->txt('adm_pub_section_domain_filter_info'));
1263 $domains->setMulti(true);
1264 $domains->setValue(current(ilPublicSectionSettings::getInstance()->getDomains()));
1265 $domains->setMultiValues(ilPublicSectionSettings::getInstance()->getDomains());
1266
1267 $cb->addSubItem($domains);
1268
1269
1270 // Enable Global Profiles
1271 $cb_prop = new ilCheckboxInputGUI($lng->txt('pd_enable_user_publish'), 'enable_global_profiles');
1272 $cb_prop->setInfo($lng->txt('pd_enable_user_publish_info'));
1273 $cb_prop->setChecked($ilSetting->get('enable_global_profiles'));
1274 $cb->addSubItem($cb_prop);
1275
1276 // search engine
1277 include_once('Services/PrivacySecurity/classes/class.ilRobotSettings.php');
1278 $robot_settings = ilRobotSettings::_getInstance();
1279 $cb2 = new ilCheckboxInputGUI($this->lng->txt("search_engine"), "open_google");
1280 $cb2->setInfo($this->lng->txt("enable_search_engine"));
1281 $this->form->addItem($cb2);
1282
1283 if (!$robot_settings->checkRewrite()) {
1284 $cb2->setAlert($lng->txt("allow_override_alert"));
1285 $cb2->setChecked(false);
1286 $cb2->setDisabled(true);
1287 } else {
1288 if ($ilSetting->get("open_google")) {
1289 $cb2->setChecked(true);
1290 }
1291 }
1292
1293 // locale
1294 $ti = new ilTextInputGUI($this->lng->txt("adm_locale"), "locale");
1295 $ti->setMaxLength(80);
1296 $ti->setSize(40);
1297 $ti->setInfo($this->lng->txt("adm_locale_info"));
1298 $ti->setValue($ilSetting->get("locale"));
1299 $this->form->addItem($ti);
1300
1301 // save and cancel commands
1302 $this->form->addCommandButton("saveBasicSettings", $lng->txt("save"));
1303
1304 $this->form->setTitle($lng->txt("basic_settings"));
1305 $this->form->setFormAction($this->ctrl->getFormAction($this));
1306 }
1307
1312 public function saveBasicSettingsObject()
1313 {
1314 $tpl = $this->tpl;
1315 $lng = $this->lng;
1316 $ilCtrl = $this->ctrl;
1320
1321 if (!$rbacsystem->checkAccess("write", $this->object->getRefId())) {
1322 $ilErr->raiseError($this->lng->txt("permission_denied"), $ilErr->MESSAGE);
1323 }
1324
1325 $this->initBasicSettingsForm();
1326 if ($this->form->checkInput()) {
1327 $ilSetting->set("short_inst_name", $_POST["short_inst_name"]);
1328
1329 $public_section = ilPublicSectionSettings::getInstance();
1330 $public_section->setEnabled($this->form->getInput('pub_section'));
1331
1332 $domains = array();
1333 foreach ((array) $this->form->getInput('public_section_domains') as $domain) {
1334 if (strlen(trim($domain))) {
1335 $domains[] = $domain;
1336 }
1337 }
1338 $public_section->setDomains($domains);
1339 $public_section->save();
1340
1341 $global_profiles = ($_POST["pub_section"])
1342 ? (int) $_POST['enable_global_profiles']
1343 : 0;
1344 $ilSetting->set('enable_global_profiles', $global_profiles);
1345
1346 $ilSetting->set("open_google", $_POST["open_google"]);
1347 $ilSetting->set("locale", $_POST["locale"]);
1348
1349 ilUtil::sendSuccess($lng->txt("msg_obj_modified"), true);
1350 $ilCtrl->redirect($this, "showBasicSettings");
1351 }
1352 $this->setGeneralSettingsSubTabs("basic_settings");
1353 $this->form->setValuesByPost();
1354 $tpl->setContent($this->form->getHtml());
1355 }
1356
1357 //
1358 //
1359 // Header title
1360 //
1361 //
1362
1366 public function showHeaderTitleObject($a_get_post_values = false)
1367 {
1368 $tpl = $this->tpl;
1369
1370 $this->setGeneralSettingsSubTabs("header_title");
1371 include_once("./Services/Object/classes/class.ilObjectTranslationTableGUI.php");
1372 $table = new ilObjectTranslationTableGUI($this, "showHeaderTitle", false);
1373 if ($a_get_post_values) {
1374 $vals = array();
1375 foreach ($_POST["title"] as $k => $v) {
1376 $vals[] = array("title" => $v,
1377 "desc" => $_POST["desc"][$k],
1378 "lang" => $_POST["lang"][$k],
1379 "default" => ($_POST["default"] == $k));
1380 }
1381 $table->setData($vals);
1382 } else {
1383 $data = $this->object->getHeaderTitleTranslations();
1384 if (is_array($data["Fobject"])) {
1385 foreach ($data["Fobject"] as $k => $v) {
1386 if ($k == $data["default_language"]) {
1387 $data["Fobject"][$k]["default"] = true;
1388 } else {
1389 $data["Fobject"][$k]["default"] = false;
1390 }
1391 }
1392 } else {
1393 $data["Fobject"] = array();
1394 }
1395 $table->setData($data["Fobject"]);
1396 }
1397 $tpl->setContent($table->getHTML());
1398 }
1399
1403 public function saveHeaderTitlesObject()
1404 {
1405 $ilCtrl = $this->ctrl;
1406 $lng = $this->lng;
1409
1410 if (!$rbacsystem->checkAccess("write", $this->object->getRefId())) {
1411 $ilErr->raiseError($this->lng->txt("permission_denied"), $ilErr->MESSAGE);
1412 }
1413
1414 // var_dump($_POST);
1415
1416 // default language set?
1417 if (!isset($_POST["default"]) && count($_POST["lang"]) > 0) {
1418 ilUtil::sendFailure($lng->txt("msg_no_default_language"));
1419 return $this->showHeaderTitleObject(true);
1420 }
1421
1422 // all languages set?
1423 if (array_key_exists("", $_POST["lang"])) {
1424 ilUtil::sendFailure($lng->txt("msg_no_language_selected"));
1425 return $this->showHeaderTitleObject(true);
1426 }
1427
1428 // no single language is selected more than once?
1429 if (count(array_unique($_POST["lang"])) < count($_POST["lang"])) {
1430 ilUtil::sendFailure($lng->txt("msg_multi_language_selected"));
1431 return $this->showHeaderTitleObject(true);
1432 }
1433
1434 // save the stuff
1435 $this->object->removeHeaderTitleTranslations();
1436 foreach ($_POST["title"] as $k => $v) {
1437 $this->object->addHeaderTitleTranslation(
1439 ilUtil::stripSlashes($_POST["desc"][$k]),
1440 ilUtil::stripSlashes($_POST["lang"][$k]),
1441 ($_POST["default"] == $k)
1442 );
1443 }
1444
1445 ilUtil::sendSuccess($lng->txt("msg_obj_modified"), true);
1446 $ilCtrl->redirect($this, "showHeaderTitle");
1447 }
1448
1452 public function addHeaderTitleObject()
1453 {
1454 $ilCtrl = $this->ctrl;
1455 $lng = $this->lng;
1456
1457 if (is_array($_POST["title"])) {
1458 foreach ($_POST["title"] as $k => $v) {
1459 }
1460 }
1461 $k++;
1462 $_POST["title"][$k] = "";
1463 $this->showHeaderTitleObject(true);
1464 }
1465
1470 {
1471 $ilCtrl = $this->ctrl;
1472 $lng = $this->lng;
1473 //var_dump($_POST);
1474 foreach ($_POST["title"] as $k => $v) {
1475 if ($_POST["check"][$k]) {
1476 unset($_POST["title"][$k]);
1477 unset($_POST["desc"][$k]);
1478 unset($_POST["lang"][$k]);
1479 if ($k == $_POST["default"]) {
1480 unset($_POST["default"]);
1481 }
1482 }
1483 }
1484 $this->saveHeaderTitlesObject();
1485 }
1486
1487
1488 //
1489 //
1490 // Cron Jobs
1491 //
1492 //
1493
1494 /*
1495 * OLD GLOBAL CRON JOB SWITCHES (ilSetting)
1496 *
1497 * cron_user_check => obsolete
1498 * cron_inactive_user_delete => obsolete
1499 * cron_inactivated_user_delete => obsolete
1500 * cron_link_check => obsolete
1501 * cron_web_resource_check => migrated
1502 * cron_lucene_index => obsolete
1503 * forum_notification => migrated
1504 * mail_notification => migrated
1505 * crsgrp_ntf => migrated
1506 * cron_upd_adrbook => migrated
1507 */
1508
1509 public function jumpToCronJobsObject()
1510 {
1511 // #13010 - this is used for external settings
1512 $this->ctrl->redirectByClass("ilCronManagerGUI", "render");
1513 }
1514
1515
1516 //
1517 //
1518 // Contact Information
1519 //
1520 //
1521
1526 {
1527 $tpl = $this->tpl;
1528
1530 $this->setGeneralSettingsSubTabs("contact_data");
1531 $tpl->setContent($this->form->getHTML());
1532 }
1533
1538 {
1539 $lng = $this->lng;
1541
1542 include_once("Services/Form/classes/class.ilPropertyFormGUI.php");
1543 $this->form = new ilPropertyFormGUI();
1544
1545 // first name
1546 $ti = new ilTextInputGUI($this->lng->txt("firstname"), "admin_firstname");
1547 $ti->setMaxLength(64);
1548 $ti->setSize(40);
1549 $ti->setRequired(true);
1550 $ti->setValue($ilSetting->get("admin_firstname"));
1551 $this->form->addItem($ti);
1552
1553 // last name
1554 $ti = new ilTextInputGUI($this->lng->txt("lastname"), "admin_lastname");
1555 $ti->setMaxLength(64);
1556 $ti->setSize(40);
1557 $ti->setRequired(true);
1558 $ti->setValue($ilSetting->get("admin_lastname"));
1559 $this->form->addItem($ti);
1560
1561 // title
1562 $ti = new ilTextInputGUI($this->lng->txt("title"), "admin_title");
1563 $ti->setMaxLength(64);
1564 $ti->setSize(40);
1565 $ti->setValue($ilSetting->get("admin_title"));
1566 $this->form->addItem($ti);
1567
1568 // position
1569 $ti = new ilTextInputGUI($this->lng->txt("position"), "admin_position");
1570 $ti->setMaxLength(64);
1571 $ti->setSize(40);
1572 $ti->setValue($ilSetting->get("admin_position"));
1573 $this->form->addItem($ti);
1574
1575 // institution
1576 $ti = new ilTextInputGUI($this->lng->txt("institution"), "admin_institution");
1577 $ti->setMaxLength(200);
1578 $ti->setSize(40);
1579 $ti->setValue($ilSetting->get("admin_institution"));
1580 $this->form->addItem($ti);
1581
1582 // street
1583 $ti = new ilTextInputGUI($this->lng->txt("street"), "admin_street");
1584 $ti->setMaxLength(64);
1585 $ti->setSize(40);
1586 //$ti->setRequired(true);
1587 $ti->setValue($ilSetting->get("admin_street"));
1588 $this->form->addItem($ti);
1589
1590 // zip code
1591 $ti = new ilTextInputGUI($this->lng->txt("zipcode"), "admin_zipcode");
1592 $ti->setMaxLength(10);
1593 $ti->setSize(5);
1594 //$ti->setRequired(true);
1595 $ti->setValue($ilSetting->get("admin_zipcode"));
1596 $this->form->addItem($ti);
1597
1598 // city
1599 $ti = new ilTextInputGUI($this->lng->txt("city"), "admin_city");
1600 $ti->setMaxLength(64);
1601 $ti->setSize(40);
1602 //$ti->setRequired(true);
1603 $ti->setValue($ilSetting->get("admin_city"));
1604 $this->form->addItem($ti);
1605
1606 // country
1607 $ti = new ilTextInputGUI($this->lng->txt("country"), "admin_country");
1608 $ti->setMaxLength(64);
1609 $ti->setSize(40);
1610 //$ti->setRequired(true);
1611 $ti->setValue($ilSetting->get("admin_country"));
1612 $this->form->addItem($ti);
1613
1614 // phone
1615 $ti = new ilTextInputGUI($this->lng->txt("phone"), "admin_phone");
1616 $ti->setMaxLength(64);
1617 $ti->setSize(40);
1618 //$ti->setRequired(true);
1619 $ti->setValue($ilSetting->get("admin_phone"));
1620 $this->form->addItem($ti);
1621
1622 // email
1623 $ti = new ilEmailInputGUI($this->lng->txt("email"), "admin_email");
1624 $ti->setMaxLength(64);
1625 $ti->setSize(40);
1626 $ti->setRequired(true);
1627 $ti->allowRFC822(true);
1628 $ti->setValue($ilSetting->get("admin_email"));
1629 $this->form->addItem($ti);
1630
1631 // feedback recipient
1632 /* currently used in:
1633 - footer
1634 - terms of service: no document found message
1635 */
1636 /*$ti = new ilEmailInputGUI($this->lng->txt("feedback_recipient"), "feedback_recipient");
1637 $ti->setInfo(sprintf($this->lng->txt("feedback_recipient_info"), $this->lng->txt("contact_sysadmin")));
1638 $ti->setMaxLength(64);
1639 $ti->setSize(40);
1640 $ti->setRequired(true);
1641 $ti->allowRFC822(true);
1642 $ti->setValue($ilSetting->get("feedback_recipient"));
1643 $this->form->addItem($ti);*/
1644
1645 // System support contacts
1646 include_once("./Modules/SystemFolder/classes/class.ilSystemSupportContacts.php");
1647 $ti = new ilTextInputGUI($this->lng->txt("adm_support_contacts"), "adm_support_contacts");
1648 $ti->setMaxLength(500);
1649 $ti->setValue(ilSystemSupportContacts::getList());
1650 //$ti->setSize();
1651 $ti->setInfo($this->lng->txt("adm_support_contacts_info"));
1652 $this->form->addItem($ti);
1653
1654 // Accessibility support contacts
1655 $ti = new ilTextInputGUI($this->lng->txt("adm_accessibility_contacts"), "accessibility_support_contacts");
1656 $ti->setMaxLength(500);
1658 //$ti->setSize();
1659 $ti->setInfo($this->lng->txt("adm_accessibility_contacts_info"));
1660 $this->form->addItem($ti);
1661
1662
1663 // error recipient
1664 /*$ti = new ilEmailInputGUI($this->lng->txt("error_recipient"), "error_recipient");
1665 $ti->setMaxLength(64);
1666 $ti->setSize(40);
1667 $ti->allowRFC822(true);
1668 $ti->setValue($ilSetting->get("error_recipient"));
1669 $this->form->addItem($ti);*/
1670
1671 $this->form->addCommandButton("saveContactInformation", $lng->txt("save"));
1672
1673 $this->form->setTitle($lng->txt("contact_data"));
1674 $this->form->setFormAction($this->ctrl->getFormAction($this));
1675 }
1676
1682 {
1683 $tpl = $this->tpl;
1684 $lng = $this->lng;
1685 $ilCtrl = $this->ctrl;
1689
1690 if (!$rbacsystem->checkAccess("write", $this->object->getRefId())) {
1691 $ilErr->raiseError($this->lng->txt("permission_denied"), $ilErr->MESSAGE);
1692 }
1693
1695 if ($this->form->checkInput()) {
1696 $fs = array("admin_firstname", "admin_lastname", "admin_title", "admin_position",
1697 "admin_institution", "admin_street", "admin_zipcode", "admin_city",
1698 "admin_country", "admin_phone", "admin_email");
1699 foreach ($fs as $f) {
1700 $ilSetting->set($f, $_POST[$f]);
1701 }
1702
1703 // System support contacts
1704 include_once("./Modules/SystemFolder/classes/class.ilSystemSupportContacts.php");
1705 ilSystemSupportContacts::setList($_POST["adm_support_contacts"]);
1706
1707 // Accessibility support contacts
1708 ilAccessibilitySupportContacts::setList($_POST["accessibility_support_contacts"]);
1709
1710 ilUtil::sendSuccess($lng->txt("msg_obj_modified"), true);
1711 $ilCtrl->redirect($this, "showContactInformation");
1712 } else {
1713 $this->setGeneralSettingsSubTabs("contact_data");
1714 $this->form->setValuesByPost();
1715 $tpl->setContent($this->form->getHtml());
1716 }
1717 }
1718
1719 //
1720 //
1721 // Java Server
1722 //
1723 //
1724
1728 public function showJavaServerObject()
1729 {
1730 $tpl = $this->tpl;
1731
1732 $tpl->addBlockFile('ADM_CONTENT', 'adm_content', 'tpl.java_settings.html', 'Modules/SystemFolder');
1733
1734 $GLOBALS['lng']->loadLanguageModule('search');
1735
1736 $this->initJavaServerForm();
1737 $this->setServerInfoSubTabs("java_server");
1738 $tpl->setVariable('SETTINGS_TABLE', $this->form->getHTML());
1739 }
1740
1746 {
1747 $this->setGeneralSettingsSubTabs('java_server');
1748 $this->tpl->setContent($this->form->getHTML());
1749 }
1750
1754 public function initJavaServerForm()
1755 {
1756 $lng = $this->lng;
1758
1759 include_once("Services/Form/classes/class.ilPropertyFormGUI.php");
1760 $this->form = new ilPropertyFormGUI();
1761 $this->form->setFormAction($this->ctrl->getFormAction($this, 'saveJavaServer'));
1762
1763 // pdf fonts
1764 $pdf = new ilFormSectionHeaderGUI();
1765 $pdf->setTitle($this->lng->txt('rpc_pdf_generation'));
1766 $this->form->addItem($pdf);
1767
1768 $pdf_font = new ilTextInputGUI($this->lng->txt('rpc_pdf_font'), 'rpc_pdf_font');
1769 $pdf_font->setInfo($this->lng->txt('rpc_pdf_font_info'));
1770 $pdf_font->setSize(64);
1771 $pdf_font->setMaxLength(1024);
1772 $pdf_font->setRequired(true);
1773 $pdf_font->setValue(
1774 $ilSetting->get('rpc_pdf_font', 'Helvetica, unifont')
1775 );
1776 $this->form->addItem($pdf_font);
1777
1778 // save and cancel commands
1779 $this->form->addCommandButton("saveJavaServer", $lng->txt("save"));
1780 }
1781
1786 public function saveJavaServerObject()
1787 {
1788 $tpl = $this->tpl;
1789 $lng = $this->lng;
1790 $ilCtrl = $this->ctrl;
1794
1795 if (!$rbacsystem->checkAccess("write", $this->object->getRefId())) {
1796 $ilErr->raiseError($this->lng->txt("permission_denied"), $ilErr->MESSAGE);
1797 }
1798
1799 $this->initJavaServerForm();
1800 if ($this->form->checkInput()) {
1801 $ilSetting->set('rpc_pdf_font', ilUtil::stripSlashes($_POST['rpc_pdf_font']));
1802 ilUtil::sendSuccess($lng->txt("msg_obj_modified"), true);
1803 $ilCtrl->redirect($this, "showJavaServer");
1804
1805 // TODO check settings, ping server
1806 } else {
1807 $this->setGeneralSettingsSubTabs("java_server");
1808 $this->form->setValuesByPost();
1809 $tpl->setContent($this->form->getHtml());
1810 }
1811 }
1812
1813
1817 public static function _goto()
1818 {
1819 global $DIC;
1820
1821 $ilAccess = $DIC->access();
1822 $ilErr = $DIC["ilErr"];
1823 $lng = $DIC->language();
1824
1825 $a_target = SYSTEM_FOLDER_ID;
1826
1827 if ($ilAccess->checkAccess("read", "", $a_target)) {
1828 ilUtil::redirect("ilias.php?baseClass=ilAdministrationGUI");
1829 exit;
1830 } else {
1831 if ($ilAccess->checkAccess("read", "", ROOT_FOLDER_ID)) {
1832 ilUtil::sendFailure(sprintf(
1833 $lng->txt("msg_no_perm_read_item"),
1835 ), true);
1837 }
1838 }
1839 $ilErr->raiseError($lng->txt("msg_no_perm_read"), $ilErr->FATAL);
1840 }
1841
1845 protected function showVcsInformationObject() : void
1846 {
1847 $vcInfo = [];
1848
1849 foreach ([new ilGitInformation()] as $vc) {
1850 $html = $vc->getInformationAsHtml();
1851 if ($html) {
1852 $vcInfo[] = $html;
1853 }
1854 }
1855
1856 if ($vcInfo) {
1857 ilUtil::sendInfo(implode("<br />", $vcInfo));
1858 } else {
1859 ilUtil::sendInfo($this->lng->txt('vc_information_not_determined'));
1860 }
1861
1862 $this->showServerInfoObject();
1863 }
1864}
user()
Definition: user.php:4
if(!defined('PATH_SEPARATOR')) $GLOBALS['_PEAR_default_error_mode']
Definition: PEAR.php:64
$_GET["client_id"]
$_POST["username"]
$_SESSION["AccountId"]
An exception for terminatinating execution or to throw for unit testing.
Builds data types.
Definition: Factory.php:20
Command to output status information about the installation.
A metric is something we can measure about the system.
Definition: Metric.php:18
return true
Flag indicating whether or not HTTP headers will be sent when outputting captcha image/audio.
error($a_errmsg)
set error message @access public
This class represents a checkbox property in a property form.
Class ilCronManagerGUI.
This class represents a section header in a property form.
Class ilGitInformation.
Class ilImprintGUI.
static getInstance()
Factory.
This class represents a non editable value in a property form.
static getEffectiveContentStyleId($a_style_id, $a_type="")
Get effective Style Id.
Class ilObjSystemFolderGUI.
setServerInfoSubTabs($a_activate)
Set sub tabs for server info.
setSystemCheckSubTabs($a_activate)
Set sub tabs for general settings.
showContactInformationObject()
Show contact information.
initContactInformationForm()
Init contact information form.
static _goto()
goto target group
__construct($a_data, $a_id, $a_call_by_reference)
Constructor @access public.
saveHeaderTitlesObject()
Save header titles.
benchmarkSubTabs($a_current)
Benchmark sub tabs.
showDbBenchResults($a_mode)
Show Db Benchmark Results.
showJavaServerObject()
Show Java Server Settings.
saveJavaServerObject()
Save java server form.
switchBenchModuleObject()
save benchmark settings
createJavaServerIniObject()
Create a server ini file.
benchmarkObject()
Benchmark settings.
deleteHeaderTitlesObject()
Remove header titles.
showPHPInfoObject()
Show PHP Information.
showDbBenchSortedBySqlObject()
Show db benchmark results.
showDbBenchSlowestFirstObject()
Show db benchmark results.
addHeaderTitleTranslationObject()
adds a translation form & save post vars to session
saveBenchSettingsObject()
Save benchmark settings.
addHeaderTitleObject()
Add a header title.
showDbBenchChronologicalObject()
Show db benchmark results.
checkObject()
displays system check menu
cancelObject()
cancel action and go back to previous page @access public
changeHeaderTitleObject()
edit header title form
saveContactInformationObject()
Save contact information form.
saveBasicSettingsObject()
Save basic settings form.
removeTranslationObject()
removes a translation form & save post vars to session
getServerStatusInfo(ILIAS\Refinery\Factory $refinery)
clearBenchObject()
delete all benchmark records
showHeaderTitleObject($a_get_post_values=false)
Show header title.
viewObject()
show admin subpanels and basic settings form
showBasicSettingsObject()
Show basic settings.
saveHeaderTitleObject()
save header title
showDbBenchByFirstTableObject()
Show db benchmark results.
setGeneralSettingsSubTabs($a_activate)
Set sub tabs for general settings.
initJavaServerForm()
Init java server form.
initServerInfoForm()
Init server info form.
getAdminTabs()
administration tabs show only permissions and trash folder
Class ilObjectGUI Basic methods of all Output classes.
prepareOutput($a_show_subobjects=true)
prepare output
static _gotoRepositoryRoot($a_raise_error=false)
Goto repository root.
checkPermissionBool($a_perm, $a_cmd="", $a_type="", $a_ref_id=null)
Check permission.
Class ilObjectOwnershipManagementGUI.
static getPluginObjectByType($type)
Return either a repoObject plugin or a orgunit extension plugin or null if the type is not a plugin.
TableGUI class for title/description translations.
static _lookupObjId($a_id)
static _lookupTitle($a_id)
lookup object title
New PermissionGUI (extends from old ilPermission2GUI) RBAC related output.
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()
Get instance.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
special template class to simplify handling of ITX/PEAR
This class represents a text property in a property form.
static redirect($a_script)
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 formSelect( $selected, $varname, $options, $multiple=false, $direct_text=false, $size="0", $style_class="", $attribs="", $disabled=false)
Builds a select form field with options and shows the selected option first.
static sendInfo($a_info="", $a_keep=false)
Send Info Message to Screen.
static prepareFormOutput($a_str, $a_strip=false)
prepares string output for html forms @access public
ILIAS Data Validator & Recovery Tool.
const CLIENT_ID
Definition: constants.php:39
const SYSTEM_FOLDER_ID
Definition: constants.php:33
const ROOT_FOLDER_ID
Definition: constants.php:30
global $DIC
Definition: goto.php:24
help()
Definition: help.php:2
global $ilBench
Definition: ilias.php:21
$ilUser
Definition: imgupload.php:18
exit
Definition: login.php:29
__construct(Container $dic, ilPlugin $plugin)
@inheritDoc
Class ChatMainBarProvider \MainMenu\Provider.
$ret
Definition: parser.php:6
global $ilSetting
Definition: privfeed.php:17
$_SERVER['HTTP_HOST']
Definition: raiseError.php:10
settings()
Definition: settings.php:2
global $ilDB