6 include_once(
"./Services/Component/classes/class.ilComponent.php");
40 $this->lng->loadLanguageModule(
"cmps");
51 final private function getPluginData($a_ctype, $a_cname, $a_slot_id, $a_pname)
57 if (!isset($this->got_data[$a_ctype][$a_cname][$a_slot_id][$a_pname])) {
58 include_once
"./Services/Component/classes/class.ilPluginSlot.php";
61 $plugin_php_file =
"./Customizing/global/plugins/" . $a_ctype .
"/" .
62 $a_cname .
"/" . $slot_name .
"/" . $a_pname .
"/plugin.php";
64 if (!is_file($plugin_php_file)) {
65 throw new ilPluginException(
"No plugin.php file found for Plugin :" . $a_pname .
".");
71 if ($plugin_db_data[
"plugin_id"] === null) {
76 $this->
updateRequired($plugin_data, $plugin_db_data[
"last_update_version"]);
80 $this->
data[$a_ctype][$a_cname][$a_slot_id][$a_pname] = $plugin_data;
81 $this->got_data[$a_ctype][$a_cname][$a_slot_id][$a_pname] =
true;
95 $plugin_data[
"is_active"] =
false;
96 $plugin_data[
"needs_update"] =
false;
97 $plugin_data[
"activation_possible"] =
false;
99 if (is_object($this->lng)) {
100 $inactive_reason = $this->lng->txt(
"cmps_needs_newer_ilias_version");
102 $inactive_reason =
"Plugin needs a newer version of ILIAS.";
104 $plugin_data[
"inactive_reason"] = $inactive_reason;
110 $plugin_data[
"is_active"] =
false;
111 $plugin_data[
"needs_update"] =
false;
112 $plugin_data[
"activation_possible"] =
false;
113 if (is_object($this->lng)) {
114 $inactive_reason = $this->lng->txt(
"cmps_needs_newer_plugin_version");
116 $inactive_reason =
"Plugin does not support current version of ILIAS. Newer version of plugin needed.";
118 $plugin_data[
"inactive_reason"] = $inactive_reason;
136 if ($last_update_version ==
"") {
137 $plugin_data[
"is_active"] =
false;
138 if (is_object($this->lng)) {
139 $inactive_reason = $this->lng->txt(
"cmps_needs_update");
141 $inactive_reason =
"Update needed.";
143 $plugin_data[
"inactive_reason"] = $inactive_reason;
144 $plugin_data[
"needs_update"] =
true;
145 $plugin_data[
"activation_possible"] =
false;
147 $plugin_data[
"is_active"] =
false;
148 if (is_object($this->lng)) {
149 $inactive_reason = $this->lng->txt(
"cmps_needs_upgrade");
151 $inactive_reason =
"Upgrade needed.";
153 $plugin_data[
"inactive_reason"] = $inactive_reason;
154 $plugin_data[
"activation_possible"] =
false;
155 } elseif ($last_update_version != $plugin_data[
"version"]) {
156 $plugin_data[
"is_active"] =
false;
157 if (is_object($this->lng)) {
158 $inactive_reason = $this->lng->txt(
"cmps_needs_update");
160 $inactive_reason =
"Update needed.";
162 $plugin_data[
"inactive_reason"] = $inactive_reason;
163 $plugin_data[
"needs_update"] =
true;
164 $plugin_data[
"activation_possible"] =
false;
177 $plugin_data[
"must_install"] =
true;
178 $plugin_data[
"is_active"] =
false;
179 $plugin_data[
"needs_update"] =
false;
180 $plugin_data[
"activation_possible"] =
false;
182 if (is_object($this->lng)) {
183 $inactive_reason = $this->lng->txt(
"cmps_must_installed");
185 $inactive_reason =
"Plugin must be installed.";
187 $plugin_data[
"inactive_reason"] = $inactive_reason;
202 $plugin_data[
"is_active"] = $active;
203 $plugin_data[
"activation_possible"] = !$active;
204 $plugin_data[
"must_install"] =
false;
205 $plugin_data[
"needs_update"] =
false;
206 $plugin_data[
"inactive_reason"] =
"";
218 include_once($plugin_php_file);
223 "ilias_min_version" => $ilias_min_version,
224 "ilias_max_version" => $ilias_max_version,
225 "responsible" => $responsible,
226 "responsible_mail" => $responsible_mail,
227 "learning_progress" => (bool) $learning_progress,
228 "supports_export" => (
bool) $supports_export
242 public function getVersion($a_ctype, $a_cname, $a_slot_id, $a_pname)
244 $this->
getPluginData($a_ctype, $a_cname, $a_slot_id, $a_pname);
245 return $this->
data[$a_ctype][$a_cname][$a_slot_id][$a_pname][
"version"];
258 $this->
getPluginData($a_ctype, $a_cname, $a_slot_id, $a_pname);
259 return $this->
data[$a_ctype][$a_cname][$a_slot_id][$a_pname][
"ilias_min_version"];
272 $this->
getPluginData($a_ctype, $a_cname, $a_slot_id, $a_pname);
273 return $this->
data[$a_ctype][$a_cname][$a_slot_id][$a_pname][
"ilias_max_version"];
284 public function getId($a_ctype, $a_cname, $a_slot_id, $a_pname)
286 $this->
getPluginData($a_ctype, $a_cname, $a_slot_id, $a_pname);
287 return $this->
data[$a_ctype][$a_cname][$a_slot_id][$a_pname][
"id"];
298 public function isActive($a_ctype, $a_cname, $a_slot_id, $a_pname)
301 $this->
getPluginData($a_ctype, $a_cname, $a_slot_id, $a_pname);
305 return $this->
data[$a_ctype][$a_cname][$a_slot_id][$a_pname][
"is_active"];
316 public function exists($a_ctype, $a_cname, $a_slot_id, $a_pname)
318 $this->
getPluginData($a_ctype, $a_cname, $a_slot_id, $a_pname);
319 return isset($this->
data[$a_ctype][$a_cname][$a_slot_id][$a_pname]);
330 public function needsUpdate($a_ctype, $a_cname, $a_slot_id, $a_pname)
332 $this->
getPluginData($a_ctype, $a_cname, $a_slot_id, $a_pname);
333 return $this->
data[$a_ctype][$a_cname][$a_slot_id][$a_pname][
"needs_update"];
344 public function getAllData($a_ctype, $a_cname, $a_slot_id, $a_pname)
346 $this->
getPluginData($a_ctype, $a_cname, $a_slot_id, $a_pname);
347 return $this->
data[$a_ctype][$a_cname][$a_slot_id][$a_pname];
356 if (!isset(self::$active_plugins[$a_ctype][$a_cname][$a_slot_id])) {
357 include_once
"./Services/Component/classes/class.ilPlugin.php";
359 self::$active_plugins[$a_ctype][$a_cname][$a_slot_id] =
362 return self::$active_plugins[$a_ctype][$a_cname][$a_slot_id];
377 if (!isset(self::$plugin_objects[$a_ctype][$a_cname][$a_slot_id][$a_pname])) {
378 self::$plugin_objects[$a_ctype][$a_cname][$a_slot_id][$a_pname] =
381 return self::$plugin_objects[$a_ctype][$a_cname][$a_slot_id][$a_pname];
401 if (!isset(self::$plugin_objects[$a_ctype][$a_cname][$a_slot_id][$a_pname])) {
402 self::$plugin_objects[$a_ctype][$a_cname][$a_slot_id][$a_pname] =
405 $pl = self::$plugin_objects[$a_ctype][$a_cname][$a_slot_id][$a_pname];
406 $pl->includeClass($a_class_file_name);
420 $this->
getPluginData($a_ctype, $a_cname, $a_slot_id, $a_pname);
421 return $this->
data[$a_ctype][$a_cname][$a_slot_id][$a_pname][
"learning_progress"];
435 $this->
getPluginData($a_ctype, $a_cname, $a_slot_id, $a_pname);
436 return $this->
data[$a_ctype][$a_cname][$a_slot_id][$a_pname][
"supports_export"];
447 return $cached_component->getIlPluginById();
458 $plugins = $cached_component->getIlPluginActive();
460 foreach ($plugins as $slot => $plugs) {
461 $buf = array_merge($buf, $plugs);
474 assert(
'is_string($id)');
476 $plugs = $cached_component->getIlPluginById();
477 if (array_key_exists(
$id, $plugs) && $plugs[
$id][
'active']) {
492 assert(
'is_string($id)');
493 $plugs = self::getAllPlugins();
494 if (!array_key_exists(
$id, $plugs)) {
495 throw new \InvalidArgumentException(
"Plugin does not exist: " .
$id, 1);
497 $pdata = $plugs[
$id];
498 return self::getPluginObject(
499 $pdata[
'component_type'],
500 $pdata[
'component_name'],
static getPluginObject($a_ctype, $a_cname, $a_slot_id, $a_pname)
Get plugin object.
getVersion($a_ctype, $a_cname, $a_slot_id, $a_pname)
Get version of plugin.
const ILIAS_VERSION_NUMERIC
static isVersionGreaterString($a_ver1, $a_ver2)
isActive($a_ctype, $a_cname, $a_slot_id, $a_pname)
Checks whether plugin is active (include version checks)
static getActivePluginsForSlot($a_ctype, $a_cname, $a_slot_id)
Get all active plugins for a slot.
static isPluginActive($id)
Check, if a plugin is active.
getIliasMaxVersion($a_ctype, $a_cname, $a_slot_id, $a_pname)
Get Ilias Max Version.
parsePluginPhp($plugin_php_file)
Get informations from plugin php file.
setMustInstall(array &$plugin_data)
Set plugin data for intall.
if(!array_key_exists('StateId', $_REQUEST)) $id
static getActivePluginsForSlot($a_ctype, $a_cname, $a_slot_id)
Get all active plugin names for a slot.
static lookupSlotName($a_ctype, $a_cname, $a_slot_id)
Lookup slot name for component and slot id.
needsUpdate($a_ctype, $a_cname, $a_slot_id, $a_pname)
Get version.
static includeClass( $a_ctype, $a_cname, $a_slot_id, $a_pname, $a_class_file_name)
Get Plugin Object.
static getActivePlugins()
Get info for all active plugins.
exists($a_ctype, $a_cname, $a_slot_id, $a_pname)
Checks whether plugin exists.
pluginSupportCurrentILIAS(array &$plugin_data)
Plugin supports current ILIAS.
getAllData($a_ctype, $a_cname, $a_slot_id, $a_pname)
Get all data from file in an array.
supportsExport($a_ctype, $a_cname, $a_slot_id, $a_pname)
Checks whether plugin supports export/import.
static getPluginRecord($a_ctype, $a_cname, $a_slot_id, $a_pname)
Get record from il_plugin table.
getPluginData($a_ctype, $a_cname, $a_slot_id, $a_pname)
Get basic data of plugin from plugin.php.
Administration class for plugins.
updateRequired(array &$plugin_data, $last_update_version)
Should the plugin be updated.
static getPluginObject($a_ctype, $a_cname, $a_slot_id, $a_pname)
Get Plugin Object.
static getAllPlugins()
Get info for all plugins.
hasLearningProgress($a_ctype, $a_cname, $a_slot_id, $a_pname)
Checks whether plugin has active learning progress.
Create styles array
The data for the language used.
static getPluginObjectById($id)
Get a plugin-object by id.
getIliasMinVersion($a_ctype, $a_cname, $a_slot_id, $a_pname)
Get Ilias Min Version.
getId($a_ctype, $a_cname, $a_slot_id, $a_pname)
Get ID.
setCurrentState(array &$plugin_data, $active)
Set current state to static values, excluding active and activatoin possible.