/** * Process plugin data for table row * * @param strng $a_type * @param ilPluginSlot $a_slot * @param string $a_slot_subdir * @param array $a_plugin * @return array */ protected function gatherPluginData($a_type, ilPluginSlot $a_slot, $a_slot_subdir, array $a_plugin) { global $ilCtrl; $conf = false; if (ilPlugin::hasConfigureClass($a_slot->getPluginsDirectory(), $a_plugin["name"]) && $ilCtrl->checkTargetClass(ilPlugin::getConfigureClassName($a_plugin["name"]))) { $conf = true; } return array("slot_name" => $a_slot->getSlotName(), "component_type" => $a_type, "component_name" => $a_slot_subdir, "slot_id" => $a_slot->getSlotId(), "plugin_id" => $a_plugin["id"], "plugin_name" => $a_plugin["name"], "plugin_active" => $a_plugin["is_active"], "activation_possible" => $a_plugin["activation_possible"], "needs_update" => $a_plugin["needs_update"], "has_conf" => $conf, "has_lang" => (bool) sizeof(ilPlugin::getAvailableLangFiles($a_slot->getPluginsDirectory() . "/" . $a_plugin["name"] . "/lang"))); }
function showPlugin() { global $ilCtrl, $ilTabs, $lng, $tpl, $ilDB, $ilToolbar; if (!$_GET["ctype"] || !$_GET["cname"] || !$_GET["slot_id"] || !$_GET["plugin_id"]) { $ilCtrl->redirect($this, "listPlugins"); } include_once "./Services/Component/classes/class.ilPluginSlot.php"; $slot = new ilPluginSlot($_GET["ctype"], $_GET["cname"], $_GET["slot_id"]); $plugin = null; foreach ($slot->getPluginsInformation() as $item) { if ($item["id"] == $_GET["plugin_id"]) { $plugin = $item; break; } } if (!$plugin) { $ilCtrl->redirect($this, "listPlugins"); } $ilTabs->clearTargets(); $ilTabs->setBackTarget($lng->txt("cmps_plugins"), $ilCtrl->getLinkTarget($this, "listPlugins")); $ilCtrl->setParameter($this, "ctype", $_GET["ctype"]); $ilCtrl->setParameter($this, "cname", $_GET["cname"]); $ilCtrl->setParameter($this, "slot_id", $_GET["slot_id"]); $ilCtrl->setParameter($this, "plugin_id", $_GET["plugin_id"]); $ilCtrl->setParameter($this, "pname", $plugin["name"]); $langs = ilPlugin::getAvailableLangFiles($slot->getPluginsDirectory() . "/" . $plugin["name"] . "/lang"); // dbupdate $file = ilPlugin::getDBUpdateScriptName($_GET["ctype"], $_GET["cname"], ilPluginSlot::lookupSlotName($_GET["ctype"], $_GET["cname"], $_GET["slot_id"]), $plugin["name"]); $db_curr = $db_file = null; if (@is_file($file)) { include_once "./Services/Component/classes/class.ilPluginDBUpdate.php"; $dbupdate = new ilPluginDBUpdate($_GET["ctype"], $_GET["cname"], $_GET["slot_id"], $plugin["name"], $ilDB, true, ""); $db_curr = $dbupdate->getCurrentVersion(); $db_file = $dbupdate->getFileVersion(); /* update command if ($db_file > $db_curr) { $ilToolbar->addButton($lng->txt("cmps_update_db"), $ilCtrl->getLinkTarget($this, "updatePluginDB")); } */ } // toolbar actions if ($plugin["activation_possible"]) { $ilToolbar->addButton($lng->txt("cmps_activate"), $ilCtrl->getLinkTarget($this, "activatePlugin")); } // deactivation/refresh languages button if ($plugin["is_active"]) { // refresh languages button if (count($langs) > 0) { $ilToolbar->addButton($lng->txt("cmps_refresh"), $ilCtrl->getLinkTarget($this, "refreshLanguages")); } // configure button if (ilPlugin::hasConfigureClass($slot->getPluginsDirectory(), $plugin["name"]) && $ilCtrl->checkTargetClass(ilPlugin::getConfigureClassName($plugin["name"]))) { $ilToolbar->addButton($lng->txt("cmps_configure"), $ilCtrl->getLinkTargetByClass(strtolower(ilPlugin::getConfigureClassName($plugin["name"])), "configure")); } // deactivate button $ilToolbar->addButton($lng->txt("cmps_deactivate"), $ilCtrl->getLinkTarget($this, "deactivatePlugin")); } // update button if ($plugin["needs_update"]) { $ilToolbar->addButton($lng->txt("cmps_update"), $ilCtrl->getLinkTarget($this, "updatePlugin")); } // info $resp = array(); if (strlen($plugin["responsible"])) { $responsibles = explode('/', $plugin["responsible_mail"]); foreach ($responsibles as $responsible) { if (!strlen($responsible = trim($responsible))) { continue; } $resp[] = $responsible; } $resp = $plugin["responsible"] . " (" . implode(" / ", $resp) . ")"; } if ($plugin["is_active"]) { $status = $lng->txt("cmps_active"); } else { $r = $status["inactive_reason"] != "" ? " (" . $status["inactive_reason"] . ")" : ""; $status = $lng->txt("cmps_inactive") . $r; } $info[""][$lng->txt("cmps_name")] = $plugin["name"]; $info[""][$lng->txt("cmps_id")] = $plugin["id"]; $info[""][$lng->txt("cmps_version")] = $plugin["version"]; if ($resp) { $info[""][$lng->txt("cmps_responsible")] = $resp; } $info[""][$lng->txt("cmps_ilias_min_version")] = $plugin["ilias_min_version"]; $info[""][$lng->txt("cmps_ilias_max_version")] = $plugin["ilias_max_version"]; $info[""][$lng->txt("cmps_status")] = $status; if (sizeof($langs)) { $lang_files = array(); foreach ($langs as $lang) { $lang_files[] = $lang["file"]; } $info[""][$lng->txt("cmps_languages")] = implode(", ", $lang_files); } else { $info[""][$lng->txt("cmps_languages")] = $lng->txt("cmps_no_language_file_available"); } $info[$lng->txt("cmps_basic_files")]["plugin.php"] = $plugin["plugin_php_file_status"] ? $lng->txt("cmps_available") : $lng->txt("cmps_missing"); $info[$lng->txt("cmps_basic_files")][$lng->txt("cmps_class_file")] = ($plugin["class_file_status"] ? $lng->txt("cmps_available") : $lng->txt("cmps_missing")) . " (" . $plugin["class_file"] . ")"; if (!$db_file) { $info[$lng->txt("cmps_database")][$lng->txt("file")] = $lng->txt("cmps_no_db_update_file_available"); } else { $info[$lng->txt("cmps_database")][$lng->txt("file")] = "dbupdate.php"; $info[$lng->txt("cmps_database")][$lng->txt("cmps_current_version")] = $db_curr; $info[$lng->txt("cmps_database")][$lng->txt("cmps_file_version")] = $db_file; } include_once "Services/Form/classes/class.ilPropertyFormGUI.php"; $form = new ilPropertyFormGUI(); $form->setTitle($lng->txt("cmps_plugin")); foreach ($info as $section => $items) { if (trim($section)) { $sec = new ilFormSectionHeaderGUI(); $sec->setTitle($section); $form->addItem($sec); } foreach ($items as $key => $value) { $non = new ilNonEditableValueGUI($key); $non->setValue($value); $form->addItem($non); } } $tpl->setContent($form->getHTML()); }