ILIAS  release_5-3 Revision v5.3.23-19-g915713cf615
All Data Structures Namespaces Files Functions Variables Typedefs Modules Pages
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 */
3 require_once('class.ilCachedComponentData.php');
4 
5 define("IL_COMP_MODULE", "Modules");
6 define("IL_COMP_SERVICE", "Services");
7 define("IL_COMP_PLUGIN", "Plugins");
8 define("IL_COMP_SLOTS", "Slots");
9 
23 abstract 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 }
static getComponentObject($a_ctype, $a_cname)
Get component object.
getVersion()
Get Version Number of Component.
getPluginSlots()
Get Plugin Slots.
static lookupId($a_type, $a_name)
Lookup ID of a component.
setPluginSlots($a_pluginslots)
Set Plugin Slots.
static isVersionGreaterString($a_ver1, $a_ver2)
global $DIC
Definition: saml.php:7
if(!array_key_exists('StateId', $_REQUEST)) $id
setId($a_id)
Set Id.
getSubDirectory()
Get Sub Directory.
static getComponentType()
setSubDirectory($a_subdirectory)
Set Sub Directory.
$a_type
Definition: workflow.php:92
static lookupComponentName($a_component_id)
lookup component name type $ilDB
foreach($_POST as $key=> $value) $res
getName()
Get Name.
static checkVersionNumber($a_ver)
Check version number.
static isVersionGreater(string $version1, string $version2)
const IL_COMP_MODULE
getPluginSlotLanguagePrefix($a_id)
Get language prefix for plugin slot.
getPluginSlotDirectory($a_id)
Get directory of plugin slot.
$query
Create styles array
The data for the language used.
static getAll()
Get all.
global $lng
Definition: privfeed.php:17
global $ilDB
const IL_COMP_SERVICE
getPluginSlotName($a_id)
Get name of plugin slot.
static lookupPluginSlots($a_type, $a_name)
Lookup all plugin slots of a component.
static getComponentInfo($a_type, $a_name)