ILIAS  Release_4_4_x_branch Revision 61816
 All Data Structures Namespaces Files Functions Variables Groups Pages
class.ilPluginSlot.php
Go to the documentation of this file.
1 <?php
2 /* Copyright (c) 1998-2009 ILIAS open source, Extended GPL, see docs/LICENSE */
3 
4 
5 include_once("./Services/Component/classes/class.ilPlugin.php");
6 
20 {
21 
25  function __construct($a_c_type, $a_c_name, $a_slot_id)
26  {
27  $this->setComponentType($a_c_type);
28  $this->setComponentName($a_c_name);
29  $this->setSlotId($a_slot_id);
30 
31  if ($a_slot_id != "")
32  {
33  $this->read();
34  }
35  }
36 
40  function read()
41  {
42  global $ilDB;
43 
44  $q = "SELECT * FROM il_pluginslot WHERE component = ".
45  $ilDB->quote($this->getComponentType()."/".$this->getComponentName(), "text").
46  " AND id = ".$ilDB->quote($this->getSlotId(), "text");
47  $set = $ilDB->query($q);
48  $rec = $ilDB->fetchAssoc($set);
49  $this->setSlotName($rec["name"]);
50  }
51 
57  function setComponentType($a_componenttype)
58  {
59  $this->componenttype = $a_componenttype;
60  }
61 
67  function getComponentType()
68  {
69  return $this->componenttype;
70  }
71 
77  function setComponentName($a_componentname)
78  {
79  $this->componentname = $a_componentname;
80  }
81 
87  function getComponentName()
88  {
89  return $this->componentname;
90  }
91 
97  function setSlotId($a_slotid)
98  {
99  $this->slotid = $a_slotid;
100  }
101 
107  function getSlotId()
108  {
109  return $this->slotid;
110  }
111 
117  function setSlotName($a_slotname)
118  {
119  $this->slotname = $a_slotname;
120  }
121 
127  function getSlotName()
128  {
129  return $this->slotname;
130  }
131 
136  {
137  return "./Customizing/global/plugins/".$this->getComponentType().
138  "/".$this->getComponentName()."/".$this->getSlotName();
139  }
140 
144  function _getPluginsDirectory($a_ctype, $a_cname, $a_slot_id)
145  {
146  return "./Customizing/global/plugins/".$a_ctype.
147  "/".$a_cname."/".ilPluginSlot::lookupSlotName($a_ctype, $a_cname, $a_slot_id);
148  }
149 
150 
154  function getPluginPhpFileName($a_plugin_name)
155  {
156  return $this->getPluginsDirectory()."/".
157  $a_plugin_name."/plugin.php";
158  }
159 
163  function checkPluginPhpFileAvailability($a_plugin_name)
164  {
165  if (@is_file($this->getPluginPhpFileName($a_plugin_name)))
166  {
167  return true;
168  }
169 
170  return false;
171  }
172 
176  function getPluginClassFileName($a_plugin_name)
177  {
178  return $this->getPluginsDirectory()."/".
179  $a_plugin_name."/classes/class.il".$a_plugin_name."Plugin.php";
180  }
181 
185  function checkClassFileAvailability($a_plugin_name)
186  {
187  if (@is_file($this->getPluginClassFileName($a_plugin_name)))
188  {
189  return true;
190  }
191 
192  return false;
193  }
194 
199  function getPrefix()
200  {
201  if ($this->prefix == "")
202  {
203  $this->prefix =
205  $this->getComponentName())."_".$this->getSlotId();
206  }
207 
208  return $this->prefix;
209  }
210 
215  {
216  global $ilPluginAdmin;
217 
218  // read plugins directory
219  $pl_dir = $this->getPluginsDirectory();
220 
221  if (!@is_dir($pl_dir))
222  {
223  return array();
224  }
225 
226  $dir = opendir($pl_dir);
227 
228  $plugins = array();
229  while($file = readdir($dir))
230  {
231  if ($file != "." and
232  $file != "..")
233  {
234  // directories
235  if (@is_dir($pl_dir."/".$file) && substr($file, 0, 1) != "." &&
236  is_file($pl_dir."/".$file."/plugin.php"))
237  {
238 
239 
240  $plugin = array();
241 
242  $plugin = ilPlugin::lookupStoredData($this->getComponentType(),
243  $this->getComponentName(), $this->getSlotId(), $file);
244 
245  // create record in il_plugin table (if not existing)
247  $this->getComponentName(), $this->getSlotId(), $file);
248 
249  $pdata = $ilPluginAdmin->getAllData($this->getComponentType(),
250  $this->getComponentName(), $this->getSlotId(), $file);
251 
252  $plugin["version"] = $pdata["version"];
253  $plugin["id"] = $pdata["id"];
254  $plugin["is_active"] = $pdata["is_active"];
255  $plugin["inactive_reason"] = $pdata["inactive_reason"];
256  $plugin["needs_update"] = $pdata["needs_update"];
257  $plugin["ilias_min_version"] = $pdata["ilias_min_version"];
258  $plugin["ilias_max_version"] = $pdata["ilias_max_version"];
259  $plugin["activation_possible"] = $pdata["activation_possible"];
260  $plugin["responsible"] = $pdata["responsible"];
261  $plugin["responsible_mail"] = $pdata["responsible_mail"];
262 
263  $plugin["name"] = $file;
264  $plugin["plugin_php_file_status"] = $this->checkPluginPhpFileAvailability($file);
265  $plugin["class_file_status"] = $this->checkClassFileAvailability($file);
266  $plugin["class_file"] = "class.il".$plugin["name"]."Plugin.php";
267 
268  $plugins[] = $plugin;
269  }
270  }
271  }
272 
273  return $plugins;
274  }
275 
279  static function lookupSlotId($a_ctype, $a_cname, $a_slot_name)
280  {
281  global $ilDB;
282 
283  $q = "SELECT * FROM il_pluginslot WHERE component = ".
284  $ilDB->quote($a_ctype."/".$a_cname, "text").
285  " AND name = ".$ilDB->quote($a_slot_name, "text");
286  $set = $ilDB->query($q);
287  $rec = $ilDB->fetchAssoc($set);
288  return $rec["id"];
289  }
290 
294  static function lookupSlotName($a_ctype, $a_cname, $a_slot_id)
295  {
296  global $ilDB;
297 
298  $q = "SELECT * FROM il_pluginslot WHERE component = ".
299  $ilDB->quote($a_ctype."/".$a_cname, "text").
300  " AND id = ".$ilDB->quote($a_slot_id, "text");
301  $set = $ilDB->query($q);
302  $rec = $ilDB->fetchAssoc($set);
303  return $rec["name"];
304  }
305 
309  function getActivePlugins()
310  {
311  global $ilPluginAdmin;
312 
313  return $ilPluginAdmin->getActivePluginsForSlot($this->getComponentType(),
314  $this->getComponentName(), $this->getSlotId());
315  }
316 
317 
321  static function getAllSlots()
322  {
323  global $ilDB;
324 
325  $set = $ilDB->query("SELECT * FROM il_pluginslot ");
326  $slots = array();
327  while ($rec = $ilDB->fetchAssoc($set))
328  {
329  $pos = strpos($rec["component"], "/");
330  $slots[] = array(
331  "component_type" => substr($rec["component"], 0, $pos),
332  "component_name" => substr($rec["component"], $pos + 1),
333  "slot_id" => $rec["id"],
334  "slot_name" => $rec["name"]
335  );
336  }
337 
338  return $slots;
339  }
340 
341 }
342 ?>