ILIAS  release_5-3 Revision v5.3.23-19-g915713cf615
class.ilObjComponentSettingsGUI.php
Go to the documentation of this file.
1 <?php
2 /* Copyright (c) 1998-2009 ILIAS open source, Extended GPL, see docs/LICENSE */
3 include_once("./Services/Object/classes/class.ilObjectGUI.php");
4 
5 
17 {
18  private static $ERROR_MESSAGE;
24  public function __construct($a_data, $a_id, $a_call_by_reference = true, $a_prepare_output = true)
25  {
26  $this->type = 'cmps';
27  parent::__construct($a_data, $a_id, $a_call_by_reference, $a_prepare_output);
28 
29  $this->lng->loadLanguageModule('cmps');
30  }
31 
38  public function executeCommand()
39  {
40  global $rbacsystem, $ilErr, $ilCtrl;
41 
42  $next_class = $this->ctrl->getNextClass($this);
43  $cmd = $this->ctrl->getCmd();
44 
45  $this->prepareOutput();
46 
47  if (!$rbacsystem->checkAccess('read', $this->object->getRefId())) {
48  $ilErr->raiseError($this->lng->txt('no_permission'), $ilErr->WARNING);
49  }
50 
51  switch ($next_class) {
52  case 'ilpermissiongui':
53  $this->tabs_gui->setTabActive('perm_settings');
54  include_once("Services/AccessControl/classes/class.ilPermissionGUI.php");
55  $perm_gui = new ilPermissionGUI($this);
56  $ret = $this->ctrl->forwardCommand($perm_gui);
57  break;
58 
59  default:
60 
61  // configure classes
62  $config = false;
63  if (substr(strtolower($next_class), strlen($next_class) - 9) == "configgui") {
64  $path = $ilCtrl->lookupClassPath(strtolower($next_class));
65  if ($path != "") {
66  include_once($path);
67  $nc = new $next_class();
68 
70  $_GET["ctype"],
71  $_GET["cname"],
72  $_GET["slot_id"],
73  $_GET["pname"]
74  );
75 
76  $nc->setPluginObject($pl);
77 
78  $ret = $this->ctrl->forwardCommand($nc);
79  $config = true;
80  }
81  }
82 
83  if (!$config) {
84  if (!$cmd || $cmd == 'view') {
85  $cmd = "listPlugins";
86  }
87 
88  $this->$cmd();
89  }
90  break;
91  }
92  return true;
93  }
94 
101  public function getAdminTabs()
102  {
103  global $rbacsystem, $ilAccess, $lng;
104 
105  if ($rbacsystem->checkAccess("visible,read", $this->object->getRefId())) {
106  $this->tabs_gui->addTab(
107  "plugins",
108  $lng->txt("cmps_plugins"),
109  $this->ctrl->getLinkTarget($this, "listPlugins")
110  );
111 
112  if (DEVMODE) {
113  $this->tabs_gui->addTab(
114  "slots",
115  $lng->txt("cmps_slots"),
116  $this->ctrl->getLinkTarget($this, "listSlots")
117  );
118  }
119  }
120 
121  if ($rbacsystem->checkAccess('edit_permission', $this->object->getRefId())) {
122  $this->tabs_gui->addTab(
123  "perm_settings",
124  $lng->txt("perm_settings"),
125  $this->ctrl->getLinkTargetByClass('ilpermissiongui', "perm")
126  );
127  }
128 
129  if ($_GET["ctype"] == "Services") {
130  $this->tabs_gui->activateTab("services");
131  }
132  }
133 
137  public function listSlots()
138  {
139  if (!DEVMODE) {
140  $this->ctrl->redirect($this, "listPlugins");
141  }
142 
143  $this->tabs_gui->activateTab('slots');
144 
145  include_once("./Services/Component/classes/class.ilComponentsTableGUI.php");
146  $comp_table = new ilComponentsTableGUI($this, "listSlots");
147 
148  $this->tpl->setContent($comp_table->getHTML());
149  }
150 
157  protected function listPlugins()
158  {
159  global $tpl, $ilTabs;
160 
161  $ilTabs->activateTab("plugins");
162  include_once("./Services/Component/classes/class.ilPluginsOverviewTableGUI.php");
163  $table = new ilPluginsOverviewTableGUI($this, "listPlugins");
164  $tpl->setContent($table->getHTML());
165  }
166 
170  protected function showPluginSlotInfo()
171  {
172  global $tpl,$lng, $ilTabs, $ilCtrl;
173 
174  if (!DEVMODE) {
175  $ilCtrl->redirect($this, "listPlugins");
176  }
177 
178  $ilTabs->clearTargets();
179 
180  $ilTabs->setBackTarget(
181  $lng->txt("cmps_slots"),
182  $ilCtrl->getLinkTarget($this, "listSlots")
183  );
184 
185  include_once("./Services/Component/classes/class.ilComponent.php");
186  $comp = ilComponent::getComponentObject($_GET["ctype"], $_GET["cname"]);
187 
188  include_once("Services/Form/classes/class.ilPropertyFormGUI.php");
189  $form = new ilPropertyFormGUI();
190 
191  // component
192  $ne = new ilNonEditableValueGUI($lng->txt("cmps_component"), "", true);
193  $ne->setValue($comp->getComponentType() . "/" . $comp->getName() . " [" . $comp->getId() . "]");
194  $form->addItem($ne);
195 
196  // plugin slot
197  $ne = new ilNonEditableValueGUI($lng->txt("cmps_plugin_slot"), "", true);
198  $ne->setValue($comp->getPluginSlotName($_GET["slot_id"]) . " [" . $_GET["slot_id"] . "]");
199  $form->addItem($ne);
200 
201  // main dir
202  $ne = new ilNonEditableValueGUI($lng->txt("cmps_main_dir"), "", true);
203  $ne->setValue($comp->getPluginSlotDirectory($_GET["slot_id"]) . "/&lt;Plugin_Name&gt;");
204  $form->addItem($ne);
205 
206  // plugin file
207  $ne = new ilNonEditableValueGUI($lng->txt("cmps_plugin_file"), "", true);
208  $ne->setValue("&lt;" . $lng->txt("cmps_main_dir") . "&gt;" .
209  "/classes/class.il&lt;Plugin_Name&gt;Plugin.php");
210  $form->addItem($ne);
211 
212  // language files
213  $ne = new ilNonEditableValueGUI($lng->txt("cmps_lang_files"), "", true);
214  $ne->setValue("&lt;" . $lng->txt("cmps_main_dir") . "&gt;" .
215  "/lang/ilias_&lt;Language ID&gt;.lang");
216  $form->addItem($ne);
217 
218  // db update
219  $ne = new ilNonEditableValueGUI($lng->txt("cmps_db_update"), "", true);
220  $ne->setValue("&lt;" . $lng->txt("cmps_main_dir") . "&gt;" .
221  "/sql/dbupdate.php");
222  $form->addItem($ne);
223 
224  // lang prefix
225  $ne = new ilNonEditableValueGUI($lng->txt("cmps_plugin_lang_prefixes"), "", true);
226  $ne->setValue($comp->getPluginSlotLanguagePrefix($_GET["slot_id"]) . "&lt;Plugin_ID&gt;_");
227  $form->addItem($ne);
228 
229  // db prefix
230  $ne = new ilNonEditableValueGUI($lng->txt("cmps_plugin_db_prefixes"), "", true);
231  $ne->setValue($comp->getPluginSlotLanguagePrefix($_GET["slot_id"]) . "&lt;Plugin_ID&gt;_");
232  $form->addItem($ne);
233 
234  $form->setTitle($lng->txt("cmps_plugin_slot"));
235 
236  // set content and title
237  $tpl->setContent($form->getHTML());
238  $tpl->setTitle($comp->getComponentType() . "/" . $comp->getName() . ": " .
239  $lng->txt("cmps_plugin_slot") . " \"" . $comp->getPluginSlotName($_GET["slot_id"]) . "\"");
240  $tpl->setDescription("");
241  }
242 
243  protected function showPlugin()
244  {
245  global $ilCtrl, $ilTabs, $lng, $tpl, $ilDB, $ilToolbar;
246 
247  if (!$_GET["ctype"] ||
248  !$_GET["cname"] ||
249  !$_GET["slot_id"] ||
250  !$_GET["plugin_id"]) {
251  $ilCtrl->redirect($this, "listPlugins");
252  }
253 
254  include_once("./Services/Component/classes/class.ilPluginSlot.php");
255  $slot = new ilPluginSlot($_GET["ctype"], $_GET["cname"], $_GET["slot_id"]);
256 
257  $plugin = null;
258  foreach ($slot->getPluginsInformation() as $item) {
259  if ($item["id"] == $_GET["plugin_id"]) {
260  $plugin = $item;
261  break;
262  }
263  }
264  if (!$plugin) {
265  $ilCtrl->redirect($this, "listPlugins");
266  }
267 
268  $ilTabs->clearTargets();
269  $ilTabs->setBackTarget(
270  $lng->txt("cmps_plugins"),
271  $ilCtrl->getLinkTarget($this, "listPlugins")
272  );
273 
274  $ilCtrl->setParameter($this, "ctype", $_GET["ctype"]);
275  $ilCtrl->setParameter($this, "cname", $_GET["cname"]);
276  $ilCtrl->setParameter($this, "slot_id", $_GET["slot_id"]);
277  $ilCtrl->setParameter($this, "plugin_id", $_GET["plugin_id"]);
278  $ilCtrl->setParameter($this, "pname", $plugin["name"]);
279 
280  $langs = ilPlugin::getAvailableLangFiles($slot->getPluginsDirectory() . "/" .
281  $plugin["name"] . "/lang");
282 
283  // dbupdate
285  $_GET["ctype"],
286  $_GET["cname"],
287  ilPluginSlot::lookupSlotName($_GET["ctype"], $_GET["cname"], $_GET["slot_id"]),
288  $plugin["name"]
289  );
290  $db_curr = $db_file = null;
291  if (@is_file($file)) {
292  include_once("./Services/Component/classes/class.ilPluginDBUpdate.php");
293  $dbupdate = new ilPluginDBUpdate(
294  $_GET["ctype"],
295  $_GET["cname"],
296  $_GET["slot_id"],
297  $plugin["name"],
298  $ilDB,
299  true,
300  ""
301  );
302 
303  $db_curr = $dbupdate->getCurrentVersion();
304  $db_file = $dbupdate->getFileVersion();
305  }
306 
307  // toolbar actions
308  if ($plugin["must_install"]) {
309  $ilToolbar->addButton(
310  $lng->txt("cmps_install"),
311  $ilCtrl->getLinkTarget($this, "installPlugin")
312  );
313  } else {
314  // configure button
315  if (ilPlugin::hasConfigureClass($slot->getPluginsDirectory(), $plugin["name"]) &&
316  $ilCtrl->checkTargetClass(ilPlugin::getConfigureClassName($plugin["name"]))) {
317  $ilToolbar->addButton(
318  $lng->txt("cmps_configure"),
319  $ilCtrl->getLinkTargetByClass(strtolower(ilPlugin::getConfigureClassName($plugin["name"])), "configure")
320  );
321  }
322  // refresh languages button
323  if (count($langs) > 0) {
324  $ilToolbar->addButton(
325  $lng->txt("cmps_refresh"),
326  $ilCtrl->getLinkTarget($this, "refreshLanguages")
327  );
328  }
329 
330  if ($plugin["activation_possible"]) {
331  $ilToolbar->addButton(
332  $lng->txt("cmps_activate"),
333  $ilCtrl->getLinkTarget($this, "activatePlugin")
334  );
335  }
336 
337  // deactivation/refresh languages button
338  if ($plugin["is_active"]) {
339  // deactivate button
340  $ilToolbar->addButton(
341  $lng->txt("cmps_deactivate"),
342  $ilCtrl->getLinkTarget($this, "deactivatePlugin")
343  );
344  }
345 
346  // update button
347  if ($plugin["needs_update"]) {
348  $ilToolbar->addButton(
349  $lng->txt("cmps_update"),
350  $ilCtrl->getLinkTarget($this, "updatePlugin")
351  );
352  }
353  }
354 
355  // info
356  $resp = array();
357  if (strlen($plugin["responsible"])) {
358  $responsibles = explode('/', $plugin["responsible_mail"]);
359  foreach ($responsibles as $responsible) {
360  if (!strlen($responsible = trim($responsible))) {
361  continue;
362  }
363 
364  $resp[] = $responsible;
365  }
366 
367  $resp = $plugin["responsible"] . " (" . implode(" / ", $resp) . ")";
368  }
369 
370  if ($plugin["is_active"]) {
371  $status = $lng->txt("cmps_active");
372  } else {
373  $r = ($plugin["inactive_reason"] != "")
374  ? " (" . $plugin["inactive_reason"] . ")"
375  : "";
376 
377  $status = $lng->txt("cmps_inactive") . $r;
378  }
379 
380  $info[""][$lng->txt("cmps_name")] = $plugin["name"];
381  $info[""][$lng->txt("cmps_id")] = $plugin["id"];
382  $info[""][$lng->txt("cmps_version")] = $plugin["version"];
383  if ($resp) {
384  $info[""][$lng->txt("cmps_responsible")] = $resp;
385  }
386  $info[""][$lng->txt("cmps_ilias_min_version")] = $plugin["ilias_min_version"];
387  $info[""][$lng->txt("cmps_ilias_max_version")] = $plugin["ilias_max_version"];
388  $info[""][$lng->txt("cmps_status")] = $status;
389 
390  if (sizeof($langs)) {
391  $lang_files = array();
392  foreach ($langs as $lang) {
393  $lang_files[] = $lang["file"];
394  }
395  $info[""][$lng->txt("cmps_languages")] = implode(", ", $lang_files);
396  } else {
397  $info[""][$lng->txt("cmps_languages")] = $lng->txt("cmps_no_language_file_available");
398  }
399 
400  $info[$lng->txt("cmps_basic_files")]["plugin.php"] = $plugin["plugin_php_file_status"] ?
401  $lng->txt("cmps_available") :
402  $lng->txt("cmps_missing");
403  $info[$lng->txt("cmps_basic_files")][$lng->txt("cmps_class_file")] = ($plugin["class_file_status"] ?
404  $lng->txt("cmps_available") :
405  $lng->txt("cmps_missing")) .
406  " (" . $plugin["class_file"] . ")";
407 
408  if (!$db_file) {
409  $info[$lng->txt("cmps_database")][$lng->txt("file")] = $lng->txt("cmps_no_db_update_file_available");
410  } else {
411  $info[$lng->txt("cmps_database")][$lng->txt("file")] = "dbupdate.php";
412  $info[$lng->txt("cmps_database")][$lng->txt("cmps_current_version")] = $db_curr;
413  $info[$lng->txt("cmps_database")][$lng->txt("cmps_file_version")] = $db_file;
414  }
415 
416  include_once("Services/Form/classes/class.ilPropertyFormGUI.php");
417  $form = new ilPropertyFormGUI();
418  $form->setTitle($lng->txt("cmps_plugin"));
419 
420  foreach ($info as $section => $items) {
421  if (trim($section)) {
422  $sec = new ilFormSectionHeaderGUI();
423  $sec->setTitle($section);
424  $form->addItem($sec);
425  }
426  foreach ($items as $key => $value) {
427  $non = new ilNonEditableValueGUI($key);
428  $non->setValue($value);
429  $form->addItem($non);
430  }
431  }
432 
433  $tpl->setContent($form->getHTML());
434  }
435 
441  protected function installPlugin()
442  {
443  include_once("./Services/Component/classes/class.ilPlugin.php");
445  $_GET["ctype"],
446  $_GET["cname"],
447  $_GET["slot_id"],
448  $_GET["pname"]
449  );
450 
451  $pl->install();
452  $this->update($pl);
453  }
454 
458  protected function activatePlugin()
459  {
460  global $ilCtrl, $lng;
461 
462  include_once("./Services/Component/classes/class.ilPlugin.php");
464  $_GET["ctype"],
465  $_GET["cname"],
466  $_GET["slot_id"],
467  $_GET["pname"]
468  );
469 
470  try {
471  $result = $pl->activate();
472  if ($result !== true) {
474  } else {
475  ilUtil::sendSuccess($lng->txt("cmps_plugin_activated"), true);
476  }
477  } catch (ilPluginException $e) {
478  ilUtil::sendFailure($e->getMessage, true);
479  }
480 
481  $ilCtrl->setParameter($this, "ctype", $_GET["ctype"]);
482  $ilCtrl->setParameter($this, "cname", $_GET["cname"]);
483  $ilCtrl->setParameter($this, "slot_id", $_GET["slot_id"]);
484 
485  if ($_GET["plugin_id"]) {
486  $ilCtrl->setParameter($this, "plugin_id", $_GET["plugin_id"]);
487  $ilCtrl->redirect($this, "showPlugin");
488  } else {
489  $ilCtrl->redirect($this, "listPlugins");
490  }
491  }
492 
496  protected function updatePlugin()
497  {
498  include_once("./Services/Component/classes/class.ilPlugin.php");
500  $_GET["ctype"],
501  $_GET["cname"],
502  $_GET["slot_id"],
503  $_GET["pname"]
504  );
505 
506  $this->update($pl);
507  }
508 
516  protected function update(ilPlugin $plugin)
517  {
518  $result = $plugin->update();
519 
520  if ($result !== true) {
521  ilUtil::sendFailure($plugin->message, true);
522  } else {
523  ilUtil::sendSuccess($plugin->message, true);
524  }
525 
526  // reinitialize control class
527  global $ilCtrl;
528  $ilCtrl->initBaseClass("iladministrationgui");
529  $_GET["cmd"] = "jumpToPluginSlot";
530  $ilCtrl->setParameterByClass("iladministrationgui", "ctype", $_GET["ctype"]);
531  $ilCtrl->setParameterByClass("iladministrationgui", "cname", $_GET["cname"]);
532  $ilCtrl->setParameterByClass("iladministrationgui", "slot_id", $_GET["slot_id"]);
533  $ilCtrl->setParameterByClass("iladministrationgui", "plugin_id", $_GET["plugin_id"]);
534  $ilCtrl->setTargetScript("ilias.php");
535  ilUtil::redirect("ilias.php?admin_mode=settings&baseClass=ilAdministrationGUI" .
536  "&cmd=jumpToPluginSlot&ref_id=" . $_GET["ref_id"] . "&ctype=" . $_GET["ctype"] .
537  "&cname=" . $_GET["cname"] . "&slot_id=" . $_GET["slot_id"] . "&plugin_id=" . $_GET["plugin_id"]);
538  }
539 
543  protected function deactivatePlugin()
544  {
545  global $ilCtrl, $lng;
546 
547  include_once("./Services/Component/classes/class.ilPlugin.php");
549  $_GET["ctype"],
550  $_GET["cname"],
551  $_GET["slot_id"],
552  $_GET["pname"]
553  );
554 
555  $result = $pl->deactivate();
556 
557  if ($result !== true) {
559  } else {
560  ilUtil::sendSuccess($lng->txt("cmps_plugin_deactivated"), true);
561  }
562 
563  $ilCtrl->setParameter($this, "ctype", $_GET["ctype"]);
564  $ilCtrl->setParameter($this, "cname", $_GET["cname"]);
565  $ilCtrl->setParameter($this, "slot_id", $_GET["slot_id"]);
566 
567  if ($_GET["plugin_id"]) {
568  $ilCtrl->setParameter($this, "plugin_id", $_GET["plugin_id"]);
569  $ilCtrl->redirect($this, "showPlugin");
570  } else {
571  $ilCtrl->redirect($this, "listPlugins");
572  }
573  }
574 
578  protected function refreshLanguages()
579  {
580  global $ilCtrl;
581 
582  include_once("./Services/Component/classes/class.ilPlugin.php");
584  $_GET["ctype"],
585  $_GET["cname"],
586  $_GET["slot_id"],
587  $_GET["pname"]
588  );
589 
590  $result = $pl->updateLanguages();
591 
592  if ($result !== true) {
594  }
595 
596  $ilCtrl->setParameter($this, "ctype", $_GET["ctype"]);
597  $ilCtrl->setParameter($this, "cname", $_GET["cname"]);
598  $ilCtrl->setParameter($this, "slot_id", $_GET["slot_id"]);
599 
600  if ($_GET["plugin_id"]) {
601  $ilCtrl->setParameter($this, "plugin_id", $_GET["plugin_id"]);
602  $ilCtrl->redirect($this, "showPlugin");
603  } else {
604  $ilCtrl->redirect($this, "listPlugins");
605  }
606  }
607 
608  protected function confirmUninstallPlugin()
609  {
610  global $ilCtrl, $tpl, $ilPluginAdmin;
611 
612  include_once("./Services/Component/classes/class.ilPlugin.php");
614  $_GET["ctype"],
615  $_GET["cname"],
616  $_GET["slot_id"],
617  $_GET["pname"]
618  );
619 
620  $pl_meta = $ilPluginAdmin->getAllData(
621  $_GET["ctype"],
622  $_GET["cname"],
623  $_GET["slot_id"],
624  $_GET["pname"]
625  );
626 
627  $activation = ((bool) $pl_meta["activation_possible"] || (bool) $pl_meta["is_active"]); // #18827
628  $reason = $pl_meta["inactive_reason"];
629 
630  $question = $activation
631  ? sprintf($this->lng->txt("cmps_uninstall_confirm"), $pl->getPluginName())
632  : sprintf($this->lng->txt("cmps_uninstall_inactive_confirm"), $pl->getPluginName(), $reason);
633 
634  $ilCtrl->setParameter($this, "ctype", $_GET["ctype"]);
635  $ilCtrl->setParameter($this, "cname", $_GET["cname"]);
636  $ilCtrl->setParameter($this, "slot_id", $_GET["slot_id"]);
637  $ilCtrl->setParameter($this, "pname", $_GET["pname"]);
638 
639  include_once("./Services/Utilities/classes/class.ilConfirmationGUI.php");
640  $confirmation_gui = new ilConfirmationGUI();
641  $confirmation_gui->setFormAction($ilCtrl->getFormAction($this));
642  $confirmation_gui->setHeaderText($question);
643  $confirmation_gui->setCancel($this->lng->txt("cancel"), "listPlugins");
644  $confirmation_gui->setConfirm($this->lng->txt("cmps_uninstall"), "uninstallPlugin");
645 
646  $tpl->setContent($confirmation_gui->getHTML());
647  }
648 
649  protected function uninstallPlugin()
650  {
651  global $ilCtrl;
652 
653  include_once("./Services/Component/classes/class.ilPlugin.php");
655  $_GET["ctype"],
656  $_GET["cname"],
657  $_GET["slot_id"],
658  $_GET["pname"]
659  );
660 
661  try {
662  $result = $pl->uninstall();
663  if ($result !== true) {
665  } else {
666  ilUtil::sendSuccess($this->lng->txt("cmps_plugin_uninstalled"), true);
667  }
668  } catch (ilPluginException $e) {
669  ilUtil::sendFailure($e->getMessage, true);
670  }
671 
672  $ilCtrl->setParameter($this, "ctype", $_GET["ctype"]);
673  $ilCtrl->setParameter($this, "cname", $_GET["cname"]);
674  $ilCtrl->setParameter($this, "slot_id", $_GET["slot_id"]);
675  $ilCtrl->redirect($this, "listPlugins");
676  }
677 }
static sendSuccess($a_info="", $a_keep=false)
Send Success Message to Screen.
static getComponentObject($a_ctype, $a_cname)
Get component object.
static getPluginObject($a_ctype, $a_cname, $a_slot_id, $a_pname)
Get plugin object.
__construct($a_data, $a_id, $a_call_by_reference=true, $a_prepare_output=true)
Contructor.
$result
This class represents a property form user interface.
$_GET["client_id"]
This class represents a section header in a property form.
update()
Update plugin.
Database Update class.
static lookupSlotName($a_ctype, $a_cname, $a_slot_id)
Lookup slot name for component and slot id.
static getConfigureClassName($a_name)
Get plugin configure class name.
showPluginSlotInfo()
Show information about a plugin slot.
global $ilCtrl
Definition: ilias.php:18
$section
Definition: Utf8Test.php:83
prepareOutput($a_show_subobjects=true)
prepare output
$r
Definition: example_031.php:79
if(isset($_POST['submit'])) $form
Plugin Slot.
update(ilPlugin $plugin)
Execute update and ctrl reload.
Class ilObjectGUI Basic methods of all Output classes.
static getPluginObject($a_ctype, $a_cname, $a_slot_id, $a_pname)
Get Plugin Object.
Create styles array
The data for the language used.
static sendFailure($a_info="", $a_keep=false)
Send Failure Message to Screen.
TableGUI class for components listing.
static getDBUpdateScriptName($a_ctype, $a_cname, $a_slot_name, $a_pname)
Get DB update script filename (full path)
This class represents a non editable value in a property form.
TableGUI class for components listing.
Components (Modules, Services, Plugins) Settings.
static hasConfigureClass($a_slot_dir, $a_name)
Has the plugin a configure class?
static getAvailableLangFiles($a_lang_directory)
Get array of all language files in the plugin.
global $ilDB
$ret
Definition: parser.php:6
New PermissionGUI (extends from old ilPermission2GUI) RBAC related output.
if(!file_exists("$old.txt")) if($old===$new) if(file_exists("$new.txt")) $file
if(empty($password)) $table
Definition: pwgen.php:24
$info
Definition: index.php:5
static redirect($a_script)
$key
Definition: croninfo.php:18
Confirmation screen class.