ILIAS  release_5-3 Revision v5.3.23-19-g915713cf615
class.ilComponent.php
Go to the documentation of this file.
1<?php
2/* Copyright (c) 1998-2009 ILIAS open source, Extended GPL, see docs/LICENSE */
3require_once('class.ilCachedComponentData.php');
4
5define("IL_COMP_MODULE", "Modules");
6define("IL_COMP_SERVICE", "Services");
7define("IL_COMP_PLUGIN", "Plugins");
8define("IL_COMP_SLOTS", "Slots");
9
23abstract class ilComponent
24{
40 abstract public function getVersion();
41
42 abstract public function isCore();
43
44 abstract public static function getComponentType();
45
51 abstract public function getName();
52
53
57 protected $global_cache;
58
59 public function __construct()
60 {
61 // global $ilDB;
62 $this->global_cache = ilCachedComponentData::getInstance();
63
64 $this->setId($this->global_cache->lookCompId($this->getComponentType(), $this->getName()));
66 $this->getComponentType(),
67 $this->getName()
68 ));
69
70//
71// echo '<pre>' . print_r($data, 1) . '</pre>';
72//
73//
74// $set = $ilDB->queryF("SELECT * FROM il_component WHERE type = %s ".
75// " AND name = %s", array("text", "text"),
76// array($this->getComponentType(), $this->getName()));
77// $rec = $ilDB->fetchAssoc($set);
78//
79// $this->setId($rec["id"]);
80// $this->setPluginSlots(ilComponent::lookupPluginSlots(
81// $this->getComponentType(), $this->getName()));
82 }
83
89 final public function setId($a_id)
90 {
91 $this->id = $a_id;
92 }
93
99 final public function getId()
100 {
101 return $this->id;
102 }
103
109 final public function setPluginSlots($a_pluginslots)
110 {
111 $this->pluginslots = $a_pluginslots;
112 }
113
119 final public function getPluginSlots()
120 {
121 return $this->pluginslots;
122 }
123
130 final public static function getComponentObject($a_ctype, $a_cname)
131 {
132 global $ilDB;
133
134 $set = $ilDB->queryF(
135 "SELECT * FROM il_component WHERE type = %s " .
136 " AND name = %s",
137 array("text", "text"),
138 array($a_ctype, $a_cname)
139 );
140 if (!$ilDB->fetchAssoc($set)) {
141 return null;
142 }
143
144 switch ($a_ctype) {
145 case IL_COMP_MODULE:
146 if (is_file("./Modules/" . $a_cname . "/classes/class.il" . $a_cname . "Module.php")) {
147 include_once("./Modules/" . $a_cname . "/classes/class.il" . $a_cname . "Module.php");
148 $class = "il" . $a_cname . "Module";
149 $comp = new $class();
150 return $comp;
151 }
152 break;
153
154 case IL_COMP_SERVICE:
155 if (is_file("./Services/" . $a_cname . "/classes/class.il" . $a_cname . "Service.php")) {
156 include_once("./Services/" . $a_cname . "/classes/class.il" . $a_cname . "Service.php");
157 $class = "il" . $a_cname . "Service";
158 $comp = new $class();
159 return $comp;
160 }
161 break;
162 }
163
164 return null;
165 }
166
172 public function setSubDirectory($a_subdirectory)
173 {
174 $this->subdirectory = $a_subdirectory;
175 }
176
182 public function getSubDirectory()
183 {
184 return $this->subdirectory;
185 }
186
190 public static function lookupPluginSlots($a_type, $a_name)
191 {
192 // global $ilDB;
193
194 $cached_component = ilCachedComponentData::getInstance();
195 $recs = $cached_component->lookupPluginSlotByComponent($a_type . "/" . $a_name);
196
197 //$set = $ilDB->query("SELECT * FROM il_pluginslot WHERE component = ".
198 // $ilDB->quote($a_type."/".$a_name, "text"));
199 $ps = array();
200 //echo "<br>".$a_type."/".$a_name;
201 //while($rec = $ilDB->fetchAssoc($set))
202 foreach ($recs as $rec) {
203 $rec["dir"] = "Customizing/global/plugins/" . $a_type . "/" . $a_name . "/" . $rec["name"];
204 $rec["dir_pres"] = "Customizing/global/plugins/<br />" . $a_type . "/" . $a_name . "/" . $rec["name"];
205 $rec["lang_prefix"] = ilComponent::lookupId($a_type, $a_name) . "_" . $rec["id"] . "_";
206 $ps[$rec["id"]] = $rec;
207 }
208 return $ps;
209 }
210
216 public function getPluginSlotName($a_id)
217 {
218 $slots = $this->getPluginSlots();
219
220 return $slots[$a_id]["name"];
221 }
222
228 public function getPluginSlotDirectory($a_id)
229 {
230 $slots = $this->getPluginSlots();
231
232 return "Customizing/global/plugins/" . $this->getComponentType() . "/" .
233 $this->getName() . "/" . $slots[$a_id]["name"];
234 }
235
241 public function getPluginSlotLanguagePrefix($a_id)
242 {
243 $slots = $this->getPluginSlots();
244 return $this->getId() . "_" . $slots[$a_id]["id"] . "_";
245 }
246
250 public static function lookupId($a_type, $a_name)
251 {
253
254 return $global_cache->lookCompId($a_type, $a_name);
255
256 //global $ilDB;
257
258 //$set = $ilDB->queryF("SELECT * FROM il_component WHERE type = %s ".
259 // " AND name = %s", array("text", "text"),
260 // array($a_type, $a_name));
261 //$rec = $ilDB->fetchAssoc($set);
262
263 //return $rec["id"];
264 }
265
272 public static function getComponentInfo($a_type, $a_name)
273 {
275
276 return $global_cache->lookupCompInfo($a_type, $a_name);
277 }
278
282 final public static function checkVersionNumber($a_ver)
283 {
284 global $lng;
285
286 $parts = explode(".", $a_ver);
287
288 if (count($parts) < 2 || count($parts) > 3) {
289 return "Version number does not conform to format a.b or a.b.c";
290 }
291
292 if (!is_numeric($parts[0]) || !is_numeric($parts[1])) {
293 return "Not all version number parts a.b or a.b.c are numeric.";
294 }
295
296 if (isset($parts[2]) && !is_numeric($parts[2])) {
297 return "Not all version number parts a.b.c are numeric.";
298 }
299
300 return $parts;
301 }
302
303 final public static function isVersionGreaterString($a_ver1, $a_ver2)
304 {
305 $a_arr1 = ilComponent::checkVersionNumber($a_ver1);
306 $a_arr2 = ilComponent::checkVersionNumber($a_ver2);
307
308 if (is_array($a_arr1) && is_array($a_arr2)) {
309 return ilComponent::isVersionGreater($a_ver1, $a_ver2);
310 } else {
311 return false;
312 }
313 }
314
320 final public static function isVersionGreater(string $version1, string $version2) : bool
321 {
322 return version_compare($version1, $version2, '>');
323 }
324
331 public static function lookupComponentName($a_component_id)
332 {
333 global $ilDB;
334
335 $query = 'SELECT name from il_component ' .
336 'WHERE id = ' . $ilDB->quote($a_component_id, 'text');
337
338 $res = $ilDB->query($query);
339 while ($row = $res->fetchRow(ilDBConstants::FETCHMODE_OBJECT)) {
340 return $row->name;
341 }
342 }
343
348 public static function getAll()
349 {
350 global $DIC;
351 $ilDB = $DIC->database();
352
353 $set = $ilDB->query("SELECT * FROM il_component");
354 $comps = [];
355 while ($rec = $ilDB->fetchAssoc($set)) {
356 $comps[$rec["id"]] = $rec;
357 }
358 return $comps;
359 }
360
361}
An exception for terminatinating execution or to throw for unit testing.
const IL_COMP_SERVICE
const IL_COMP_MODULE
static isVersionGreaterString($a_ver1, $a_ver2)
static checkVersionNumber($a_ver)
Check version number.
static lookupComponentName($a_component_id)
lookup component name @global type $ilDB
getPluginSlots()
Get Plugin Slots.
setPluginSlots($a_pluginslots)
Set Plugin Slots.
setSubDirectory($a_subdirectory)
Set Sub Directory.
getName()
Get Name.
setId($a_id)
Set Id.
getPluginSlotDirectory($a_id)
Get directory of plugin slot.
static getComponentInfo($a_type, $a_name)
static lookupId($a_type, $a_name)
Lookup ID of a component.
static getComponentType()
static getComponentObject($a_ctype, $a_cname)
Get component object.
getVersion()
Get Version Number of Component.
static lookupPluginSlots($a_type, $a_name)
Lookup all plugin slots of a component.
static isVersionGreater(string $version1, string $version2)
getPluginSlotName($a_id)
Get name of plugin slot.
getSubDirectory()
Get Sub Directory.
getPluginSlotLanguagePrefix($a_id)
Get language prefix for plugin slot.
static getAll()
Get all.
if(!array_key_exists('StateId', $_REQUEST)) $id
global $lng
Definition: privfeed.php:17
$query
global $DIC
Definition: saml.php:7
foreach($_POST as $key=> $value) $res
global $ilDB
$a_type
Definition: workflow.php:92